Reflections on 9 years of software development

You, web development
Back

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

  1. Blindly following generic and so-called expert advice without context is dangerous.
  2. Scripting languages are not so bad after all.
  3. Simple is not easy. Programmer's job is to build simple systems, unfortunately, a lot of programmer talks about how to build systems easily.
  4. 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.
  5. Clever code is bad code.
  6. Standups are a good idea.
  7. Written communication >> verbal communication.
  8. A programmer's ability to write bad code has nothing to do with the technology stack.
  9. 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.

  1. Adding more features is not going to make your customer happier.
  2. Not knowing is OK. Not knowing, what you don't know is dangerous.
  3. States are the source of all evil in programming. Stateless >> stateful.
  4. Monolith vs micro-service is a function of team size, not code size.
  5. Optimization without measurement is like playing dart in dark.
  6. Unit tests are the best form of documentation.
  7. SW Architecture is the most important part of writing code. Bad code is reversible, bad architecture is not.
  8. Code formatter is a damn good idea. The readability of code is very important.
  9. Code review if done sincerely is more difficult than writing code.
  10. Availability of talent is an important consideration for choosing a technology stack.
  11. 10X engineer is not just about code. It's also about dev env, debug tools, documentation, test, communication, process.

Opinions unchanged overtime

  1. YAGNI, SOLID, KISS in that order.
  2. Ability to communicate is very important for programmers.
  3. 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