Skip to content

Instantly share code, notes, and snippets.

@ongmin
Last active March 18, 2021 14:03
Show Gist options
  • Save ongmin/e480873cbcd29a4726bac4604db722f3 to your computer and use it in GitHub Desktop.
Save ongmin/e480873cbcd29a4726bac4604db722f3 to your computer and use it in GitHub Desktop.
Engineer's Min(d)set

Engineer's Mindset

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

  1. What is the problem?
  2. What is its symptom?
  3. What could cause these symptoms?
  4. How can I tell?
  5. How can I tell when I am wrong?

Read More Goal of Good Developer Mindset

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment