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

Bad naming: Technical debt

Technical debt is another term thrown around like crazy. I don’t like this term because when non-technical people hear about it, it’s like they got a get out of jail free card.

Why? Because you don’t need to pay back the technical debt if you don’t keep using that piece of software.

Imagine you want to open a restaurant, you ask for 100K to the bank and then the restaurant blows up and you say to the bank “oh well, it didn’t work out…”

I’d prefer some other term like “technical scaffolding”. Basically supporting stuff that holds your product while it’s being build up. But as soon as it starts to grow, you make sure the building is stable.

What happens in many software companies is that they are just a pit of technical debt, so when you go work there, you maintain a badly structured architecture. You maintain the scaffolding, and sometimes this gets so bad you don’t know if it’s scaffolding or rubble from a previous incident under all the scaffolding.

I’m not saying to not cut some corners when you are starting a project, but like cutting corners in a building, be sure you don’t build a tower of Pizza.


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.