Bad naming: Over engineering

I hear the term “over engineering” a lot. For me saying over engineer a problem is like saying an F1 car is over speeding or a super model is over beautiful.

But it has the side effect of making people think that more time engineering is bad. Because for some reason, engineering just increases complexity.

Little known fact: Einstein kept working on the e = mc2 formula and he over engineer it. By the end it was y = mca3

Michael Scott

I suggest the name “complicate”.

Moral of the story: engineering good, complicate bad

Intrinsic vs Extrinsic motivation: Overwatch

Lately I’ve been thinking a lot about intrinsic and extrinsic motivation.

Intrinsic is like natural motivation, extrinsic is basically the carrot in front of the donkey. Many people also call it manipulation.

That brings me to Overwatch. I’ve been playing the game on and off since 2016. Every time I reinstalled my wife says:

Oh no… Overwatch again?

my wife

The thing is, I’m a sucker for ranks (extrinsic). So I played ranked a lot. The problem is, if you are not good, you go down the ranks and when you are at lower ranks, it’s like being poor, it’s tough to escape it!

Lately I started playing quick play (intrinsic) and I was never frustrated. The differences I noticed:

  • People don’t get so angry because there’s no visible rank.
  • If someone quits, someone comes to replace them. So, less likely to lose even with quitters.
  • The games are shorter. In ranked it can take 45 minutes to tie and then lose in the next game that takes 5 minutes.

The extrinsic motivations in Overwatch are broken and that is why I think there is so much love/hate for the game.

Why I thing Deno is great

Deno is a JavaScript/TypeScript runtime. Its main function is to build servers based on the Chrome V8. The objective is to be a better Node.

Both Node and Deno originated from the same guy, Ryan Dahl.

Ryan has a good eye for trade-offs. That is why Deno is written in Rust and uses a package manager strategy similar to Go. And the objective for Deno is to be able to develop in JavaScript / TypeScript / Rust.

Why all this “mess”?

The idea is to start developing fast with JavaScript, add TypeScript to make it more secure and finally swap the critical areas to Rust.

And as a bonus, “deno” is “node” sorted alphabetically:

"node".split("").sort().join("") // deno

There’s a possibility of Deno not going very far because Node is good enough and widely used. Or because the node libraries become more performant and safe, so they convert to TypeScript and Rust and the need for improving the code base is reduced. IIRC, this happened a bit with Cython, the fast python.

For now I’m cautiously optimistic.

Fanatics in tech

There’s a lot of fanaticism in tech. “That operating system sucks” “That editor sucks” “That programming language sucks”. There is a lot of suckage! It doesn’t help that software developers are trained to follow rules. So every time there is a decision to be made and no clear rule, they just go wild.

Many years ago, a teacher of mine asked a question and said the answer was the thing software developers are more afraid to hear:

It depends!

A teacher

At the time I didn’t get it, but now it’s quite clear. Almost everything is a trade-off.

It’s a bit like people complaining that a truck sucks and you should buy a fast car.