On being a good developer
I keep reading at a lot of articles about how easy it is to write software, to code, and becoming a rockstar/ninja/superstar developer in a month. While I think there are definitely some attitudes that will make you a good developer, I have some bad news for you peeps: It simply does not work that way. Code is not written out of the blue. If I wanted to be a good developer, I’d focus on some intangible stuff:
Curiosity. Curiosity drives my needs of doing new things, of testing new approaches to tackle problems, and makes me want to be a better developer. It makes me push the envelope in completely new technologies, and forces me to try different approaches until I feel things fit together in just a good manner.
Just good solutions. I always aim at a good solution for the current problem I am facing. I don’t seek perfection, mostly because is out of my possibilities. Software over-architecture for the just-in-case situation or adding solutions for what-it-might-not-happen is definitely something I avoid. I love when I remove a library, or I delete code, as much as when I write code and things fit together to tackle a problem.
Deliver. I am realistic. On average there’s a budget for the expected solution. Delivering on time is more important than everything else. And it must be keeping in mind code quality and long-term maintainability. I also use all the tools that help me make my work better and faster. Something I realised is that tools don’t fix problems. People do. So use tools wisely.
Code for people. I write code for people. Long term maintainable, documented, extensible, keeping myself away from verbosity and code obfuscation in-the-name-of-optimizations. Let me tell you something: there’s a guy somewhere out there, that will tweak you current VM to squeeze all the speed out of it, and that will render you short-term hacks not only useless, but totally outdated, and probably hurting the current codebase.
Eat my own dog food. Yes, I use the tools and libraries I write at a daily basis to write the software of the next day. My software is used by many people, and many people contribute to it as well. So I better focus on all the previous stuff.
Passion. Whatever I do, I do it with my best attitude, and with the most humble approach I can. Passions can’t simply be left apart. It is this passion about what I do that makes me understand things from the ground up or pay attention to subtle details. At the end of the day, the game resets, and I get back to start position.
Does this stuff make me be a good developer ? Well, I don’t think so. Or at least, not just this stuff. This is just the bare minimum I could ask a good software engineer or developer to master. What do I expect from an application, that it just worked ? Not only. So I am demanding. I believe, what would make a good developer is something others can value:
Am I a team player ? do I listen ? do I inspire people for a living ? do you like working next to me ? do I try to be a best person everyday ? do I learn from everyone around me ? do I help you when you need it ? would you join me on another team ? … ? These are the real things that will turn me into a good developer, software engineer, soccer team trainer, welder or wood carver…
No bad news this time. Inter-personal, as well as professional competencies can be trained. So I am, or can definitely become, a good developer. And so, this is part of my new year’s resolutions: becoming a good developer.