Software development topics I've changed my mind on after 6 years in the industry
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, that went poorly!") and not some god awful 'agile' / 'scum master' driven waste of everyone's time
- Software architecture probably matters 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 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 is rarely a good call
- Talking directly to the customer always reveals more about the problem, in less time, and with higher accuracy
- The word "scalable" has a mystical and stupefying power over the mind of the software engineer. Its mere utterance can whip them into a depraved frenzy. Grim actions have been justified using this word
- Despite being called "engineers," most decision are pure cargo-cult with no backing analysis, data, or numbers
- 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: interviewing is thoroughly broken. I also have no idea how to actually make it better.
Old opinions unchanged:
- 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
- TDD purists are just the worst. Their frail little minds can't process the existence of different workflows.
We'll see which of these have flipped or changed at year 10.