Every developer tries their best to avoid being eclipsed by the latest and greatest technologies. Just when you think you have mastered the fine art of HTML 4, HTML 5 comes out. Browsers have infinite release schedules. Every time you think you have mastered a library or a language, a new shinier faster programming language comes in that promises to make everything work like magic. Sometimes developers will stop trying to keep up with all the rapidly evolving landscapes.
It is impossible to be an expert in every new programming language, API or Framework that comes out. There are not enough hours in a 24 hour day. So how do you stay current without trying to master everything that comes out?
Planned Practice
Daily Practice is not just for musicians and athletes. Anything that requires a skill must be honed and perfected. Professional athletes, like basketball players, work on their games in the offseason. Is there a programming concept or a tool that you just can’t wrap your head around? Set aside an hour each day to learn it until you understand it. You’ll never improve if you don’t try to push past your areas of weakness. This was a great suggestion that I picked up from reading Martin Fowler’s book, “Remarkable Careers in Software Development.”
Look for Emerging Trends
It should be pretty easy to figure out which technologies, tools and programming languages will become more important in the future by looking at all the industry buzzwords that are floating around. “Cloud Computing”, “Mobile Applications”, “Distributed Computing” and “Semantic Web”. Obviously there are a ton of different solutions from a ton of different vendors. Figure out what problems that these new technologies are trying to solve. Pick the ones that seem to have the most active developer community and spend a couple of hours each week learning more about them.
Categorize and Master Tools in your Technology Stack
If you are a web developer, there are certain tools and applications that you are going to need to become familiar with in your day-to-day work. There are Databases, Object Relational Mappers, Web Browsers, Web Servers, Source Control Applications, Integrated Development Environments, Programming Languages and APIs. Try to gain a functional understanding of how each tool in your stack works. Track how your application responds from the time the user types in a URL for your web application until the request.
Some of the benefits you’ll receive from doing this are:
- Greatly increase your knowledge of how your application works within its environment. This will allow you to write better code faster with fewer side effects.
- Help you understand how other similar tools might function in different environments. This will help you pick up a similar tool faster than if you had no exposure at all. A .Net web application environment will have different applications than a Ruby or Java based web application environment, but there will be applications that are analogous to the ones in your previous environment (i.e. Using MySQL instead of SQL Server as a Data Store, Hibernate instead of the Entity Framework for Object Relational Mapping, Apache instead of IIS for web servers). Having previous exposure to the type of tool will help ease the learning curve.
For example, if I’m a .Net web developer, my development stack might look like this for my web application. There will be a different technology stack depending on your programming language of choice or whether you are going to be using open source or closed source software.
Master the Fundamentals
Technology is evolutionary. Tools of the present evolved from the past. Technology of the future will more than likely use current technology as building blocks. If you understand the fundamentals at a deep level, you will easily grasp how the new technology works because you understand the parts.
I don’t mean that you have to be able to write a compiler in binary or be able to know all the assembly instruction sets for your current chip architecture. It means knowing fundamentally how each layer of abstraction works at a broad functional level and being able to explain it to someone with little or no technical experience. This is a good litmus test to see if you understand the fundamentals of how each layer works.
Aggregate and Scan Information from Technical Sources
I love feed readers like Google Reader because they allow me to aggregate and categorize Journals, technology and software development blogs from the Software Industry. I love Twitter, Reddit and Stack Overflow for the same reason: I can learn from others and keep abreast of what is current. I may not be able to dive into everything, but having one place where I can see headlines and investigate things of interest is definitely a good thing.



