Stock image courtesy of cbidgie
I was thinking about development and developers and what makes a great developer. Is it the years of experience? Yeah, partly. How about broad knowledge of technology? Surely, that’s a great trait. Leadership? Yep, let’s throw that into a mix.
The problem is that we can continue this list on and on with other great abilities and each question we’ll answer with “Kind of”. An OOP developer is surely better than the developer that has no knowlege of OOP. So what distinguishes one GREAT developer from a good developer?
I think the greatest asset a developer can have is the ability to quickly learn and adapt instead of burning out at their first challenge. When thrown into a situation, a developer has to be able to resolve it, learn from mistakes, and tackle it fully. Without the ability to adapt, a developer will get stuck in one position forever and not be able to move on. And that’s one of the worst things that can happen. The industry changes too swiftly to get stuck.
So what do I mean by learn? Imagine that tomorrow a new code library comes out for PHP that converts PHP interactions into a Java-like object oriented syntax and enables strong-typing. Basically, imagine that PHP turns (somewhat) into C#. The library quickly takes off with numerous extensions and plugins. Within a couple of years, a new type of server emerges (not unlike NodeJS) that starts to compete with Apache. This server supports the new code library out of box and also allows “compiled” PHP to run. Sounds like an interesting idea so what is a developer to do after six years of developing in vanilla PHP?
Learn. Learn. Learn
Without learning, you’ll get not only stuck behind everyone else but also possibly without a job or with limited work abilities. You may end up serving only legacy systems. This is exactly how some developers end up coding ONLY in “Wordpress” or “Drupal” or worse yet “Joomla” and when asked if they can support another system, they boast, “My system is the best one. I did not bother learning another system.” To me, that’s an automatic dismissal of that developer. One has to be familiar with a variety of tools and the ability to enter into a completely new environment and orient oneself.
For example, I found myself working as a Front-End Developer on a purely microsoft-based system. I looked at C# and mistook it as Java the first time. They have a similar setup. Now, I know Front-End very well and have no problem skinning applications from scratch. However, the job required me to dig into C# as well. And while I could rely on the Lead Developer on the project for C# help, I could not call him over every five minutes to fix something, cast some object, or change templating for me. Nope.
During my evenings I’d read over basic tutorials and get the hang of C# syntax. Within a week, my calls on the Lead Developer were only for more advanced concepts that would take longer to learn. Within a couple more weeks, I was tackling even the more advanced tasks. I’m not saying that I became fully proficient but I was able to look at code, know what it is, change some parts if needed, and even add (small) features. It was a great accomplishment for me and it made me less depend on others.
I’ve other examples where I picked up a new CMS, learned a new framework, a new design pattern and so on. And it made me better for it. The more I learned, the easier time I had learning and so my abilities started to snowball.
Learning quickly became my biggest strength and it became one of THE things that I mention during interviews, on my resume, and wherever else. It makes me versatile and it makes every developer versatile.
Not only that but it also gives you confidence.
When asked, “Can you do it?”, I can and will with clear conscience say “Yes”.
So where to learn? There are plenty of places. Here are some recommendations: