The world of software development changes fast.  Really fast.  Things that were hot yesterday are history and new trends are constantly emerging.  Even just 5 years ago, the following did not exist or were very new to the development landscape: Node.js, Git, Javascript MVC frameworks, iOS, Android, NoSQL databases, HTML 5, Ruby on Rails, Cloud Computing, ASP.NET MVC, CoffeeScript, SASS, Entity Framework, etc. etc.  It’s hard to keep up.

Turbo_pascal_30_cover

Turbo Pascal: It had its day but that day has now passed.

Why Keep Up?

As a software developer, I must keep up.

Well, for one, because I want to remain employed.  If I held on to my Visual Basic 6 and InterDev skills and refused to learn new things, it would be tough to find a job today.

Secondly, I need to keep up with technology changes that make me a better, more efficient developer.  Although new stuff is most definitely not always better, sometimes it actually is.  Sometimes new stuff changes the game.  I was hesitant to learn jQuery when all the cool kids were doing it but once I took the plunge, it radically changed my approach to web development.  It made it easier, faster and more enjoyable.

Also, keeping up keeps me challenged.  New technologies or new ways of doing the same thing keeps things interesting by providing new challenges and learning opportunities.  I’m only human and have to realize that a lack of challenge will cause my interests to wane.  If Turbo Pascal was still my primary development language, I would be completely bored out of my mind.  I would be an expert, yes, but there would not be much left to learn.  And, yes, I would be unemployed.

Challenges To Keeping Up

overwhelmed

As I see it, there are 2 primary challenges to keeping up.  The first challenge is just making myself  aware of the changes.  How do I sort through all the new buzz words I see and hear?  How do I make time to read blogs and articles, attend conferences and rub shoulders with developers I don’t directly work with?  Where do I look for the latest trends?  Am I looking in the right place or limiting myself  to a specific community which is skewing my view of larger trends?

Also, sifting through all the information and deciding what to focus on is tough.  How do I distinguish a fad from a legitimate trend change?  Time is precious and I can’t spend time learning every new thing that is hot off the press but at the same time I cannot sit by and not attempt to try to learn some.  Sure, I can wait until a new technology or trend gets a large movement behind it before diving in but how do I decide the point at which this happens?  I do not merely want “jump on the bandwagon” of what’s popular but do want to embrace new trends that make me a better developer and keep me challenged now.  If I wait too long, I might be spending my time on something that is on its way to becoming obsolete.

My Approach

I’m not confident I know the best way to keep up but I will share my approach in hopes of helping others a bit and to illicit feedback so I can tweak it and make it better.

  • Read RSS Feeds – First and foremost, I subscribe to RSS feeds and use Google Reader Feedly to read through them.  When I stumble upon a blog post on a site that seems to have quality posts related to things I am interested in, I add it to my list of feeds.   I do not read through my feed list every day but try to skim at least weekly.  When I see something that catches my eye, I try to do a quick read to get the gist.
  • Explore GitHub – GitHub is pretty popular these days and there are tons of open source repositories hosted there (including mine!).  At least weekly, I try and Explore at bit to see what’s new and whats “trending”.
  • Attend Developer Conferences – I try to attend local developer conferences because I feel they are a great way to get a high level idea of the current trends in development.  Just by looking at the session titles and descriptions I can see what current interests are out there, at least locally.  Attending some of the sessions gives me just enough to chew on so I can go learn more on my own.  Also, attending conferences is a great way to network and reconnect with developer friends who I haven’t seen in awhile.
  • Search Google – Every so often, I simply search Google for something like “trends in software development” and learn from others who have taken the time to research at a high level what the latest trends are.  There are some quality articles out there that help me to get a handle on where things are headed.
  • Experiment with a Personal Project –  I maintain an envelope based budgeting project called bento.  It’s mostly for personal use but I may turn it into something larger one of these days.  I like to use this project to experiment with new tools, libraries and frameworks I come across to take them for a spin.  Since bude is relatively small, it is easy to make incremental changes and switch out components without much trouble.  Also, since I actually use it personally, I get a chance to actively evaluate the development and maintainability of something new in a psuedo-real word application rather than a throw away project.