Specialize?

As a developer, there will be a point in your career when the questions arises… Should I specialize in one area or start to branch out into a new technology? Its an interesting question that leads down the rabbit hole into even more questions. There is no right answer and most of the “correct” answers are situational. So lets take a look at why the question is even being proposed in the first place.

One Job, One Device, One Language

When entering the field as a new developer, more often than not you’ll find a job working with one technology. Most, if not all, the developers I know started out this way. It might be iOS for iPhone, Java for Android, or Web Standards for browsers. The reason you’ll start this way is two fold.

1.) You don’t have enough exposure to programing… yet

2.) Jobs that realistically require more than one technology are rare.

As a new developer, the more you code the more you learn. Every new pattern or method gives you deeper insight into what it means to be a programmer. From here you can slowly begin to understand the craft. Building knowledge in a single language is a much simpler and an easier path than trying to learn two in parallel. Its simply too daunting by comparison. Eventually you’ll come to understand that syntax isn’t as important as the ideas behind them, but this takes time and experience.

As an employer looking for a new developer to add to my team, I want someone well versed in the language my software is in. I want each member of my team to be focused on that technology to ensure that highest quality of code and keep the project under budget. This doesn’t leave much time for cross technology coding.

Personally, I would encourage any starting developer to pick a current technology and learn it through and through. Speaking from my own experience, focusing on one technology will only build the base for learning others faster. As with anything, the more you learn the more experience you’ll have to pull from when investigating something new.

Building Blocks

Technology more than any other industry is constantly evolving. Regardless of how popular a language is today, it won’t be around forever. Talk to someone who has been in the industry more than 10 years, the chances of them saying that all the languages they knew when they first started are still common are slim to none. I’ve been apart of the professional community for 6 years and my first job was building Flash applications. If you asked me today I couldn’t tell you the last time I opened Flash. However I could tell you how to extend a class, write a case statement, or talk about design patterns. That knowledge carries over, and ends up making the building blocks for future technology. The more concepts you understand in a given language, the more you’ll understanding programing.

Keep Learning

Its easy to stick with something you know. Lots of people stick with one technology and go deep. Learning a new methodologies, libraries, and design pattern for that given language. This is great but things that are specific to a given language might not be the best investment of time. Take a second, and look up the Papervision library. If you were a flash developer in 2009, I’m sure you will recall it. If not, this was a popular 3D library at the time for Flash. If you google it now, you’ll find that http://www.papervision3d.org/ is for sale and the community is a ghost town. A lot changes in 5 years, but other times technologies stick around for awhile, just take a look at Java. This is the nature of our industry, but what never changes is hearing about new ideas and the concepts we learn. At the end of the day that is what every programer takes away from their project.

 

The best advice I’ve found is this, regardless of what programming path you choose, keep learning! There isn’t a home in our industry for developers who don’t adapt and grow.  The more exposure to unique programing ideas you have, the faster you’ll understand new ones.

 

Specialize in learning.

Leave a Reply

Your email address will not be published. Required fields are marked *