One thing that I often see in code that is written by people who are new at writing code is the absolute love of abstraction. Everything needs to be a constant that’s stored in a different file, because somehow this is a good thing.

Abstraction makes you look smart without actually writing good code.

One of the key things to code is writing it to be read by a human being. I couldn’t give a rat’s ass if the compiler can make heads or tails of the code. The purpose of code is to give the next person looking at it a fighting chance to figure out what’s going on.

When you have to chase every bit of code through a few other files that are spread out all over creation, well, I say that you have failed at it.

Abstraction is great if you have many things referencing something common. Use it then.

But when you have something that’s single use being two or three steps removed from the user, it’s broken. The concept of locality of reference is important. Have the thing that you’re using near the thing that is using it.

No, you don’t get points for making the code confusing.

No, I don’t think you’re smarter for being able to write crappy code.