Principles of a Software Engineer
My principles related to my profession.
-
Primary technical imperative: Managing Complexity
- Complexity causes:
- harder communication between team members, which leads to deficiencies in the product, increased costs, and delayed schedule.
- difficulty in list and understand all possible states of a program, which causes lack of confidence.
- difficulty to evolve the software without creating side effects.
- unnoticed states, which leads to security vulnerabilities
- Complexity causes:
-
I want the reading of code to be easy, even if it makes the writing harder.
- We read code much more than we write.
- In order to write code we need to read code (evidence that easy to read is priority over writing AND easier to read means easier to write)
- I want my code to be a quick skim, not an intense study.