Years ago, as a guest on a podcast, I was asked: “what’s an unpopular opinion you have?” I don’t remember what my reply was, but I distinctly remember how much I struggled to come up with an answer: running through my mind in a panic, looking into every last corner of memory, shouting to myself “come on, let’s go! where are they?! the unpopular opinions! you have them! let’s go, let’s hear ’em! you like pineapple on pizza, what else? come on!”
Ever since then, whenever the term unpopular opinion was mentioned: panic. But then, six months ago, I told myself that this is it. You want unpopular opinions? Oh you get unpopular opinions. I created a note called “Unpopular Opinions” on my phone and added a line every time something popped into my head that might fit.
What follows is a a dump of thoughts, of unpopular opinions, that only makes sense as a dump. (A fish stew.) Take the dump apart and it’s throwaway thoughts. Don’t take them too seriously. Except the ones I hid in there on purpose.
Building a great business is not the same as building great software and vice versa.
People still underestimate how much Google has been cargo-culted. Especially when it comes to management.
Wireless is a scam, except headphones on the go.
Two-factor authentication is dumb. It frustrates me every time I have to pull out my phone after having pasted a 32 random-character password from my password manager.
There should be such a thing as a walker’s license and its possession should be a requirement for entering airports and train stations. Some people can’t walk.
“Correctness”, “type systems”, “memory safety” – they don’t matter as much as you think they do. Worlds have been built on “unsafe” & not-proven-correct – don’t mistake optimizations for requirements.
Not every company is for everybody.
As a lover of tests and TDD, by now I have to admit: I don’t think there’s a correlation between how many tests a codebase has and the quality of the product.
If you take an exit on highway, only start slowing down once you’re on the exit lane.
When people say “use whatever works for you” they set the bar for “works” much too low. Sometimes you have to spend more than one day on something to get something to work for you and that’s okay.
Related: we do junior engineers a disservice by saying “just use whatever works for you.”
Educators underestimate how important “coolness” is in learning resources.
Programmers must switch ecosystems at least once or twice in their career to gain truly “senior” experience. We’d all be better off if every JavaScript developer would work with Go for a year and then come back, every TypeScript developer with Ruby, every Ruby developer with Rust, and so on.
“I already had pizza yesterday” is an invalid argument. You can always have pizza.
People should switch companies – not every 2 years but probably more than once in 10 years. Every switch gives you a new perspective on everything that came before and everything that will come.
“Feedback is a gift” as a blanket statement should be used less. There’s a ton of nonsensical feedback that’s not actionable, given by people who have no clue. Actionable feedback is a gift.
Opinions are overrated. Taste is underrated.
Don’t be the person who says “I have strong opinions” because I promise you: everybody rolls their eyes when you say it. Be the “I build things” person instead.
A lot of discourse around programming languages and tooling and frameworks boils down to “you can’t do it like this.” Then someone goes and does it. “You can’t climb up the mountain in your jeans and without oxygen, you can’t” and then someone goes and does it and it’s fine. See Go, see JavaScript.
People who hoard tabs are doing it wrong.
People who can grow sideburns (not me) should do so.
If you have to insert “NOTE”, “SIDENOTE”, “BACKGROUND INFO”, “DETAILS” and other boxes into all of you writing – your writing’s not good. It’s equal to giving a speech and saying every two minutes “but also, let me talk about something else real quick.”
To hell with self-consistency.
Data-driven decision making can and should be applied to certain situations but not to the majority of all decisions.
A lot of time and money was wasted in order to add dark modes to software.
Those frayed ends on charging cables? That’s not a bad cable, that’s a bad user who doesn’t respect cables and doesn’t know how to use them. I never had a charging cable break on me – I respect cables.
Don’t use the
<quote>
style to highlight or emphasize something in your writing, only use it for quotes.Also: pull quotes on page 5 of a website don’t make sense. Whose eyes are you trying to catch? The eyes of the person walking past the magazine stand on which your article is presented on a iPad and scrolled-down 5 pages? Come on.
The ability to form opinions through consumption of media is overrated. Have you ever given an interview that took an hour to record but was then printed as 5 paragraphs? You get it. Do you read a single biography and think you know a person? So how well do you think you know something after reading two articles and eight tweets about it?
Cookie banners are dumb.
Don’t hand over the responsibility of your education to a company or an institution.
Engineers put too many graphs on their dashboards. Most of them are useless. 5 graphs is enough for everything. A dashboard should tell you something at a glance, not require a manual.
There’s a lot of time in a day. “I don’t have the time” just means that you value other things higher. Try not watching TV shows for a week or playing video games or scrolling on your phone.
Paper isn’t “simply better.” Writing with pen on paper is strictly worse than typing on a computer. (I await your angry letters.)
Very often there’s no secret, no trick, no special thing: all one has to do is to do it.
There are programmers who are a lot – maybe ten times as much – better than other programmers.
Outsourcing mental tasks to computers is good, even if the mental capacity to do these tasks might shrink. It is a bicycle for the mind – why walk?
Backlogs and TODOs: if there’s something in there you can’t check off in next 3 months, just delete it.
There are a lot of very talented, very knowledgeable, very intelligent people that just don’t know how to work. Sadly, they often think they’re misunderstood.
Not to go all Hegelian on you, but: most people underestimate how much the world oscillates between Good and Bad and that you can’t have only one side without the other.
I had always assumed that once you get over X followers, that’s when you get the idiots in the replies. I thought it would happen at 1000, then at 5k, 10k, 15k. So far everyone’s friendly. Now I think a lot of people who attract trolls in their replies don’t know how to write on the internet.
Wine isn’t fancier than beer. And IPAs aren’t good.
You can’t just optimize your life, you need to optimize it for something.
Whether people enjoy working with you trumps the skills & knowledge you might have — rightfully so. But without skills & knowledge that is worthless too. You need both: skills & knowledge and people to enjoy working with you.
You can’t convince others of something by telling them they’re idiots. Watch how often people try to do it anyway.
Don’t self-censor yourself with asteriks – don’t write “f***”. It’s ridiculous. Who are you doing it for? Is a kid reading your tweets, thinking ”huh wonder what those mean?” Everybody who reads it knows what word you’re referring to. Get over yourself.
There’s few things as unfit for a purpose as social media is to discussing politics.
Most outrage on the internet blows over after weeks or months. There’s few things to be learned and few things changed by participating and pouring more oil on a fire.
Engineers put too much value on their ability to spot flaws in ideas. It’s only worth something in certain situations.
Many Big Company engineers and managers would be absolutely worthless in a startup.
I don’t think Hacker News and its comment sections are as bad as people say they are. I like HN and have found many, many interesting software, programmers, companies, and stories through its links and comments.
Comfortableness has been overrated in the pursuit of “work/life balance.”
A lot of people who say they are for the Right Things and describe themselves as “kind” and “empathetic” and say things like “as leaders, we must […]” behave like assholes online and I wouldn’t want to work with them.
Reading fiction can be as “useful” as reading non-fiction. Understanding is more than a collection of facts and truths. Reading fiction is the best way (besides the actual, literal way) to walk in someone’s shoes.
Everybody would be well-served by knowing more about the history of the field one is in, or — god forbid — the field one comments online about.
Being a pessismist is easier than being an optimist. I feel better when I try to do the harder one.
Taking something seriously & joking about it aren’t mutually exclusive.
You don’t have to have a clear line between work & life.
It’s absolutely fine to stand in line when boarding a plane. It’s nice to stretch your legs before sitting for hours & it’s nice getting space in the overhead bin without having to squeeze yourself back and forth through the plane in order to find a spot to put your babckpack.
Yes, you can drink that coffee. Get over yourself. You don’t have to have the best version of everything every time.
You can’t trust movie or tv show recommendations online by someone if you don’t know what else they liked or didn’t.
Organizing programming communities around languages might not be the best way to do it.
Pineapples on pizza is good. Pizza Hawaii is a fantastic name.
There you go. Now I need to create the “Fun facts about myself” note.
This was excellent
34: I agree that writing on a computer is strictly better, what's good about paper is the ability to switch as you want between writing mode and drawing mode. Considering most people don't have a drawing tablet and are not good at drawing with a mouse, they write better diagrams on paper. As you said in 10 and 11, it's worth it to take the time to find a diagram tool that you can use for most of your diagrams and integrate with your writing on the computer.
46, 57, 60: Thank you for these! I agree and I'm glad that I'm not alone in thinking those.
62: More than that, the focus on the programming languages as if they were independent of their ecosystem has done a lot of damage. I live in Go land mostly, and it's always surprising to see how much people who focus on the language itself miss. The build system is great. Most people see a project being made in Go as a positive because it'll be easy to install for them, and reasonably fast. You can `go run toto.go` a file even if that file has imports, it'll work. `go build` will just work too. A project can be a single Go file, and when you want to share/distribute it you'll have to add two files at most (go.mod, go.sum). Imports make sense and are easy to figure out. It builds fast. Distributing to multiple platforms is easy too.
Rob Pike says that Go is a language focused on software engineering. Maybe it's time to separate programming and software engineering, and discuss software engineering languages and programming languages very differently.