Actually, when I was writing this article I was on vacation, relaxed, far away from work, with limited access to Internet, reading books, enjoying time with kids. It is just an example of what happens when I spend too much time away from coding. I start to think. Seriously. I recommend this exercise to everybody.
Oh, and one more note, this article contains strong language. Some statistics, word bullshit is used nine times (including this sentence) and word fuck is used two times (including this sentence). You are likely to disagree with my points, and that’s ok. It is ok to disagree and have different point of view, and even call me dump. I would love to hear some arguments with this article, because it would mean I am not surrounded by zombies. This would bring some hope into my life.
I’m tired. This is the feeling I’m hiding deep inside of me. It is not a burnout, because I have it under control.
But I am tired. After 20 years (or more, depends how you count), I can say it out loud. I am tired.
There have recently been a couple of blog posts, articles on happiness level in our overpaid, teased by recruiters with shining like a diamond benefits, eco offices with best of breed fair trade coffee, thin and lightweight Macs, scrum owners (actually psychologists in disguise, and you know what I think about psychology) who are here for you to listen and tokenize and parse your feedback, with tons of empathy for your everyday struggle with The System.
The System, the Monster your created, so later on you can refactor it, using new shining Sword Of New Technology Blessed On Another Cool Conference By Some Unknown Priest of Whatever. It reminds me about the “DragonHeart” movie, where the last living dragon, played by Sean Connery, makes a deal with dragonslayer. The dragon rides villages, burns and destroys everything, then comes the dragonslayer, he “slays” the dragon in well played “heroic fight”, gets the prize and they move to the next village. The System is the dragon and we are the dragonslayers. We get prizes, and move on. The Dragon (khmmm… The System), stays the same. Complex, with dependencies descriptors, getting bigger and bigger, and soon, all our microservices will turn into The System. Where information density is equal on all levels of abstractions, where partial decomposition is impossible and database (this time NoSQL database) is central design lock.
Don’t get me wrong. I am part of all of this. It is not like I am complaining because I am not part of this craze. I got angry when somebody wrote an article in Polish blogosphere about getting government to regulate this market as it creates huge gap between people and it’s just unfair, destabilizing economy and other interesting observations.
People are asking me what I do for a living. They are like, really? Can I be a programmer too? Can you teach me this stuff? They give up quickly, because what motivates them is money.
What motivates us? Mastery (and money, you hypocritical bastards). Getting better at things. We have even bring back to life a centuries old idea of craftsmanship.
You say, it is so cool we can learn, improve, gain experience, continuously. Some say, it is part of our work ethic (and even write books about it). And I say bullshit, bingo. Double soy latte, bullshit. Who gave me the right to say so? Let me tell you my young friend. I gave myself such right, right to be honest with all of you, and yes I was not touching lemon vodka since last conference after party :). I am relaxed as hell.
I am feeding my brain with whitepapers and paperswelove since 1998. I consume weekly, on average one PDF, sometimes I find monsters like “Software and Hardware Techniques for Efficient Polymorphic Calls”, which took me a month to digest. I still don’t understand last two paragraphs, which makes me feel guilty. Yes, I am talking about this feeling, when you go to bed too early, with a PDF half printed, with links on Twitter you put on your TODO list, with all tweets from your wolfpack, who tweet on lovely, just found paper from 1976 on virtual machines construction, “just in time compilation” and other stuff. You feel guilty for sleeping, while others are expanding their boundaries of understanding. And what do you do? On a next meetup, conference you meet a group of young adepts of dark arcane magic, and you pass the guilt. You tell them about message selectors, single dispatch and overhead of dispatch table row compaction algorithm. They feel guilty, you earn +10 points in necromancy, and you’re free from guilt. Nice trick. This is how it works. Our industry is built on vicious circle of guilt.
Where is the trick? Why can’t we break this cycle? Because our brain is limited, our time is limited and yet it’s evolution, baby. One paper leads to another. One research didn’t prove anything but built foundations for another research. Because we made all so complex, adding layers of abstraction, to simplify things, that we failed (or forgot) to make things simple. Thus, one paper is never enough. Every paper has references section, which is like an address to a next drug dealer. And we need drugs to silence this feeling, this scratching of the soul, that you don’t know enough. It is so hard to admit: oops I didn’t read the original Smalltalk paper; I don’t know that Strongtalk made foundations for inlining in JVM (or it was Self? fuck it). You see. Don’t you feel like shit? I feel like a king. Have you ever thought, if a person with 20 years in business feels like this, what people, new to this whole circus, feel? I am talking about empathy. Yes, your are reading the blog post of a person, who starts his presentations with the sentence “in general, I don’t like people” :).
We are in an unpleasant place to be, despite salary, job opportunities, free gym, free beer and whatever free HR department comes with. We are under pressure from our peers to understand, not to stop in our efforts. In the meantime, our lives become empty as we lose track of our ultimate goal: to conquer The System, to work less, and have more fun. Life is not a game. It is only a chance you have, so don’t waste it on feeling guilty.
I can rant for chapters about other tricks we are playing with ourselves. Like hiring for culture fit, 20% of time for doing cool stuff at work (if your are not doing cool stuff at work and company needs to give you 20% special time slot, something is wrong). But it is waste of your and my time. And let’s not cheat ourselves. Somebody needs to maintain the shit I created. Life is not all about roses and love, sex and rock’n’roll. Sometimes you need to dive in shit until you smell it.
There are two (or more, I will not count) things which amplify this behaviour, so let’s find the leverage point (oh, lovely systems thinking).
First thing is hard, like really, really hard. It is so hard, I will not even try to tackle it. I gave up a long time ago. But I am talking about it when my neurons are floating in toxic liquids, with cherry flavour. People who party with me are so tired of this topic, that they usually release another bottle of poison, just to make me stop talking about it. We don’t have foundations, like 10 papers which define software engineering, which define our discipline, which, if we follow them, The System, the dragon will be under control. It will not be killing random people with fire. What’s funny, some of us say, we have. We have our 10 commandments. But it is like with the religion. Every camp has different rules and as usually with us, humans, pitiful, war loving animals, we fight each other. High Priests of Higher Kinded Types camp fight with knights from Order of Temple Of Object Oriented, wearing steel and composite helmets Paladins Of Strongly Typed Church Of Truly One Type To Rule Them All are filling battle fields with bodies of Dynamically Typed Ninjas of Duck Typing. Somewhere behind all of this, Monks Of Curly Braces train new armies to, someday, confront Reactive Functional Hippies Of Evergreens. And, each camp has its prophet, and priests, and followers. They invest their time in finding new souls to join their ranks. This is how it is. One giant battlefield, and every project is a battle and every line of code is a prove. That this is bullshit. And yet, don’t forget about machine loving Transformers Of Mechanical Sympathy, kicking asses of Viking Warriors Of Immutable Containers. Everybody fights for your soul, yours, you young padawan. Will we find peace? Maybe, someday, but I am not brave enough to follow this path. Because, I am tired.
So what’s the second thing? This is something we can try to change. Together, create an utopia, where not knowing is cool, where new people will feel welcomed. But there always will be people who know and want to share their path, their experience and time.
Hey, wait, aren’t we doing it already? Like sharing on conferences and meetups?
Yes, but I think, it is just a play. Conferences have their goals and targets. They usually are part of one or another camp. We have conferences for A and B, and talking about C ,and where D is the new cool. That’s the first challenge.
The second challenge is: “celebrities”, “hot names”, “he always has room full of people”. Stars. I am not saying these people are doing a collateral damage. No, not in general (but some of them should get life time ban of public speaking, it’s just my personal opinion). Yeah, I am like shitting in my own nest (old polish idiom). But, you know what? It’s all bullshit. Being nice for the sake of being nice, isn’t part part of my work (or life) ethic. Deal with it and I will deal with consequences.
We are like masonry. It’s hard to join our secret club, it is hard to get to a new level. Because, we work together, review our presentations together, travel, and party together. I hear it more often these days. That we even create our own ghettos during parties. There are special speakers dinners, and speakers rooms, and speakers pub crawling, and special insight code, language we use.
Some people even make a living out of this, not having written production line of code in ages. What a bullshit.
I have recently met two of high rank speakers and tried to talk with them. They were so focused on defending their way of seeing things, that I felt like shit after the discussion. Then it struck me. They were protecting their job security. It was more important for them to protect their dragon, than to be open, honest, ready for discussion about framework, technology or language they promote. If you don’t have enough patience, if you think speaking at main stage makes you a superior human, you are in a wrong business.You write shitty code too (or don’t write it at all, bingo), you feed the dragon like we do. What makes you special?
Don’t let me continue. Yes, I know it is extra work, extra effort. But we are in this together. Together, we shape this industry. Without the audience, we are nothing. Our ideas are dead, without people who actually implement them. They have important feedback for us, and this feedback is: stop creating ghettos. This is my another observation. People are either afraid to come and ask, or we are building walls around us. I thought, hey, I am not nice, it is not welcoming when you say “in general, I don’t like people”.
Recently, on one of the conferences, I understood, it is not a problem. It is just a filter for people who don’t get sarcasm. The problem is, even when people get sarcasm, they are trapped in this guilty hell, because they follow us on Twitter, they see my sick tweets at 2:05 about another PDF I found, and they didn’t read it.
Hey, I say it is ok. It is cool not to know. I have read it. Stay cool, give me a shot of something strong and cold, and I will tell you what I understood, why I think it is important.
Somebody asked me, why I do it for free. I don’t know. Maybe, I like when I turn my sleepless nights into something worth it. And, of course, I love to be the wisest man on the block:), c’mon, deep inside it is all about this :). We are like a 10 year old boys playing football in the backyard, and somebody just showed a new trick.
I’m tired of chasing my dream alone. Having to read all these papers. Not knowing what’s next.
Tired of our wars, because they are pointless, no matter FP, OOP, AOP, FRP, at the end there is CPU and OS. And they don’t care. And we created abstractions which are here rather to make people feel stupid, than to make things simpler. We feed new dragons, when the old one is still alive and doing well.
I am dreaming about a place where there is no audience and speakers, where there is one afterparty, where lack of knowledge is privilege, and if you know and understand, it is your duty to share it. Where there are no camps, no knights, no dragons. A sacred place where, before you enter, you have to leave all of your weapons, langs, frameworks and libs, at the front door. Where the only stars are inside us, lonely stars looking for understanding to become one.To explore space. To enjoy the things we don’t know we don’t know.
I am naive.
I know, this is my utopia. I need to free myself from being tired talking about technology, about frameworks, and libs, and containers.
I am not saying they are not important. I see them like a forest full of trees. They hide the truth, that the king is naked and the princess is ugly, and there is no handsome prince on a white horse.
The truth is, deep inside, behind all of the abstraction layers, there is OS and CPU, deep inside, behind all of ORM frameworks there is SQL and deep inside, behind all of MVC frameworks and JS libs dependency hell there is DOM and HTTP, for God’s sake.
I would love to see more and more talks about foundations, about things that build frameworks, languages and libraries, layers of abstraction below. These are stable layers of the system to which you should design dependencies of your knowledge and experience. Build on things that will not change in a year, oops, month.
Would you do me a favour? Next time you are going to talk about a new framework, rather talk about the layer this framework tries to hide and “simplify”.
… yeah, this article was not reviewed, accepted or read by any of my friends and peers, because I don’t strive for perfection, I love chaos and improvisations. So sorry for all mistakes 🙂
That awkward moment when you realize that we all have feelings, despite HR opinions.
[…] trafiłem na ten wpis: What’s Wrong With Object-Oriented Programming? następnie na ten Frameworks, libraries, languages and deconstructing bullshit i to mnie jakoś zmotywowało, poukładało co bym chciał napisać, tak aby inni mogli sobie z tym […]
This one http://amasad.me/2016/01/03/overcoming-intuition-in-programming/is also interesting view on frameworks, from a different angle.
Best thing on the computery business I’ve read in a long time. Excess creativity is a very ugly, dangerous thing. Nail it on the door of the cathedral and let’s go find strong drink. I’m older (a lot) so I’m buying. Good to meet you.
These things come with age 🙂
Nice article, one typo though:
“They were protecting their job security. It was more important for them to protect their dragon, then to be open, honest, ready for discussion about framework, technology or language they promote”
Should be “than”
Thanks for noticing type, fixed.