Today I found this great post by Zach Holman. He presents some points that can contribute to make you a better developer. I was reading it with attention cause I always liked how Zach explains things and then I read this part:

I’m in the exploration phase and want to fuck with a lot of different approaches really quickly.

My brain focused in the words exploration and phase. Immediately I started laughing, thinking in all those people who would start screaming things like “this guy doesn’t know how to program” or “he is not following any pattern”.

I love to see opinions like this, out of the norm. If you are a person that likes to be informed and interacts at all with the rest of the community you will see that we are infested by cool words about patterns and architectures. We like to write and teach how to program to others, saying that you have to implement the cool architecture of the moment or follow some pattern that famous people wrote in some place. Don’t get me wrong, I’m exaggerating here, but let’s be honest. Is not that what everyone is doing all the time?

This position may seem weird coming from me, if you ever worked with me you will know how much I love good code, that follows good design principles, etc, etc (put here all those fancy words that we write on our CVs). And that’s true, I try to use, teach and ask the others to follow all those rules, specially if we work together in a big and long living project.

But the reality is that there is another voice in the back of my head saying that all this architectures, all this patterns, even all what we understand today by OOP is kind of… bullshit.

Let me explain. I always try to gain knowledge from outside of my confort zone and luckily I’ve read the opinions of some people, much more smarter that me, that defend this position. And they defend it with more stronger words than me, believe me, they have a stronger opinion on this.

I really like the words from Zach about the exploration phase, and this is only the top of the iceberg. Some people writes the code first, before trying to design it. Letting the code speak by itself. This way of programming is out there, even if the people that does it is not well known in our community. And the great part about this is that it doesn’t mean having worse code, not at all! Letting the code guide the design ends up with you don’t wasting your time and having a strong codebase.

Before wrapping up I just want to repeat myself: I believe in this way of doing things and I try to do it whenever I can, but I don´t practice it in a day to day basis. Probably I will agree with you if you come saying that this is madness and that OOP, good architectures and patterns are widely use for a reason. But I wanted to write this and try to open some minds out there, so maybe the next time that you are working on you side project you can try to just let your code guide you ;)