10 Principles of Successful Software Engineering
- Never, ever design against the requirements. Always design against an abstraction of the requirements.
- Never decompose a system based on a flowchart, this is the worst possible way to design a system. Always decompose based on areas of change (volatilities), evaluating what will change over time and what will change across users.
- Document your architecture using simple boxes and lines in Power Point. Use the IDesign MethodTM taxonomy to document your architecture
- Identify your dependency tree, find your critical path, and always assign engineering resources according to the critical path first
- Calculate the cost, schedule, and risk of your system, produce options to meet business objectives
- Scaffold the entire solution with all modules in your architecture before development starts (i.e. use a solution template)
- Perform detailed design on each module in your system iteratively and assign implementation tasks according to the critical path
- Construct the system using a service-oriented approach with SOLID principles and an interface-based programming model
- Maintain a Zero Tolerance for Defects mentality throughout the project and use the Spiral of Tests approach to earn quality
- Base milestones on integration points (or vertical slices) and not features
Learn how to put these 10 principles into action and reap the benefits on all future software projects. Contact us today!
“Ah, but a man’s reach should exceed his grasp, Or what’s a heaven for?” – Robert Browning