You hear it all the time in this profession: the role of the developer is changing. And as enterprises are increasingly pressured to deliver fast and frequent releases, developers are finding themselves taking on more responsibility than ever before. Whether it is programming languages, architectures, commercial and open source tools, data types and sources, the developer has to become an adaptable and versatile resource; with an arsenal of different specialised tools at their disposal.
But how exactly has the role changed over the last decade? And more importantly, how can developers cope with the pace of change they’re facing now? During my fifteen years in enterprise software development, I’ve witnessed much of this transformation first hand; as I helped develop products and solutions for optimising software quality and application lifecycle management - all against the backdrop of a fast changing and unpredictable business environment.
New technologies like cognitive computing and artificial intelligence are accelerating organisations’ need for developers who can lead them through this digital transformation. As technologies evolve, so does the role of developers who have become embedded in the fabric of the digital experience. As well as writing code, they find themselves focused on enhancing and improving customer experience, boosting service efficiencies and lowering costs - and becoming a critical part of a business’s success; or otherwise.
And in this world, where job functions are increasingly fluid and complex, it’s important that organisations are committed to upskilling their developers and sharpening skill sets. For some, this means facilitating the mentoring of testers by highly qualified developers. And for others it means considering a change to software development practices to include ATDD (Acceptance Test Driven Development). ATDD promotes defining tests as code is written. Test automation becomes a core practice during feature development rather than after feature development. Depending on team skills, implementing BDD (Behaviour Driven Development) which often implements test automation with simple English like syntax, serves less technical teams extremely well. There are bound to be blind spots between developer, business and test personas - and choosing development practices matched to team skills can contribute to accelerating development velocity.
We also believe that leadership is a critical aspect of helping developers seamlessly transition to what essentially constitutes a new job role. Diverse teams and personas call for strong leadership as a unifying force, and a leader’s active role in affecting change is crucial. Of course, part of leadership is to enforce stringent metrics and KPIs which help to keep everyone on track. The continuous measurement of both development productivity (the number of user stories per sprint) and quality measurements (the number of defects per release) are imperative.
The need for speed
The most significant change in the last decade has been the shift from Waterfall development methods to Agile. Digital transformation is accelerating the adoption of Agile because digital is the main portal to customers and customer expectation is to get more, faster and easier.
In a world where a bad review can go viral in seconds, better apps and faster service became make or break for vendors - customers are much less tolerant of bugs and issues. In addition, fast innovation by handset manufacturers and operating system makers has created a continuous stream of innovation opportunities e.g. easier, more secure authentication using biometric support and new workflow opportunities such as using pictures as part of the insurance claims process. Agile makes it possible to increase velocity whilst ensuring quality, but it brings some challenges too. And one hurdle when making this move has been getting to grips with the concept of iterative development.
For waterfall organisations, the accepted way of working has been to design and lay out the entire project prior to beginning development. Of course, this might entail months of requirement gathering and design sessions before a team could even begin working on code and during this lengthy process user requirements may change - what was once was appropriate no longer fits, resulting in wasted efforts. Agile processes have signalled a complete 180 - helping teams move to focused, small, and iterative work - and, as a result, allowing them to develop and deploy services much more quickly.
Of course, the shift from Waterfall to Agile, which went against developers previous training and experience, caused apprehension for many. This is normal and was expected. But the clear benefits of the Agile methodology helped developers to immediately recognise its value.
And, for us, the primary value of Agile is speed. Agile creates fast feedback opportunities between developers and users, enabling faster course correction and improving quality.
Indeed, it’s this need for speed and fast feedback which is a driving force behind many of the changes we’ve seen in software development. And it’s the reason, too, for development teams’ responsibilities expanding exponentially over the last decade. Where testers, developers and quality assurance (QA) teams once had distinctly different jobs to do, the functions are quickly merging and dev teams are now tasked both with making apps and services and ensuring they are of the highest quality.
The need for testing
In the past, we saw developers follow a linear process when it came to testing. Committing code without testing, or with minimal testing, wasn’t a problem when QA teams were on hand to catch issues and fix them. But today the QA phase has gone (at least in mature shops) - and the iterative development process that is the hallmark of the new DevOps world means that testing and quality assurance needs to happen in tandem with development.
And just as the developer’s role is changing, so too have our ways of measuring not only our progress but also the effectiveness and performance of our code, tools and processes. This increased visibility is a good thing and helps to catch issues early. And when the developer ‘owns the quality’ continuous testing becomes absolutely crucial - it’s key to improving quality, extending coverage, speeding up development, reducing costs, and saving man hours and the defacto requirement to achieve the development speed objectives of modern development teams.
And it’s this plethora of reasons that we now see so much emphasis put on test automation. The dev process has been fundamentally changed - commit code is not complete without commit tests alongside it, and new test tools and platforms have been develop in order to help developers deliver quality code and stable automation tests.
So, the development world has fundamentally changed over the last decade. And the role of the developer has changed dramatically in the last five years, so much so that DevOps is the new normal. In other words, it is no longer good enough to be able to code the ultimate algorithm. Instead you have to understand this in context—how and why it is going to be deployed—and ensure it is integrated into your or your company’s CI/CD pipeline.
Only then will developers be able to fulfill their potential - to drive new technologies and be a fundamental part of business success.
Uzi Eilon, Director of Technology at Perfecto
Image Credit: Startup Stock Photos / Pexels