[WIP] The Troll Programmer
While reading this article, I may expect two different behavior from you, the first one, will be like this article was wrote just from the top of your mind and you know exactly how I feel. The other, well, the other reaction may be just hating me and the monstrosity you think this article is.
So let’s go to the facts…
TL;DR: I Am a Troll Developer!
1 - I refuse all the bullshit project management, titles, patterns and all the things related to computer programming. As I see fit.
2 - I will accept good practices and programming “rules” only when necessary, when really necessary.
3 - I take no remorse or shame on doing the opposite of the standard practices, because I’m the code master on my applications and no book can dictate how I do that.
Please, stop inventing meaningless terms and titles!
Before I dig into some more serious business explaining the previous statements, I must address the issue on the inverse order. We will get into some more details later, but for now, lets just address some of the effects it may cause. Don’t worry, you will understand it in a bit.
Recently, the development community (But I can only speak in terms of Web Development since I do no other type of work) has growing some sick behavior that I can not tolerate.
You may already faced some of the ugly terms like:
- Developer Advocate (Will I get disbarred for this article?)
- Software Evangelist (For which church?)
- Full-stack Developer (Don’t let anyone “push” you!)
- T-shaped Developer (Nailed in a cross? [sorry if too heavy on this one])
Did you reacted well to those when you first heard of it? Well, you should not! Those are the most meaningless terms you will ever hear in your life.
Companies, instead of displayed this job ads, why don’t you guys just stop being lazy and write a proper ad?
Why have I to google when reading those monstrosities to learn about the term of the month?
We may or may not get into this point again later on this article.
Refuse the Establishment
“The Establishment generally denotes a dominant group or elite that holds power or authority in a nation or organization” — Wiki-Freaking-Pedia
Side-topic: And yes schools, Wikipedia is a very valid source. It was built by people, many people so it has much more chances of being “true” then a mediocre book printed by a large press.
OK, getting back on the point…
I don’t have to use scrum, XP, agile, or any other of the 999 terms related to the moment.
I don’t have to decorate all the design patterns.
I don’t have to follow any rule.
I don’t have to write unit tests.
I may use even Extreme Go-Horse Programming if I see fit.
I may write procedural code on a objected-oriented Language (Not mentioning functional).
I may don’t document my code.
I may use anti-patterns.
I may do anarchy programming compared to your line-of-production software.
And it does not means my code will sucks, or be harder to maintain, or even cost more than yours. It’s just a different way of solving problems.
Singletons? Sure! No Unit Testing? Ok
You may find this previous lines very dangerous, very very dangerous, but, are they?
On your perspective, I may be trolling your dogma programming style. And you may think of me as someone crazy, but…
Rules are boilerplate ideas for you to implement,
Scrum is not methodology, It’s a framework.
Tests are tools, not your application.
Design patterns are examples of how you may do stuff, not a recipe (even when mostly sold as)
You think I’m crazy right? just keep reading…
You practices may be good, but sometimes they aren’t for me
Yes, you read that right too. It does not matter if you’ve being doing it for 20 years and being productive (actually I can’t think of any dogma on our universe lasting that long, sorry, just did).
The main intention of this article is to show you that development is not a religion, you don’t have to follow any rules unless you fell they will be beneficial.
Actually, no rule was born as a rule, is the massive copy and paste on blogs and worthless programming media that sold most of it as being.
SOLID is a set of Principles.
REST is a Design.
DDD is a approach.
But somehow we managed to put those things into some altar and glorify it over and over again. They have a abundant value, but should always, always used with extremely caution.
Next time you sit in front of your computer to code, ask yourself the following question:
How can I accomplish the task at hand, using the minimal amount of efforts, techniques, and tools so the final result is acceptable.
You answer to that question can be anything. From using a single hipster framework that can get help you get the job done 20 minutes. Or a one year scrum based project with 20 people. It does not matters.
What matters the honesty of not putting useless complexity where should exists none.
You can still use all the things I’m talking about here on this article and that will be completely fine. The thing is, you may not need all of them, every-fucking-where…
Stop over-engineering things! Just stop!
So, once again, I’m a Troll
I’m a troll because most of my work will fall under your don’t-do-it list, I’m a troll because I’m free to do whatever I may want, the way I want. And there is no 600 pages book that will prevent me of doing so.