In the last day of 2017, a usually melancholic day, a sincere letter came up with the title: “An open letter to less experienced developers”. And I need to confess that I read about myself and my career in that letter.
DISCLAIMER: This is not a sequel of the afore mentioned post, nor I have any connection with the author of that post. This is just some comments and content I would publish as a second page of that letter.
Getting paid to code for the last 14 years gives me a lot in common with Paul Robinson. After university admission in the year 2000, now it’s been 18 years since I first wrote a program (In Turbo Pascal 7). Me and Paul share some good long years in front of computers, but also a lot of the context surrounding us all these years.
I want to add some points to the letter, but before would like to give my two cents on some statements:
Saying that code is the most important thing is like saying the most important part of a new building is the architect’s blueprints. You’re not going to get far without them, but there is a hell of a lot of other stuff an architect has to do to make sure clients, local citizens, authorities, other architects, etc. are all pleased with the building.
Yes, that is true. Not only that, you’ll soon realize most people around software production couldn’t care less about how is your code. How it is architected, how nice is the Type Classes you are using or how crazy Circe is. I had a teacher in the university and he always said to me: business make money through IT, it is a means, not the end. I always tried to think and live the opposite, and I lost.
If you can’t fill someone else’s pocket, to the hell with your Type Classes or whatever hype. That is the naked truth. And not understanding it leads to frustration.
The more you code, the more you realise there are whole mathematical, theoretical, engineering and creative universes you do not understand, will never get around to understanding and therefore there is no point in pretending you do, will or can understand.
Man, every time I get back to Scala Z, or Haskell, I have to re-read about category theory. Refresh my mind on Functors, Applicatives, etc, etc. And there are plenty more that I can’t grasp - or at least will take much more time to grasp.
The time where a single developer could craft alone at spare time something that would make him rich, is over. You can’t deliver value, good experience, scalability, etc without having at least 3 other people working with you. And this is not lack of time to do everything, it is lack of knowledge. You can’t master Front End, Back End, Networking, Distributed Computing, Cloud Infrastructure, Big Data, Machine Learning, Concurrency, Database tuning, and so and so, all at once. And again, if you believe you can master all these few topics above, you are doomed to frustration.
I always faced the question: Should I know everything about Java and JVM at the cost of not knowing so well other topics like linux, python, node.js, react? And inside Java itself, should I known everything about Spring or JEE? If I dive into Spring, makert can move to JEE, If I dive into JEE market can move to Grails or something else!! The point is try to be good at something but not to the point that you are unable to do different things.
If you took me and another developer with a similar history, but the other party had spent their entire lives coding at banks, and put us in a pub together to have a chat, we’d have surprisingly little common ground.
Yes and not only with other developers. You can reach a level of psychosis to learn more, to stay tuned more, to read the latest article that, if you go to a pub with people that are not developers, you are likely to stay mute. Because all you know is how Kafka works, and how you should deploy a long running service on Kubernetes or how better Redis is over memcached and so on. I’m not saying that developers are socially disabled people by default, but depending on how crazy you go, you can start noticing you can’t talk or think about anything else.
IT has enough new stuff going one that, you’ll be in your 90’s, and there will be more things to learn and follow than you can cope with. So, trying to find a good angle to master might be better than live like crazy trying to learn everything.
Now I want to add something on top of another statement:
Just remember though, we all know the names of Gates and Zuckerberg because there are only two of them: the odds are long, the glory is great, and it’s yours if you want it.
There are just two of them but IT people tend to think they all are going to be the next Zuckerberg (of course this is a generalization). Well, they will not. And the late they realize it, the painful will be their frustration. Furthermore, during the time they think they are the next Zuckerberg they behave badly.
Some of the behavior might include megalomania, demean other IT professionals and lack of broad vision due to his obstinacy to become the next Zuckerberg.
This is more frequent in the startup world and as a result, startups think they are a club that everybody in the world are begging to work for them. That’s why you see all kinds of ridiculous interview processes, bizarre feedbacks and idolatry to things that won’t prove a developer to be a good developer.
You can also witness people thinking they are so good, so amazing that completely ignore their own teams. And what is the result of all that? They are just ordinary IT professionals that will end their careers running like crazy and bringing damage to others without achieving anything but a good bite of the frustration pie.
Another common pattern is to mirror your career on someone working at Google, Facebook, Air BNB. You start to watch all talks on youtube, and read blogs and write your blog. You want to be one of them, want to share how impressive your system or code are. And you start believing you are working for NetFlix, Facebook and alike, when the best you’ll do is working with Spring Boot deployed to a damn Tomcat. Then you start to think your career is a total failure because you are not hired by those companies.
So, the lesson learned here is to be realistic with expectations. High expectations are good, unreal expectations are evil for you and people around you. We have more people on IT with unreal expectations than people with high expectations. It is simply impossible for every developer to become a Zuckerbeg or Gates in the same way it is impossible to every soccer player to become a Ronaldinho no matter how hard they try. Living aware of the fact you can, or can not, be the next Ronaldinho is better than live believing you’ll for sure be the next Ronaldinho.
You can be an excellent professional, have a great living standard, have a career path without having to force yourself into a tornado of empty craziness. Just level your career by people that makes sense for your personal objectives and it would be awesome!