Every new product requires a certain amount of development before that product provides the value needed to generate revenues. Startups must endure the period of time between the initial idea phase and when implementing that idea results in enough revenues to sustain operations. Unless the startup has been fortunate to raise enough capital to support the founders and early employees; resources can be extremely limited during this transition. Resource constraints drive decisions on what can be reasonably done now and what must wait until later.
Very few startups have enough capital to implement everything on their ‘To Do’ list. They don’t have enough engineers to build every planned feature for the first release. They don’t do enough testing to be sure it won’t fail under stressful conditions. Documentation, customer support, and marketing must ‘make do’ on very limited budgets. In other words, shortcuts must be taken.
Whenever there is more to do than time, money, and other resources can support; priorities must effect which parts of a project get attention. Successful startups are the ones who focus on the most important things and just get the lesser important things up to the bare minimum. This strategy will certainly generate criticism from customers who encounter problems or those who will struggle to understand the documentation, but often the survival of the company is at stake.
My own Didgets project is no exception. Like nearly every founder, I have had to wear many ‘hats’ during the development of the platform. Ideas had to be turned into an elegant design. Features had to be implemented. Tests had to be written and run. Bugs needed to be fixed. Documentation needed to be written and constantly updated. Attention needed to be given to sales and marketing. New customers and beta sites needed support.
While all of these areas need at least some attention; some are much more fun to work on than others. It is very easy for a startup founder to focus exclusively on the more enjoyable aspects of the project/business and ignore other tasks that; while sometimes boring and tedious; are critical for success. To help ensure that nothing was neglected for too long; I devised a system for how to divide my work. I identified six key areas that I needed to work on.
New feature development
Test and/or benchmark existing features
Fix bugs and optimize existing code
Write user documentation, newsletters, and white papers
Market and sell the product to potential customers
Support existing customers and solicit feedback
Each day I worked on the project, I would focus on just one of the areas. To use a random method, I would roll a single die to determine which one.
Testing is one area that needs additional attention. When I first started the project, I wrote a set of unit tests that would test each functional area. The browser application was still in its infancy so I could not rely on it much for testing. As the browser became much more useful, I would use it more and more to ad-hoc test new features. The unit tests were used less and less and I failed to write new ones as I developed.
I am now paying for that neglect. Someone wants to integrate my code into their project. The test program is a great way to introduce another programmer to your API and show them how to use the underlying platform. Because almost none of the latest features were integrated into the test program; I now have to update it. What should have been just a week long project if I had kept it reasonably up-to-date; is instead taking a month or more. When something is neglected for too long, there is a price to pay to get everything back into shape.
Test-Driven Development (TDD) is a great way to develop code. If your startup has plenty of resources, then that is a great way to develop a project. It catches problems early. It lets you know if you broke something. It forces you to think about how a third party will use your code. Unfortunately, when a startup has very limited resources, failure to write good tests are often where one of the shortcuts are made.
Update: The Didgets YouTube channel has some new demo videos and a new ‘handle’. You can access it now with https://www.youtube.com/@DidgetsDemos
Here is the latest video: