With 2020 coming to an end (what a crazy year, right?), we at Incredibuild are researching the trends most relevant to our company and customers.
This past year has taught us that companies wise enough to automate bigger chunks of their operation manage to stay agile and competitive. The best example is game studios, which were expected to release games and versions faster than ever – and triumphed.
Like the story of how Milestone released MotoGP™20 During Lockdown.
While planning for 2021, I stumbled across this article that uses a report by Sourcegraph and Dimensional Research, reporting that 33% of devs (out of more than 500 surveyed) manage 100x more code than they did in 2010; 18% of devs are reported to have managed 500X more code then they did in 2010!
Image source: Sourcegraph
That’s anywhere between 2x to 15x more lines of codes per year.
Granted, it doesn’t mean that we actually sit and write a hundred times more code than we did a decade ago. A lot has changed, like massive open source code adoption and high increase in target platforms, devices and environments.
Image source: Sourcegraph
But for me, this is a game-changer that anyone related to software development needs to consider as we prepare for the future.
Code inflation is steep and getting steeper. If this trend is legit, in 2-years’ time it will double or even triple, weighing on your resources and infrastructure.
The first law of software development
Researcher Gerard J. Holzmann wrote about this code inflation trend, saying: “Software tends to grow with the passage of time, whether or not there is a rational need for it. We can call this the First Law of Software Development.” So yes, it seems that Holzmann took this code inflation trend quite seriously if he went as far as naming it the first law of software development. He carried on examining this theory. To prove this irrational inflation in code he looked into a command named true in Unix® and Unix-based systems. The command grew over time from 0 to 22896, proving his point and then some, showing that even the most trivial code becomes inflated. Just think how gloomy the picture is when it comes to complex products.
This can impact your iteration frequency
Companies that don’t use technology that enables them to be agnostic to their code inflation will be buried under the clutter and stay behind the pack. Just think, systems become unmaintainable legacy systems that are too much to handle. Oh boy… And what about all those dependencies? Dependencies are the worst when it comes to inflated code or legacy systems. According to the report, 57% of respondent reported code breaking because of lack of understanding of dependencies.
Under these circumstances, faster compilation is a make-or-break, and I doubt that more hardware will solve this issue with compilation time in the long run. All these lines of inflated code must be compiled somehow… and in high frequency that we are always looking to increase. Plus, speed is of the essence, more so than 10 years ago; the vast majority of respondents in this report (92%) actually say pressure to release code faster has increased in the past 10 years. So it’s not just inflated code that creates the need to reduce compilation time, it’s also the requirement for faster iteration cycles and release cadence.
Image source: Sourcegraph
And it can determine the quality of your product
More code means more test coverage, whether it’s unit, API, integration, functional tests, security vulnerability checks, code quality analysis or anything in between.
Most software companies today are in a state of technical debt when it comes to automated test coverage. When looking at the holy grail trend of fully automated CI/CD, extensive test coverage is a must-have if you wish to maintain frequent and high-quality releases.
There are several approaches to sustaining continuous integration and dealing with technical debt in this code-inflated era. One very interesting approach I’m looking into right now is test generators. I recently came across this new AI-powered tool by Diffblue that automates unit test writing for Java (they also offer a free Community Edition version of this product, created with IntelliJ).
And with AI tools auto-generating tens of thousands of test units regularly, test inflation is just around the corner. And it will amount to so much more than 100x.
Existing tools are not equipped to handle code inflation (except for us, of course)
The report points out that 85% of respondents agree that “existing tools are not designed for working with large codebases at scale.” That’s one of the reasons I’m so proud to work at Incredibuild – we are nothing if not equipped to handle code inflation, As we can use Incredibuild not only for accelerating our code builds but also to highly accelerate our massive and ever-growing investment in automated test coverage.
Maybe do some cleaning
Besides arming yourself with the right technology (that’s what we’re here for), it’s technologically advisable that you examine the possibility to and get rid of obsolete code. True, it requires quite a bit of effort and a lot of persistence, and it’s not for everyone. Some cases are not suitable for code cleaning or simply not worth it. But for when it’s a good fit – it might just be worth it. I know a lot of you devs out there avoid updating the code because you’re afraid of breaking it (as the report shows). Well, all I can say is – you are right! But you should be more afraid of code inflation.
It’s important to understand that code inflation is a thing. It’s here, it’s growing, and it could have severe consequences on your development cycle, release time, iteration frequency and the quality of your product. You need to invest in an infrastructure, tools and processes that tend to the problem of code inflation, so you’ll be well ready when the time comes.