Here’s a philosophical question for you - when something new is released, a new technology or framework, is it really so new or so completely different for you as a developer? Or do you find that, more often than not, after the “new”-ness wears off, you find that what was just released was just a better, more optimized, feature rich implementation of something from before? Maybe you’ll just need to learn new APIs?
The question comes as I reflect on a recent developer event that I attended. I got into a very interesting discussion with a developer about keeping up with the evolution of things in a developer’s world. His point of view was that if you look at how often something new comes out, there’s no way for a developer to keep up while still completing his or her current work.
When it was my turn to throw in my two cents, I asked the same question I posed above. Now, by no means was I diminishing the fact that there is a lot to learn/keep up with. What I wanted him to think about was whether it was the same as learning an entirely new language (which, yes, is a lot of work) or whether it was just learning to adapt existing skills to do interesting new things – in which case, its something that can be done over time and implemented as it is learned.
I proceeded to give a few scenarios.
Application Lifecycle Management in Visual Studio
When you boil it down, ALM is about people + process + tools. Most ALM tools, and certainly Visual Studio/TFS, handle multiple different processes. So if you know the people you work with, you know and are comfortable with the tools you work with, the only thing to learn is the new process.
There are actually a few Microsoft Virtual Academy courses coming up that will go into this very concept:
Let’s take it from a different angle – let’s say you want to (or maybe you are being told to) use Git for source control versus TFS. At the end of the day, you know how to do source control in Visual Studio, right? So, yes, there are differences between them, but they are not so different that you can’t, relatively quickly, pick up the differences and implement. To see, first hand, what I mean, there’s an upcoming MVA course on that - Using Git with Visual Studio 2013.
Cloud with Windows Azure
Second scenario I gave was Windows Azure. Windows Azure has a ton of different services that can be used for building web sites, apps, services, etc. But at the end of the day, it’s just infrastructure – Windows Server or Linux servers that host your code. Better yet, if you’re using the various Platform-as-a-Service application blocks like Windows Azure Storage, Cache, Service Bus, or Mobile Services, to name a few, you’re just talking to a set of APIs using objects in an SDK. If you’re a C# developer, you’ll use the C# SDK which exposes .NET objects that wrap the services. Similarly, if you’re a Java or a PHP developer, you’ll use the Java or PHP SDK which expose the Java or PHP objects that wrap the same services. The languages are already familiar, so just the actual objects/API calls are new to learn.
Of course, I shared these on-demand MVA courses to demonstrate my point with regards to Windows Azure:
- Getting Started with Windows Azure
- Designing Applications For Windows Azure
- Mobile Apps to IoT: Connected Devices with Windows Azure.
Again, I wanted to demonstrate with learning resources, so I shared these:
Long Story Short
I could have gone on, but we had to go back into sessions. At the end of the day, all of the scenarios came down to the same thing - there are new things to learn (there always will be!), but if you have the right learning resources to help you learn things fast (as in not have to go to Bing and do an open query for “what’s new in web development”), getting up to speed and ready to implement (and remember, implementing is still a process of learning…) is just a few modules and study hours away that you can knock out one by one as the time becomes available.
That’s how I see it. What do you think?