Keeping up with the moving times
Even those that work outside the realms of IT are unlikely to argue against the fact that our field is fast moving, so I assume I’d be hard pressed to find a software developer that wouldn’t attest to our changing times and the difficulties of keeping up with the latest technologies. Far too many technologies, in my opinion, for it to be plausible to keep up with them all. As a Professional Software Developer, I believe it expected of me to know as much as possible about the technologies in use in my day to day work, that I know of and have perhaps tried out technologies in the plausible pipeline of the company’s upcoming work, and of course I’m keeping ontop of any core technologies and frameworks that are perhaps not in use, but are prevalent in the industry.
As is the tradition of this blog, I have a gripe to get off my chest; a moment’s rage if you will…
The first point some of you will pick up on, was the phrase “I believe it expected of me”. Perhaps I’m expecting more of myself than is necessary? To which I ellaborately respond, no.
It wouldn’t be one of my blog posts if I didn’t quote the illustrious Uncle Bob at least once, so here’s this issue’s quote of the day:
the number of programmers [doubles] every five years
Uncle Bob’s My Lawn
Uncle Bob describes the exponential rate of growth regarding the number of Software Developers, and how this presents a tremendous issue in our industry whereby knowledge is not being adequately shared between us, effectively reducing the overall competence of our sector over time! So, as a Senior Developer I take it upon myself to not only do my sprint work, and to keep up with technologies, but also to teach. Teach, teach, teach like there’s no tomorrow. If The Letter is anything to go by, there very well may be no tomorrow!
I admit, I don’t write as much code as I used to or in fact as much as I’d like to some days. Something I’ve noticed as a result of all the tutoring and more supervisory styled collaboration I end up doing, is the diversity across developers as to what they believe is expected of them. Many of the views I so strongly hold I don’t anticipate others sharing. Let’s face it, I wouldn’t need to hold those views so strongly if everyone was in agreement! However, that Professional developers are expected to try and keep up with the moving times, is one I don’t think can, nor should be argued.
A Practical Example
Some 4 or 5 years ago, a colleague was jovially ridiculing me for some SVN issues I was having, and basically spurted this word at me, “Git”. I had heard of git, at a seemingly increasing rate in fact. I had by association deduced it was some method of version controlling, but beyond that knew little else. So, having tried to laugh myself out of the conversation about git, turned my screen away from said colleague and did a quick google search. No more than 10 minutes later, I was in a much better position to discuss the merits of Git, and despite a lack of actual experience, could even talk about the differences between Git and SVN.
That lunchtime, I opened a fresh can of relentless energy drink, and started digging in to Git. I downloaded some free server software and 30 minutes later my machine was connected to my first repository (the config for my chosen software was somewhat of a farce!). Visual Studio at the time didn’t have much in the way of Git Integration, but I had found some UI tools I could use, steering away from any Git console interactions which looked far too linux for my liking. By the end of lunch, I knew what Git was, I knew to a lesser extent how it worked, and I had used it. No, I wasn’t an expert, and no I wasn’t ready to add Git to my CV, but I had at least some foundation knowledge that I could expand upon in the future if this Git thing became popular…
I admit, in this example I was probably more driven by my desire to not look the fool than any professional etiquette, but the point still stands. Whilst becoming an expert in every frivolous technology that pops up would be a fool’s errand (and require some kind of cybernetic-superhuman) keeping your finger on the pulse is not only achievable, but easy!
Do you know your core technologies? Developers should certainly know Git by now, though if for some reason you’re still using TFSVC, check out Dennis Doomen’s blog post comparing the two. Of course, Git is just an example, there are many technologies, frameworks, and aspects of programming that could or should be considered core.
I’m reluctant to provide a list of core technologies; doing so would inevitably lead to some dispute and if nothing else, would mean this article doesn’t age well as those core technologies shift. However, developers should have some level of web experience to stay current, which at time of writing probably means keeping an eye on technologies like ASP.Net 5, AngularJs, etc. Similarly, I’d recommend trying to keep up with cloud platforms such as Azure and/or Amazon Web Services. These two I’d recommend even to people such as myself who currently work on neither web nor cloud solutions!
Don’t be one of those people that think anything required on-the-job should be taught on-the-job. Sure, your company is obviously going to have to make sure there is sufficient expertise before adopting technologies, which may mean sending people away on courses or time set aside for some in-house learning, but if those people are behind the times, they are a burden to their business and to their peers.
I have no problem spending my time increasing one’s expertise in an area; certainly there’s a large amount of software development that has to be learned the hard way. But, I expect professionals to make an effort for themselves, not doing so is nothing more than unprofessional.