One of the things we do for almost every client at DevMynd is evaluate technologies. There are a set of staple technologies and frameworks that we almost always use – Ruby, Ruby on Rails, Postgres, Sidkiq/Redis, jQuery, etc. – but there are almost always project specific needs that lead us to think about other tools. As consultants we’ve developed a kind of sixth-sense about tools, techniques, and technologies, an intuition about what will work and what will last. The qualities of this intuition can be broken down into four categories: stability, longevity, transferability, and portability.
It may seem obvious, but the less stable a tool or framework the less likely it is to provide strong value. If a technology changes too rapidly, the development team ends up spending a greater portion of their time dealing with the ground shifting beneath them and less time solving the business problems at hand. Early-adopters of many frameworks will have experienced this. It is important to evaluate how stable a technology is before building mission-critical code utilizing that technology.
There are cases in which the value of a brand new framework is so great that it warrants the pain of instability. We’ve seen it before and it can sometimes be a gamble worth taking. That said, it’s best to know this going in and not to be surprised. If you are a non-technical founder or product owner, make sure your technical team isn’t just building with “new and shiny” because its new and shiny – there needs to be a compelling reason.
Every technology has a life cycle. Whether it be long, like in the case of UNIX/Linux – or short, as has been the case with things like Adobe Flex or serialization formats like SOAP. Investing in technologies that have proven or are proving their longevity is important. Even if your business is set up to be short-lived, it’s worthwhile to consider the potential of the code you write living well beyond its intended life span.
This also leads to the point that you shouldn’t bank on technologies in decline. There was once a day when many teams would have reached for Java to build new businesses and products. However, technologies in their waning years, where they become legacy, are hardly good candidates for new innovation.
Interestingly, the JVM, the runtime on which Java is built, is having something of a second life. There a many promising emerging technologies which are built in the JVM such as Clojure and JRuby. We still wouldn’t recommend anyone build anything new in Java itself though 😉
In our business, building products on behalf of others, we often spend time thinking about the team that will follow us. It’s critical that the technologies we choose are maintainable by the potential developer market that our clients will tap into when bringing on their own developers. While we like long-term partnerships with our customers we want it to be because we continue to provide new value, not because we’re the only ones who can maintain what we deliver.
Whether or not you use consultants, your development team will change over time. In order to cast the widest hiring net and keep internal training to a minimum, you need to rely on technologies for which there is available talent. At the time of writing this post, there is a general shortage of developers. However, there are still more Ruby developer out there than Scala or Go, both great technologies, but less prevalent in the developer market.
While it’s not often easy to change the entire base framework of your app (moving from Node.js to Rails for example) it is quite common to swap out other pieces of your app. Changing UI toolkits, or moving from MongoDB to Postgres, switching from one Facebook API library to another. These changes can be simple or time consuming and considering their portability up front can save time down the road.
DevMynd is innovation firm in Chicago and San Francisco with practice areas in digital strategy, human-centered design, UI/UX, and custom mobile and web application development. The firm’s mission is to help its clients use technology to solve meaningful problems that have a profound impact on life, society and business.