Software development topics I've changed my mind on after 6 years in the industry

Published: 2021-01-23

Things I've changed my mind on:

Things I now believe, which past me would've squabbled with:

  • Typed languages are better when you're working on a team of people with various experience levels
  • Standups are actually useful for keeping an eye on the newbies.
  • Sprint retrospectives have their place so long as they're for actual course correction (i.e. "holy shit, well that went poorly!") and not some god awful 'agile' / 'scum master' driven waste of everyone's time
  • Devs shouldn't be isolated or left to just code. Bypassing TPMs, PMs, and talking directly to the customer always reveals more about the problem, in less time, and with higher accuracy
  • Software architecture matters probably more than anything else. A shitty implementation of a good abstraction causes no net harm to the code base. A bad abstraction or missing layer causes everything to rot.
  • Java isn't that terrible of a language.
  • clever code isn't usually good code. Clarity trumps all other concerns.
  • Bad code can be written in any paradigm
  • So called "best practices" are contextual and not broadly applicable. Blindly following them makes you an idiot
  • Designing scalable systems when you don't need to makes you a bad engineer.
  • Static analysis is actually useful
  • DRY is about avoiding a specific problem, not an end goal unto itself.
  • In general, RDBMS > NoSql
  • Functional programming is another tool, not a panacea.

Opinions I've picked up along the way

  • YAGNI, SOLID, DRY. In that order.
  • Pencil and paper are the best programming tools and vastly under used
  • Trading purity in exchange for practicality is usually a good call
  • Adding more technology in response to a minor problem is rarely a good call.
  • Design is driven from requirements. Building anything beyond those requirements puts you into the world of speculative, self-indulgent invention.
  • 90%, maybe 93%, of project managers, could probably disappear tomorrow to either no effect or a net gain in efficiency.
  • After performing over 100 interviews, I can say that interviewing is thoroughly broken. I also have no idea how to actually make it better.

Things I have not changed my opinion on:

  • People who stress over code style, linting rules, or other minutia are insane weirdos
  • Code coverage has absolutely nothing to do with code quality
  • Monoliths are pretty good in most circumstances
  • Micro-services require justification

We'll see which of these have flipped at year 10.