Inspired by Jan Stette's "Things I Believe" post, I decided to write down some of the more contentious beliefs I have about software engineering. I've selected some of my more extreme opinions here, so I expect reasonable people to disagree with me. That's ok.
- Writing non-trivial software that is correct (for any meaningful definition of correct) is beyond the current capabilities of the human species.
- Being aligned with teammates on what you're building is more important than building the right thing.
- There are many fundamental discoveries in computer science that are yet to be found.
- Peak productivity for most software engineers happens closer to 2 hours a day of work than 8 hours.
- Most measures of success are almost entirely uncorrelated with merit.
- Thinking about things is a massively valuable and underutilized skill. Most people are trained to not apply this skill.
- The fact that current testing practices are considered "effective" is an indictment of the incredibly low standards of the software industry.
- How kind your teammates are has a larger impact on your effectiveness than the programming language you use.
- The amount of sleep that you get has a larger impact on your effectiveness than the programming language you use.
I've omitted explanations of why I believe these things, mostly so that I could get this post out the door at all - each one of these could easily be it's own blog post. Think about them for a bit, and possibly you'll find them compelling :)