Software Engineering In Concert with Business
The laws of business success
In business, product development is the complete process of bringing a new product or platform to market. For ANY product to be successful (profitable) the product released must meet the following criteria:
1. Solve an existing problem or provide a value added service
2. Appropriate cost to develop, maintain and release to the sale price of the product
3. Create the product to be adaptable to changing markets
4. Supersede competitors in quality and feature sets
The above laws in business will make or break a company regardless of size or stature. Software products are no exception.
Why am I stating the obvious? Well…
In the software product development world, engineering teams often looses focus on the business market they are chained to. Engineering teams intellectualize problems and looses sight of the end goals and objectives, and quality suffers.
Engineering teams are filled with intelligent individuals however the decisions made by engineering teams are often times made to highlight individual intellectual superiority, placate existing staff [keep people happy] and appeal to developer creativity instead of driving the product development forward.
Because of this mindset… projects take longer than expected and are faced with self inflicted technical challenges that must be overcome. Rush engineering efforts become the norm and quality and polish suffer due to the rush development efforts.. Once marketed the software product must be revised in emergency mode to address urgent customer concerns. and thus a vicious cycle is born.
Identifying Engineering Costs
“The business MUST appropriate the costs involved in developing, maintaining, and releasing a product to the sale price of the product.”
Why is this important? If there is no monetary and timeline budget on how much a product will cost to create, update, or release then how can the business set a sale price for the product and become profitable?
1. Business operational expenditures (Employee base salaries, benefits, bonuses etc.)
2. Amount of money engineering spends on a release or development initiative [calculated in man hours]
3. Operational expenditures to make the product available to customers and support it [server costs, support costs]
- If a product takes 8 years to develop and is obsolete when it comes to market who will buy it?
- If a product comes to market too quickly and is defect ridden will it survive the court of public opinion?
- If a product costs 3000$ in man hour development costs [employee salary divided into hourly rate] and an additional 500$ a year per customer to maintain [plus support costs per hour] how can the business justify a sale price of 200$?
Tips for a Successful Product Launch
To help mitigate the risk of the above disasters it is important for the engineering group to:
1. Create a solid project estimate with budgeting for time and money in development efforts and Ops (if needed)
2. Avoid creating false flag engineering hurdles (dont invent problems to solve)
3. Re-use existing engineering solutions where possible (If a library already exists… USE IT)
4. Enforce a disciplined approach to software development (Well formatted code, code comments, automated tests, a well formed branching / merging plan etc.)
5. Automate everywhere possible from the beginning (If its done more than once… automate it)
6. Implement Continuous Integration from the start
7. Hold developers accountable for quality and craftsmanship
8. Follow best practices for your given platform.