When you are a tech company you can find yourself caught between two points of view. One focused on the customers and revenue generation that is required for your business to profit. The other comes from the great minds that you have hired to develop your company’s project. It can become very difficult to keep the development team and your business goals on the same page.
In my experience I have found to get things done right you have to combine all interested parties in the process to design and complete the final product. All of the teams in the company whether their department is marketing, sales, customer service, founders, managers of all levels, or an investor are in the same boat with one destination. Give their customers a product that they want and will pay for.
Most projects begin life as an idea the founders got by paying close attention to a problem. They may even identify a segment to go after with their solution immediately. In the beginning things are fairly simple, this may not mean easy. After you have begun to gather the data required to refine your idea and improve it with a continuous process. You will find that many people from your investors, development team and executives will have many ideas. From your developers you may see ideas on how to stream-line the interface. Others will offer you their opinion based on their experience with the project. Above all you need to be taking in the ideas that will matter to your customers. They will provide your teams with valuable information. (E.g. Marketing)
I really believe that prioritization is the key for any business to be successful. Deciding which feature will be developed first, which one will generate the most interest from your customers and which ones might not. Making these decisions is made easier by once you gather the all-important metrics that show your apps usage. This information will help you understand your target market.
A common mistake that entrepreneurs make is doing too many things at once. The purpose of prioritization and planning is to provide a roadmap to maximize your resources. Breaking down your project into small parts allows you to better control the development process. It will also provide the roadmap for step-by-step improvements of each iteration. Using the Agile methodology and the sprint system you will be able to deploy a new version even if all of the planned features are not ready to be integrated for release. During the sprint planning meeting you can alter your priorities if needed to allow for change also deciding whether a feature should be in the next version release or not.
A good developer sticks to the roadmap and only the roadmap. You can often see developers to take time to develop features that they think would be a good idea. The often justify it by saying “This will not affect the schedule.” As I mentioned earlier that developers are a great source of ideas but any idea they have should be shared with management through the ideas sandbox. The ideas sandbox is where every idea placed not matter who they come from. Managers should on a regular basis review and make a decision about if any of the ideas move toward development.
Releasing and Fixing Bugs
To put it simply there are generally two lists of tasks during development.
- Critical Bug Fixes
- Minor Bugs and Features
Hopefully developers are spending most of their time on the latter and not the former. Every time a critical bug is corrected it generates work for the quality assurance team and the production team.
In a startup context this causes two issues that need to be addressed.
- As you spend time fixing bugs and deploying the fix as fast as possible the development team spends more time fixing, testing and then deploying. This hinders their ability to work on new features.
- Developers also in a hurry to deploy and get back to the main tasks deploys without thorough quality checks.
Behind the versioning of the product you have the source code repository with dedicated branches. The point here is that at any time you should be able to deploy or redeploy an older or newer version with a single click on a single command line. I have found that many startups are over spending on time and resources managing deployment. If there is a single script that needs to be completed first that is the one for deployment. This will also simplify testing as you can easily deploy on test environments.
If you want a great product you should have a well-defined process for doing quality assurance in addition to the current development practices and guidelines.
There are many tests companies can perform to validate software before putting it in production. In start-ups I recommend delegating the process through a simple word document with screenshots. There are many services that allow you to contract staff for this process. These contractors can run through the critical phases of this process and give the feedback for the next version. Here is a previous article on this topic http://outoftech.com/software-testing-to-improve-quality/.
The Entire Process
Here is the process that many companies use for development. These are the principles that I have simplified and found useful from ITIL,CMMI and agile methodologies. Most of these are well-known in the development community.