No I’m not talking about becoming a “developer” like Bill Gates, or Mark Zuckerberg, or even someone less “famous” like Linus Torvald or Anders Hejlsberg. Man, I’d give up many things to become one of those. To become such successful developers, you must be extremely talented, extremely determined, and of course, a sizable amount of luck. I’m talking about an average human being, trying to become a person who can enjoy his work (and hopefully, provide his family with that work).
Somebody might think, it’s easy to be a developer today. Most problems can be found on the internet – by searching Google, or asking questions on sites such as StackOverflow. Some might even jokingly define “programming = copy and paste answer from StackOverflow”, but we all know that, it takes more than that.
I’ve been trying to answer that question. I’m not a great developer by any mean. A decent, at most (My boss has been saying that I’m doing a very good job, I truly hope he’s not just being nice). It’s been 14 years since I get into programming, 10 years since I made the final decision to be a programmer, when I chose the faculty at my university and 6 years since I began my professional career as a developer. It’s been all natural to me – what does it take to be a decent developer?
There are many important characteristics which are valuable to any kind of jobs. But they are not necessarily crucial for programming. Like hard-working. If you’re new, and you want to be up to speed in a short amount of time, it’s OK to be learning days and nights. But in long term, it’s not the way it works. Unless your employer wants to squeeze you like a lemon, you still have family, habits, and your health to take care of. I have friends who work strictly 8 hours/day, 5 days/week, and they are surely more than a decent developer.
Or talent. Recently, there was a quite famous post “Programming Doesn’t Require Talent or Even Passion” on medium. While I don’t disagree with the author, I think it just states the obvious. No career really require talent. Gosh, even in some careers when you’re supposed to be talented, like singer, there are still some less than talent and still famous, and rich, as heck.
Or passion. Movies have given the public the false impression of being a developer – you must be extremely passionate about programming. You can code 24 hours in a row, just some slices of pizza and big cans of Coca-cola.
No we are not. Of course, without passion, any jobs can be a pain in the ass, but we, most of the times, like coding no more than a teacher like teaching, or a painter like drawing. We might appear to be exceedingly obsessed with the computer, but it does not mean we do programming all the time, we like playing games, surfing Reddit, or viewing cat pictures. The brain power is simply not unlimited, it takes time to be recharged/refilled.
So what’s the most important characteristics to be a decent developer?
Asking why questions
You like asking (yourself) questions – and try to answer it (again, yourself). You don’t want to give in easily and just ask someone else – not because it’s embarrassing, or because you are afraid of asking people questions, but you like to solve problem and see what it turns out to be.
When was the last time you spent hours into some deep thinking? When was the last time you secretly, silently say to yourself “Ah ha”, “F*ck yeah!”, with the feeling of Christopher Colombo discovered America? When was the last time you didn’t stop when you made it work, but to understand why did it work that way?
As a developer, you’re supposed to do new things everyday. If today, you do the same things as yesterday, you’re not a developer, you’re a line working. Being a developer, you will be pushed to stay on the edge of technology. And then the feeling of achievement and “figured it out, myself” is the thing that keep you moving forward. Remember, programming is not a sprint, but it’s a long term commitment, just like any careers else. And you’ll have to find a way to keep yourself motivated.
Or it will tortures you, to the point you hate it to your death.
Programming is not for everyone. Think, before choosing it as your profession.
And once you did, keep yourself curious.