The Making of a Good Developer
This entry is in response to Being Smart Does Not a Good Developer Make over on Justin Etheredge’s CodeThinked, one of the many blogs that I follow.
One of the things he said that caught my attention was:
You can be a successful developer without wanting to learn, but you cannot be a good developer without wanting to learn.
He makes a valid point there. If you’re a developer who doesn’t want to learn but are extremely talented with the skills you currently have, you can be successful in your niche. However, you’ll find yourself limited to that niche, and eventually, technology will change so much that your position may be obsoleted. If you want to survive in our industry, you must keep up with the technology and be able to expand your horizons. If you want to do something other than support legacy applications your entire career, you must learn new things to avoid that rut.
Another thing he said that caught my attention was:
Another problem is that most employers don’t push their employees to learn, and don’t provide any learning time on the job.
Unfortunately, this is too true. In my own experience, most of my previous positions had this problem. I would learn new things about the development environment initially, since I had industry changes in each position, but then I would hit a point where I wouldn’t learn anything new, and the employer wouldn’t offer any opportunities to learn more. It was then that I started having a greater appreciation for the positions that did give me the time to learn new things while on the job.
My current position, thankfully, is one that pushes me to learn, and I have plenty of opportunities to do that while on the job. I am the unofficial go-to person for the .NET web development-related questions, and when I don’t know what they’re asking me, I have Live Search to fall back on when I can’t get in touch with any of my .NET resources. My bosses also understand that they can give me projects outside of my current set of skills, and I do what I can to get up to speed in a short amount of time. When they hired me, I had 0 C# experience, but they hired me for the C# position anyhow, as I had prior experience learning a language for a position and enough other experience to give them an idea as to what I can do.
Some other qualities that come to my mind when I think of the making of a good developer include being open-minded and being able to adapt to situations as they come. If you don’t stay open-minded to technology, it’ll be easy to miss out opportunities. For example, I swore off using any C/C++/C# languages for the longest time because I didn’t like the coding feel of C++ back in college. I know that’s a stupid reason, but I started learning to write programs in VB – I couldn’t understand why languages had to look so complex and why they all didn’t have as many words as VB. But when it came time for me to move on, I opened my mind to learning C#, and now, I’d rather not go back to VB – why does it have to be so verbose? Had I stayed closed-minded, I would’ve missed this opportunity, which has opened so many other doors for me.
As I read Justin’s post, I realized that I am on the right path to becoming not just a successful developer but a versatile one as well. I’m looking forward to seeing what other opportunities and adventures come my way and lead me to becoming a better developer.
What about you? I hope those of you who read this are versatile developers, as being a legacy app maintainer would be a lonely spot after awhile.