What to Try When You’ve Tried Everything Else

Developing custom software is tough. There are numerous unknowns and tradeoffs at every stage of a project—each with unique short-, medium-, and long-term consequences in several dimensions. As a consultant, my job is to help people navigate those complex tradeoffs, and to build an app that will help my clients do what they do better, faster, and cheaper.

As a developer, my job is to implement those tradeoffs with code that remains flexible and easy to change. I need to focus on the kind of flexibility that my client is likely to need—without spending time and budget building in the kind of flexibility that they’ll never use. If my software is a jacket, the trick is sewing in just the right amount of pockets, and not one more.

The constant tension of the competing tradeoffs in a software project can lead to some nasty bouts of internal conflict and indecision. If I’m not careful, that indecision can lead to wasted time and effort that don’t provide value. Here are a couple of ways that I break through to find a solution when I’m not sure what to do next. Read more on What to Try When You’ve Tried Everything Else…

My Git Branching Strategy – Graph Gardening

If you've ever worked on a team with more than a couple of people, you've probably been involved in a discussion about branching strategies. Git-flow, GitHub-flow, Microsoft-flow, and many others all try to minimize disruption and conflict when making changes to a large codebase.

Recently, I've been playing with a new strategy that may help your team avoid time-expensive merge conflicts and maximize commit history readability for easier diagnostics later on. I call it graph gardening. Read more on My Git Branching Strategy – Graph Gardening…

Simulate Network Outages in Your App with Little Snitch

Modern development tools are super-convenient. XCode’s more recent builds let you debug an iOS app over WiFi, so you don’t have to succumb to the indignity of plugging in a Lightning cable (so 2017). React Native’s tooling goes a step farther, giving you the ability to run the native part of the app on a mobile device and execute the JavaScript side part of the app in a web browser on your development machine (where the JS inspection tools are more convenient). Networked debugging is amazing.

But sometimes, you need to test your app’s response to network outages. Read more on Simulate Network Outages in Your App with Little Snitch…

How Many Sprints Does it Take to Change a Lightbulb?

I haven’t touched a light switch in weeks. Over the past few months, I’ve been rolling out a smart light network throughout my house. To successfully complete the project, I followed a simple Agile process that we use all the time at Atomic to help clients navigate large software projects with lots of stakeholders. If you’re thinking about starting a software project, or you just want to play around with home automation, here’s what you’ll want to do. Read more on How Many Sprints Does it Take to Change a Lightbulb?…

Three Pitfalls of React Native Development (and How to Leap Over Them)

React Native is one of the best things to happen in the cross-platform mobile app development scene since the WebView. I can’t get enough of it. My current project (an iOS and Android application built with React Native and a heavily customized UI) would have taken at least twice as long to build as a cross-platform Xamarin app, and twice again as long to build as two independent native apps. It provides an incredible speed boost and brings native app development way closer to the sub-second write/refresh/results loop that web developers have enjoyed for years.

Read more on Three Pitfalls of React Native Development (and How to Leap Over Them)…

Five Build Commands to Make Project Onboarding Faster & Easier

New team members shouldn’t have to spend their time probing the subtle differences between their MacBook and yours while reading a lovingly worded project_treatise.md. They should be able to jump in and run the project in 10 minutes, flat.

So next time you start a new project, try writing your Makefile before you write the Readme. You’ll spend a bit more time upfront building automation, but it will pay off when collaborators join you. Here are five commands that I add to every project to make joining up fast and painless. Read more on Five Build Commands to Make Project Onboarding Faster & Easier…

Four Reasons Your Mobile App Needs a Web Back End

Building a modern mobile application can be an intimidating prospect. From establishing trademarks to choosing the right technology approach to planning your marketing campaign, there’s a lot to keep in mind.

One thing that’s easy to overlook is the web back end, but it’s essential to powering many of the experiences that customers expect from a top-tier application.
Read more on Four Reasons Your Mobile App Needs a Web Back End…

You’re Not the Only Imposter at the Office: 6 Strategies for Dealing with Imposter Syndrome at Work

Do you ever get the feeling that you don’t have any business doing the job that you do? That everyone else knows exactly what to say, while you trip over your words like a toddler in clown shoes? Yeah. Me too.

I work at one of the most prestigious software consultancies in Michigan, building multi-platform applications that are in active use by people who seem pretty happy. We have a rigorous interview process. But most days, I feel like the hiring team must’ve been asleep on the job when they let me in. Read more on You’re Not the Only Imposter at the Office: 6 Strategies for Dealing with Imposter Syndrome at Work…