Reflections on 9 years of software development
In the last 9 years, I programmed in C, Assembly, C#, Python, Java, Perl, Dart. Developed firmware, mobile frontend, and backend.
Now, that we have set some credentials, let's move to the actual article.
Things I changed my mind on
These are things that I believe now, but did not believe when I started professional programming
- Blindly following generic and so-called expert advice without context is dangerous.
- Scripting languages are not so bad after all.
- Simple is not easy. Programmer's job is to build simple systems, unfortunately, a lot of programmer talks about how to build systems easily.
- Stackoverflow is evil. It is creating a generation of programmers who know the what without knowing why. These programmers cannot reason about the code they wrote. The ability to reason about code is a prerequisite to change them.
- Clever code is bad code.
- Standups are a good idea.
- Written communication >> verbal communication.
- A programmer's ability to write bad code has nothing to do with the technology stack.
- More code is almost always a bad idea. No code is the best code. Code is a liability.
Things I learned over time
These are things that I did not bother about when I started professional programming.
- Adding more features is not going to make your customer happier.
- Not knowing is OK. Not knowing, what you don't know is dangerous.
- States are the source of all evil in programming. Stateless >> stateful.
- Monolith vs micro-service is a function of team size, not code size.
- Optimization without measurement is like playing dart in dark.
- Unit tests are the best form of documentation.
- SW Architecture is the most important part of writing code. Bad code is reversible, bad architecture is not.
- Code formatter is a damn good idea. The readability of code is very important.
- Code review if done sincerely is more difficult than writing code.
- Availability of talent is an important consideration for choosing a technology stack.
- 10X engineer is not just about code. It's also about dev env, debug tools, documentation, test, communication, process.
Opinions unchanged overtime
- YAGNI, SOLID, KISS in that order.
- Ability to communicate is very important for programmers.
- Product ideas can come from anyone.
Let's see what sticks and what changes again in 5 years. Till then happy coding.
© Ravinder Singh Mahori.RSS