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 :)