It’s time to answer one of the most popular questions I hear from junior programmers when they meet me at a software conference or online: What is the point of studying Elegant Objects (the new object-oriented paradigm I’ve been preaching for the last five years) if almost nobody is using it on real projects? Why swim against the current and learn something that may only harm my career, even if it does seem like a sound technical concept? Where is the profit in making myself an outsider? These are good questions; thanks for asking them!
Let me quote one of the emails I received recently, after the first lecture in MIPT about OOP:
Recently I have seen the first part of your lecture called “Pain of OOP” and was very intrigued by the average age of the visitors. How do you think, will it be hard for them to find a job when the courses are over? Won’t that leave a “footprint” in their minds that almost everything they will see as junior software engineers will be totally against what you taught them? Or do they have to accept that as it is, taking into account that, as juniors, they will have no right to even propose changes to the architecture?
Indeed, the question makes a lot of sense. Elegant Objects is a very alternative concept, provoking you, a junior programmer, to renounce everything you’ve learned to date about OOP and to start thinking differently. It sounds interesting while you are sitting in a room listening to my lecture, but it
may will hurt you once you attend your first job interview.
I’ve heard stories of people failing job interviews just after saying my name and claiming that they agree with my OOP ideas. That was enough to tell their interviewers that they wouldn’t be able to work normally in a traditional Java team, which uses a good old semi-procedural Spring-based Java coding style.
I’ve even heard stories of programmers being fired after their attempts to teach the team a “better OOP,” ultimately ruining their reputations. If you want to hear those stories, just join our Telegram group @elegantobjects and ask there. You will hear many of them.
Will something similar happen to you? Most probably, yes.
You will suffer. You will get fired. You will have issues finding interesting projects, because everything you will see written in traditional Java, Ruby, C++, or Python will look like garbage to you. You will be constantly annoyed that people around you don’t understand you. Your career will be stuck. You won’t be able to get a promotion, because your thinking will be toxic—people will be afraid of your technical ideas—they will sound too extreme for them. You will be very tempted to go back to the good old procedural nightmare, but won’t be able to do it anymore. You will be in a big trouble.
This is exactly what was happening to me before I started writing this blog and publishing my books: I was alone, on my own, in front of those who were ready to criticize my ideas just for the fun of it. However, once I gave my concept a name and started getting followers around it, everything changed. I was not a crazy programmer any more, I became a member of a new tech sect, which, of course, had its pros and cons, but … it was organized!
It became much more difficult for my opponents to diminish the value of my words, because no longer was I just yet another regular programmer with crazy ideas. I was a book author, who managed to structure his thoughts, publish the book, and even to get some readers and positive reviews. I was still wrong (as far as they were concerned), but now I was respected.
I’m suggesting you do the same. Don’t merely listen to my videos, follow my blog, or read my books, but also become an active participant! Once they see you as a vocal member of an organized group of engineers, they will treat you completely differently. You will still be wrong, in their eyes, but you will be respected and your career will go just fine. You will have all the rights to “propose changes to the architecture.” It’s easy to shut up a young programmer, but it’s much more difficult to shut up a young programmer who is a speaker and a book writer, and a member of a professional community.
This is how you can truly join our community:
- Add your name to elegantobjects.org;
- Join two Telegram groups: @elegantobjects (for professionals) and @painofoop (for juniors);
- Write a blog about OOP, like @skapral and @g4s8 are doing;
- Create an open source framework or a library in the EO style and make it popular on GitHub (join our Telegram group to get help);
- Speak at our Object Thinking meetup, like @driver773, @guseyn and @DronMDF already did;
- Make a speech about EO at some software conference or a meetup, like @filrfreire did;
- Publish a book (I will be more than happy to help you).
Pick the one you like most, they are sorted from the easiest to the most complex actions you can take.
Don’t be scared, act!