Software Product Development Principles
All software products are a result of hundreds or thousands of small decisions made by a group of people overtime. Not everything can be captured in Product Requirement Documents (PRDs) and Jira (a project management tool) tickets for the engineers to make these small decisions. Furthermore, with remote and globalized workforces, it has become increasingly important that all engineers operate with the same set of principles to create a good product. Over the years, I found the following principles to be helpful:
1. Build trust with the users
For example, if you are releasing an update, ensure that it does not disrupt customer operations.
2. Let fresh eyes verify the code before release (peer code review)
Framework, culture, and tooling are needed to support this principle.
3. Everything that could change with time should be implemented as a configurable parameter (high configurability)
Over-configurability can lead to increased complexity.
4. Speed does not mean lower quality for the user- implement fewer features with quality rather than more features with low quality.
Adopt a system for feature prioritization and quality assurance.
5. Understand how the code fits into the big picture (integration testing)
Critical for CI/CD development framework.
6. Document what can go wrong (understand risks and have a mitigation plan)
For example, have rollback plans if software update fails.
7. Ensure code does not lower the data integrity of the system
Adopt data validation techniques.
8. Understand the “why” behind the requirement (user empathy)
Get a clear idea of what problem is user trying to solve.
9. Simplify
Increases speed, reduces bugs, and lowers maintenance costs.
10. Frequent small deliverables are better than infrequent large deliverables
This is the main idea behind Agile development.
11. Write release notes that both frequent and infrequent users of the product can understand
Follow the same template every time.
Having principles is not enough. To build good software products, we must embody these principles daily, ensuring they guide our actions and decisions at every step.