Last week was a good week for the team. We’ve been trying to nail down a bunch of feature design work for the next release and it’s been dragging and dragging for weeks now. I don’t say this to fault the team at all – things got disrupted over the holidays, some of it just needed to be mulled over for a while, and I’ve been behind myself. This past week the log jam broke and we managed to get designs written and reviewed for a bunch of features. By Friday evening I felt like we had some open water again, even if we’re not quite done yet.
There is a sometimes nauseating abundance of argument in the technical community about which programming language, library, techniques, or tools to use but every day I care less about a dogmatic approach to any of those things. When I step back and look at the real work that’s going on to turn a corner like this, the programming is the smallest part of it.
The majority of what’s going on is really the raw thought involved in deciding how we can get from a problem to a solution. And not just any solution, but the right solution that balances the use cases we’re trying to support, effects on other existing features, impacts on the existing code base, impacts on the feasibility of future features, interactions with other features currently under work, and basic effort. That thought takes place on a whole different plane than those religious arguments.
Which is not to say that I’m not interested in those arguments or that I don’t have my own set of beliefs of course. It’s just that sometimes it surprises me how I can do real work for days at a time helping to figure this stuff out without ever needing to think once about all these surprisingly unimportant questions.