Picked up an article yesterday from Businessweek about companies that headhunters avoid when starting to look for new executive talent. You can read the whole article here, but what got my attention was the story at the beginning about former Coca-cola executive Jack Stahl.
Stahl left Coke in 2002 to become the president of cosmetics giant Revlon. Jack was known for his marketing savvy and operational disipline according to the article, but ultimately failed in attempting to market the Revlon brand and left in 2006. “He didn’t know what he didn’t know” defines Jack Stahl’s leadership according to one quote from the article. That concept of knowing what you don’t is one of the keys of being a software developer. It’s one of the keys of being any kind of engineer.
Being an effective developer is even more than knowing what you don’t; it’s about knowing what is possible. Being in touch with what other people are doing, what technologies are evolving, how they’re evolving and seeing how others are applying them gives you an even larger set of ideas to draw from when given a task. Some consider personal development to be learning a new language or approach, but in reality need to embracing the concept of daily learning.
Daily learning for software developers is simply keeping up to date. Reading sites like Hacker News or Reddit Programming in addition to the blogs of notable developers, then taking that next step after reading about a startup or creation by finding out how it was done. In cases where the implementation isn’t available, take that problem and find out what kinds of tools are available to construct a solution.
I spend hours each week looking at open source projects, software libraries, methodologies, and ideas. Each one that I read about gives me new ways to implement projects I’m working on now and a chance to think about how I could have done things differently with things I’ve worked with in the past. It’s not required to fully understand how to implement those solutions, but if at some point you run across a problem where that tool would be easier and more effective to utilize than reinventing the wheel, you’ll know where to find it.
Knowing what’s possible is why developers need to communicate. Through personal blogs, comments, and conferences, we share our ideas along with our code. Those ideas are always portable even if the language is not. The very first time I saw anything about AJAX was at a PHP conference and at the time, I had no idea it was even possible. It changed my view about where web development was going. When I first saw someone demonstrate the concept, I had no idea how it could be implemented, but the idea was amazing. From that experience, I learned it was possible, and started to leverage the concept in designs as I learned about the implementation.
Developers tend to think of languages and processes as tools within their toolbox. Knowing what’s possible is like having an even larger selection of tools hanging in the garage, you might never need them, but you know where to find them if you do.