I’m a little over a week into my web app experiment. The thing that I’ve found the most striking is the rate at which you can add useful functionality to the system, which is both inspiring and fraught with peril simultaneously.
When you’re working on cellular base stations, it takes a while to add a new feature to the system, even with the software-intensive approach at Vanu. When you do finally get something finished, many times the only evidence of success is the before/after difference in plots and graphs of system performance numbers. On the other hand, it’s taken me less than a week to get a prototype web app to the point where I could start eating my own dog food, and most of the features and functionality that I’ve wanted to add so far have taken less than 30 minutes to implement.
Now, I’m aware that this is all a function of scope and complexity. Cellular base stations are inherently complex beasts with a ton of moving parts and not nearly the same level of open source framework support (although you can buy a bunch of commercial telecom libraries for protocol stacks, if you can afford it), so you’re starting out almost completely from scratch and you’ve got a lot further to go to get to something that actually works. Don’t get me wrong, there’s immense satisfaction in getting a large, complex system built and working. But, after years of only working on large, complex systems, I’d forgotten the simple joy of going from idea to usability in one or two sittings, which is seriously invigorating.
The downside is that I’m making progress so quickly that it’s tempting to jump ahead to the next thing rather than taking care of the maintenance aspects around each new bit of functionality. Even though it’s just a prototype, I’m trying to use it as a way to keep practicing good development habits, but it takes some serious discipline to go back and fill in some docs and add unit and functional tests (I guess this is always true, but it’s even worse on a purely personal project).
I think that wherever I land next I’d like it to be someplace with a bit of the development instant gratification feel to it. Perhaps a daily taste of success is too much to ask for, but I’d settle for something in the weekly to monthly range. When you start going longer than that without seeing any tangible results of your work, can you really stay excited about what you’re working on?