An Unusual Business Case for Adopting New Technology

Everyone looks for an edge in recruiting the best talent. In my opinion, there is a simple thing you can do to help your organization bring in top tier technical talent – update your technology stack. If a job candidate asks what version of Java you are using and you say Java 6, do you think that has helped or hurt their opinion of your company?

As of right now, if you are running Java 6 you are way behind. Java 7 would be a reasonable answer, but if you could say you have everything updated to Java 8 and have been enjoying the new features, you’re showing the candidate your commitment to technological innovation. That could definitely help sell top tier candidates, who can see how the company’s continuous improvement culture can translate to a personal development culture, making your company the right position for them.

Your technological state is especially clear on the Microsoft stack since Visual Studio versions are named with the years in the version; it’s the same for SQL Server. People asking for experience with Visual Studio 2008 quickly give the impression that they probably don’t care as much about building good software as people running Visual Studio 2013 or 2015. New versions may require a slight learning curve to pick up new functionality, but the improvements are worth it if quality is your highest priority.

There is admittedly an element of taste to which tools people prefer, in which case a design quality-oriented company should be able to clearly express the rationale behind their choices. Eclipse vs IntelliJ, MySQL vs Postgres, the classic vi vs emacs – each has pros and cons but people have strong preferences for one or another, often for good reasons. For some tools there are multiple viable modern options, particularly javascript frameworks.

Javascript tools and frameworks are multiplying at a prodigious rate, making choosing the most “advanced” tool a more complicated, project-specific decision. Off the top of my head, I can name 11: jQuery (2006), Angular 1 (2009) and 2 (2014), Backbone (2010), Ember (2011), Prototype (2007), Knockout (2010), Bootstrap (2011), Grunt (2011), Gulp (2013), and React (2013). Some of these are popular today and others were popular before. Grunt came up quickly then lost mindshare to Gulp. jQuery is distinctly the old man of the group but seems like it still has purpose. Angular 1 had an Angular 2 problem, in that for a while there was no migration path between the two which meant that starting a new project in Angular 1 was clouded by the fact that the technology was at a dead end. Prototype was in vogue then fell out of favor, due to complications in how the js dom is specified interacting with Prototype’s extension of basic javascript types, see this article for more information. At some point, each of these was considered the new hotness, which makes it critical that a company understand and be capable of articulating the strengths and weaknesses of the tool when making their choice.

Starting a new project from scratch you want to pick technologies that will have continued developer interest, mindshare, and a talent pipeline. Lots of people would look at those factors and choose something safe. However, new projects are the best opportunity to try something new. If you do what you’ve been doing just because “it’s the way we’ve done it before,” you risk eventually becoming a laggard. Top talent isn’t going to be interested in working for a company that isn’t showing an interest in new ideas – top tier talent is ideally interested in developing and presenting new ideas.

Image Courtesy Wikipedia

I’m not saying you need to become an innovator, or even an early adopter, but you have to be willing to try a new technology to see if it’s right for you. If it isn’t, then you have an articulable reason to give for why you are using a more dated, but more appropriate tool. Testing out a new tool doesn’t need to be on a big project, but the new tool should be something that is the right fit for something specific that you are doing. You shouldn’t force a tool on a project because it seems interesting, if the specifics of the situation won’t give you an honest chance to evaluate it. No need to engage in résumé-driven development.

In addition to the big tools and frameworks, most projects use lots of smaller tools and libraries. These can be a great benefit to developers, and give another opportunity for small-scale innovation and flexibility. But, each of these tools/libraries version independently and need to be kept up to date; even a small tool still creates overhead and a certain testing burden to keep up on any libraries you pull in. Examples include nuGet on the MS stack, Maven/Ivy on Java, and RVM/RubyGems for Ruby. Tools can help keep the little libraries up to date and organized, but then they themselves add yet another tool that should be kept up to date. And that’s a benefit too for a company. Think of each update to a small library or tool as a practice run at updating a larger library. You have to find appropriate ways to push out a new version of the library or tool to everyone, and have the testing infrastructure to say that there is no problem with the new version. You decide to make the change, regress the system and then push it out to everyone else. The scope of the tool or library being upgraded doesn’t really matter, other than determining the size of the impact if there is a regression.

If your organization is struggling to try new things or keeping up on updates because you’ve been “too busy” and you are considering hiring, try and see if you can use this line of argument to prioritize updating your tools and libraries to put your best foot forward for your candidates.


Leave a Reply

Fill in your details below or click an icon to log in: Logo

You are commenting using your account. Log Out /  Change )

Google+ photo

You are commenting using your Google+ account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )


Connecting to %s