I’m baaaack
Sorry I’ve been out of touch. The exigencies of life with a college student (read: tuition) required that I take on some consulting work for a client I won’t name. It was challenging for a variety of reasons. I met some very interesting people in an area I haven’t worked in for a while (embedded systems). The work was well-suited to my skills, but the development environment was pretty much a mess. Despite a large team, they hadn’t allocated any software engineers to the problem of maintaining the development environment, so there was a tremendous amount of friction in the development process. It took 6 hours to get a fresh checkout and working build, and 13 minutes to build and test a minor change to the code.
I’ve been used to coding in Python on a PC, where the time from change to test is only a second or two. Even when I was working in C++ on Cosmic Blobs, the time from change to test was less than a minute for simple edits.
It changes everything. It’s almost back to the days of programming with punch cards. In order to be efficient, you have to make all your edits in one big bunch, then build and test them all together. This means that you have to make changes more carefully, which slows things down, and makes it more likely that you’ll include bugs that would be caught in a tighter-turnaround environment. It makes refactoring hard.
If you’re building software, spend the energy to get the tooling and build systems right. Allocate time to the problem. That product I was working on is going to be buggier, slower, and significantly more costly than it has to be.