It’s difficult when you have a new project, a port/rewrite, or working on a major new feature for a project to stay on track and on course. More often than not developers tend to get side tracked during development on things that, at the time, seem super important and vital to the success of the project but in retrospect you could have spent your time better.
There are ton’s of things during the course of development where a case could be made that you ‘have to handle them right now!’, for example technical debt, bugs and styling. If you handle those now, it’ll keep the cost low, make for less code changes, less testing in the future, etc, etc, etc.
I’m not denying that’s the case, but when you’ve got to get features in front of customers where should you spend your time and effort?
I realize this about myself as well. I know I can be like a dog with a bone when something comes up or I trip over a potential performance issue, technical debt, UI, etc. I’ve now started asking myself these questions:
1.) Will a customer see or interact with what I’m working on in the next release?
2.) Does what I’m working on have a direct positive impact on the customer in the next release?
3.) If what I’m working on wasn’t in the next release would the customer notice or care?
4.) Do I have to justify my answers to any of the above questions to my team members?
Using those questions I try and keep myself on track especially around crunch time. What I’m working on should have the most, positive, impact on my customers. I also use these questions to help prioritize tasks, I’m going to start working on the highest impact, most important task or feature first. This gives me the ‘best bang for my buck/time’ in terms of work and my customer.
An old manager and good friend of my used to ask if what we were doing was a “Science Experiment” a nice way of asking all 4 of those questions in two words. There is a time and place for science experiments, I do them all the time, but there equally is a time and place where you shouldn’t be tacking technical debt, working on a unified styling framework to rule them all or conducting science experiments.
We should always strive to put out the best product we can to our customers, but that only works if there are compelling features for them to use. Having the prefect architecture, prefect UI and no bugs or technical debt is only amazing if there are customers using your product.
Resgrid is a SaaS product utilizing Microsoft Azure, providing logistics, management and communication tools to first responder organizations like volunteer fire departments, career fire departments, EMS, search and rescue, CERT, public safety, disaster relief organizations, etc. It was founded in late 2012 by myself and Jason Jarrett (staxmanade).