rewrite Dev Journal: How Progress Doesn’t Feel

Learning in a new ecosystem doesn’t always feel like progress—but it is.

October 26, 2019Filed under Tech#productivity#rewrite#rewrite dev journal#software developmentMarkdown source

Assumed Audience: practitioners or interested lookers-on for software development—especially indies.

Today, I had about 3½ hours dedicated to working on rewrite and I did make progress… but it sure didn’t feel like it.

For the past month or so, I’ve been sidelined from working on the project by way of getting very sick and then being swamped with travel for a conference followed by a friend’s wedding. I resolved, however, to get some things done today. I enjoyed that sense of momentum I had in those first couple weeks I was working, and I want it back.

Today’s work, however… felt exceedingly unproductive. It wasn’t. I was learning. Specifically, I was learning how Swift Packages and the Swift Package Manager (SPM) work, how they work with Xcode, and what they can and cannot do. In general, learning like this is necessary and valuable, and this specific knowledge domain is particularly necessary and valuable for me. For one thing, the details of how I’m building the app will make this very applicable very quickly. (More on that in a future update.) For another, because I work best when I have a good understanding of how the whole system works together.

The net of it, though, was that I came out with a good idea of how to use Swift Packages… and zero new lines of code written for the app itself. I may yet make a little progress this evening after my little girls are in bed, but the big takeaway for me today was the need to remind myself that learning is a form of progress. You might think that I, academically-minded and hyper-nerdy fellow that I am, would find that easy to remember. It turns out, though, that it isn’t easy to remember in the context of the desire to actually ship something!

I hope this dev journal entry serves as an encouragement to others doing development work. There’s value in these days. They’re not failures. They’re an integral part of the way you get to the day when you actually ship.

I know this because I’ve been here before. There was a time when I had no idea how I was going to ship that PHP app and I spent whole afternoons figuring out something about SVN—afternoons that did not feel like part of shipping, but which ultimately led me to recover from accidentally deleting my entire codebase. There was a time when I had no idea how a JavaScript “single page application” (SPA) could actually work, and spent multiple afternoons reading about API-driven applications—afternoons which did not feel productive, but ultimately led to the point where I’m in a technical leadership role on one of the biggest SPAs in the world. So I can say fairly confidently that however unproductive this afternoon’s work loading up an accurate understanding of SPM will yield dividends. And sooner than it feels like today!