What is an an Engineering Mindset?
- Values
- Attitudes
- Thinking skills
Shows up as:
- Focus on Solving Problems
- Focuses on Learning
- How you Collaborate
- How resilient are you
- How do you manage change
1. Goal of Software: Help People
Remember: the purpose of the software is not to show off how intelligent you are Question: How we can help?
2. Goal of Software Design: Be easy for you and helpful for others
To design systems that can be created and maintained as easily as possible by their developers, so that they can be - and continue to be - as helpful as possible
3. Simplicity
Simplicity is the ultimate sophistication
4. Avoiding Unnecessary Complexity
Controlling Complexity is the essence of computer programming
- Know your software purpose and its definition
- Be as simple as possible in every piece of code you write
- When a new feature or change request comes to discussion, evaluate them based on your software purpose and question them
- First behaviour is to be resistent to (unncessary) change
- When convinced then implement it.
5. Maintenance
It is more important to reduce the effort of maintenance than it is to reduce the effort of implementation
6. Consistency
If you do something one way in one place, do it that way in every place
7. Stop Reinventing
- Don't reinvent the wheel if it exists
8. Automate
- Don't spend time on repetitive tasks
- If you can automate, automate
9. Testing
- Add logging in the very early stage
- Untested code is code that does not work
10. Estimation
- Everything takes longer than you think
11. Evident Code
- Code should be obvious
- Commenting should only explain "Why", not "What"
- Important to document software's architecture and every module and component
- Required to see the high-level picture of your software
12. Reduce Dependencies
- Do not depend on external technologies if you can help it
- They are another layer of complexity
13. Always be learning
14. Know when to ask for help
Software Developers focus on:
- Building and maintaining trust and transparency within the team
- Maximising the team's collective potential
- Changing and taking advantage of new opportunities
- Experimenting and 'learning-by-doing'
Q: How do you know what you are building is needed by the customers and the market? 🤔
Troubleshooting
- What is the problem?
- What is its symptom?
- What could cause these symptoms?
- How can I tell?
- How can I tell when I am wrong?
Read More Goal of Good Developer Mindset