Here’s the inevitable followup to my last post about things I was right about. This is a list of things that I was convinced about when I was younger, but I now I realize I was quite wrong.

Tabs v spaces doesn’t matter

“Tabs are for tabular indentation!” I screamed. But it doesn’t matter. I now believe you are allowed to argue about it passionately just once. Then you’re done. Just do what your team does. It doesn’t matter.

Significant indentation is fine.

Overtime is not good. It’s not something you should brag about.

Bragging about overtime is like bragging about how much liquor you drank. It’s not healthy, and it encourages other people to top it. It is always always always a sign of piss-poor planning from somebody in the organization. Stop working overtime for someone else. If you want to work extra time, work on your own start-up.

Dynamic type checking does not make development faster

It makes prototyping faster, but once you start building for production you’ll just have to build more unit tests and spend more time bug-hunting. Or, in the worst case scenario, you’ll use an ad-hoc typing system that probably slows down the whole application.

HTML is parseable by modern regular expressions

You may think that a regular expression is a state machine that parses Regular Languages, and HTML requires a Context Free Grammar to parse. Joy! You are about to learn that modern regular expressions are insane!

Pointer arithmetic does not separate true programmers from non-true programmers.

This is one point that I think Joel Spolsky is not ever-right on. It’s sometimes important, it’s sometimes a trick, and it’s always learnable. If you learned pointer arithmetic in college, like me, that means you probably learned programming on C, and that means you spent more time debugging how you fucked up malloc than learning the fundamentals of programming.

I am bad at predicting things.

I predicted that mobile was a toy that would never replace desktops and laptops. Recently, when my laptop broke, I didn’t fix it for a month. Everything I needed to do could be done on my phone, and sometimes faster.

I predicted that VMs would be a commodity, and AWS wouldn’t be worth much to Amazon. Amazon is becoming AWS plus a legacy store.

Some languages are just better at certain tasks.

I used to think that, “everything can do everything, you just have to create the right library.” I thought this because of a misunderstanding of the Church/Turing thesis. I was wrong. Some language just make certain types of programming easier.

I’m gonna learn Rust.