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.
draft
The real cost of coding is in the reading (99 Bottles of OOP)
It doesn't matter if you code is to be handled by a human or AI agent, the more verbose it is, the more expensive it is.