It can be tough keeping up with what’s going on in the software development world. It matters because some of the methodologies and approaches that have – or are about to – become mainstream inside developer teams can have huge implications on how organisations do business. So what’s the ‘need to know’ for 2016?
Agile comes of age
Far from new (Agile was introduced over a decade ago) but the fans of this methodology have continued to steadily grow over the years. Importantly, non-tech management ‘get’ Agile (they love the idea that it is all about getting software out the door as quickly as possible to start generating revenue, then make further improvements as and when needed, rather than focusing on 100 per cent ‘perfect’ from the start). In this way, it becomes a lot easier to push out multiple iterations of a product, rather than focusing on a single ‘big bang’ launch.
Many software developers also like Agile because it gives them a great safety net: what’s not to love about the whole idea of having permission – in fact, actively encouraged - to experiment and if something doesn’t work, then move on to something else.
Continuous Delivery comes to the fore
While less familiar to most people than Agile, Continuous Delivery (CD) has quietly been making inroads in software development for a few years, even if people don’t always use the CD label. It’s a great complement to Agile too, because it takes the Agile idea through to production, rather than stopping with the developer’s desktop. The key to CD is a pipeline with a big focus on early feedback, automated build and test: what was originally tested is what gets deployed.
DevOps goes mainstream (but a word of caution)
Again, another trend that hardly needs any explanation, but if it was a big topic in 2015, it has almost reached ‘business as usual’ status in 2016. And it’s a great example of how development trends are benefiting the rest of the organisation for the better, based on the idea that the development and operational teams work in a more cohesive, transparent end-to-end way, with the shared goal of successfully delivering completed products or projects.
However, DevOps only delivers on its promise if everyone is on the same page, rather than just throwing it over to the wall to the next person and this means adopting the right culture, processes and tools to help rather than hinder. Continuous Delivery is a good complement to DevOps execution, because it can support a more collaborative approach, bringing all the necessary elements together.
Infrastructure as Code (IaC)
The environment within which software applications are executed are covered by software-defined configurations and can encompass processors, memory, network interfaces and communications services. The infrastructure is typically configured programmatically using tools like Puppet, Chef, or Ansible, spinning up and provisioning services on demand, which makes it far easier to scale, even at relatively short notice.
Version control acts as a central pivot
Rather than just being a tool that software developers use to manage their code, version control repositories are now being deployed across the organisation for all kinds of digital assets as well as build artefacts. This is being welcomed by non-development teams, because all the assets associated with a project – including artwork, diagrams, CAD drawings, web content, etc – can be included alongside the code.
Versioning artefacts together with the production environment configuration is also essential for a successful DevOps practice. However, not all tools, particularly some of the more popular version control systems, are not designed to support assets other than code, so bear that in mind.
Distributed versus centralised control can wave the white flag
We all know that developers (understandably) like to work in their own environments and don’t want the rest of the IT function – let alone anyone else in the business – looking over their shoulders. However, that’s been frustrating for management in the IT department and beyond, because they haven’t had visibility or control over what developers have been working on.
Distributed version control systems (DVCS) are still very popular with developers because they can work on projects without having to share a common network, while more centralised systems are also still very popular, particularly with large organisations who like the control, security and traceability they provide. Now there is a third way, in the form of hybrid version control systems that bridge both distributed and centralised environments and in theory, satisfy the majority’s needs.
However, like any other technology tool, user adoption is everything and while it may seem like stating the obvious, choose tools that support multiple different types of files and users (from the expert developer to the layperson), demonstrate sufficient ease-of-use, have some form of support provided (rather than leaving the company to work it all out themselves), plus of course with the necessary security, scalability that the unpredictable nature of software development requires.
Get the culture, processes, support, security and tools in place and today’s software development trends can truly add value to the bottom-line success of any organisation.
Sven Erik Knop is Technical Marketing Manager and Evangelist at Perforce Software