The future of software development: modular, intelligent, and rickety22nd April 2019
The future of software development: freelance, AI-assisted, and rickety
Nearly four thousand years elapsed between when Egyptian astronomers invented the concept of zero and a British mathematician tacked together the first computer. But once the thing was made, we were off to the races. It was only 130 more years to electronic computers, 40 to the internet, and only nine to smartphones. Now advances in computer science pop off as if discharged from a ticker tape machine.
But not everything that earns press sees success — or has an impact. Most inventions die following their hype cycle, in what research firm Gartner calls the trough of disillusionment. In this article, I’ll share three signals amidst all the noise that I think indicate trends that will survive to become the biggest forces in software development in the coming decades.
1. Soon, most software will be built by freelancers
Today’s monolithic generalist freelance platforms are going to be gobbled up by the next wave of niche ones, just as Craigslist was devoured by Uber, Airbnb, and OkCupid. It’s going to usher in a renaissance in developers building software remotely on contract.
UpWork (formerly Elance-oDesk) may have introduced the world to the gig economy, but it’s no longer serving it. The platform has enraged users by hiking fees repeatedly, and the sort of expert developers Microsoft hopes to access by partnering with UpWork are fleeing the platform. They don’t want to compete in a race to the bottom in terms of pay, or to spend all their time pitching clients who are too inundated with applications to sort through them all.
@siddharthkp having more than 10 years of experience but still struggling to get good projects on sites like @Upwork and @freelancer becuase some get work by bidding very very very low. Surprisingly employers choose them over experienced ones 😔😢 suggestions?
Instead, developers are exploring all manner of alternative matchmaking. They use placement agencies like TopTal and 10X, which are booming despite employing old fashioned techniques like “reviewing resumes” to assess skill. Or developers use matchmakers like Gigster, Tara AI, and hundreds of startups which apply machine learning algorithms to the famously non-deterministic process of hiring through resumes, phone screens, and recruiters.
My current project, Subspace, uses a reputation system to make matches. It’s a freelancing platform for hiring, but also a software development tool, which allows us to assess the true skill of each developer as a byproduct of real work happening and to match them up to the right companies and projects.
And then you have Jira, Slack, Basecamp, Airtable, and a whole project management-communication-developer tool category that’s bubbling over with ways to make remote work simple, and face time less important.
All this is creating a $1.5 trillion market for freelancers that provides the infrastructure for developers to work productively, remotely, and resolve their biggest complaint: finding consistent work. Already, 35 percent of developers have freelanced part-time and 9.5 percent currently freelance full-time, according to Stack Overflow’s recent survey of 90,000 developers. That’s a big market with lots of liquidity, the freedoms of which will entice more and more developers to ditch the office so they can:
- Pick their projects
- Choose their teams
- Be their own boss
- Travel aggressively
- Find tax havens
- Save on the commute
So, get ready for all that.
Plus, a specific prediction: Freelancing also creates instability, offers fewer (or no) safety nets, and eliminates the legal protection full-time workers enjoy. I believe we’ll soon see the rise of freelance developer cooperatives that serve the same purpose unions did during the industrial revolution.
2. AI-assisted coding will soon become standard
We are nearing a point of peak code. From there, we’ll each begin to write less and less of it because computers will do it for us.
“All standardized, repetitive coding work will disappear,” writes David Tal, a futurist, in Quantum Run. “In its place will be a vast library of predefined component behaviors, UIs, and data-flow manipulations.” Because, well, DRY — don’t repeat yourself. If you have to do it more than twice, a computer should do it for you.
Many developers will be elevated from bricklayer (read: code monkey) to foreman.
A longtime challenge to freeing computers to program themselves was their inscrutable inability to understand context. “You usually need to give a lot of details about what the target program does, and writing down these details can be as much work as just writing the code,” Swarat Chaduri, associate professor of computer science at Rice University and creator of a system that writes its own code, told Futurity. But algorithms are getting good enough at judging user intent that a wave of no code or low-code platforms such as Quick Base, Mendix, and Zudy are replacing code editors with graphical interfaces so simple anyone can use them.
The no code and low-code paradigm will have three impacts:
- Expert developers will accomplish more each day
- Junior developers will have a harder time finding work
- Frontline managers will be involved earlier in the development process
Having frontline managers more involved will inevitably lead to better software. When a product manager can mock up not just the wireframes for a software, but basic functionality, the developer’s job is more curatorial, and more niche, and the whole thing is more collaborative.
Many developers will be elevated from bricklayer (read: code monkey) to foreman. “The role of the software engineer will be less coder and more data curator,” writes Sandy Sharma in Daskey Keyboard.
Computers will write their first lines of code for non-critical functions such as quality assurance and testing, and helping agile engineers estimate the time needed to complete tasks but it’ll soon become irreplaceable. As machine-written code increases the total volume of code, by way of intelligent programming assistants, rapid prototyping, and auto refactoring, there’ll be far too much of it for humans to wrangle without machines. This will necessitate more machines. Already, Google’s search algorithm is too complex for human developers to manage on their own. Imagine where it’ll be in ten years.
A specific prediction: The rise of an elite class of developers known as no code fixers: People who companies hire to untangle their runaway no code environment, because they no longer understand how it all works and lack the power power to revert.
3. Nightmarish infrastructure will put us all at risk
The future seems bright except when you consider the infrastructure it’s all built upon, which is in a nightmarish state — and worsening. “Our modern society runs on software” Nadia Eghbal pointed out in a Ford Foundation report titled Roads and Bridges. “But the tools we use to build software are buckling under increased demand.” Specifically, the open source parts.
Far too few developers participate in maintaining open source software (OSS) for it to continue to function like we all need it to. Only 12.4% of all developers participate at least once per month, yet 78% of companies use OSS extensively and open source components are found in over half of all proprietary software, reports Michael Lockshin, writing in the World Bank blog. That’s a lot of companies using a lot of software that’s double-checked by not a lot of people.
These vulnerabilities may only increase as the volume of code written increases, and as it’s handed off to machines.
In a survey, only 8 percent of companies expressed concern about the quality of OSS. “A possible explanation might be expressed in what’s known as Linus’ Law: ‘many eyes make any bug shallow’” writes Lockshin. Yet vulnerabilities like the 2014 Heartbleed bug in OpenSSL exposed 800,000 of the most popular TLS-enabled websites and took nearly two years for someone at Google to discover.
These vulnerabilities may only increase as the volume of code written increases, and as it’s handed off to machines that learn to code by mimicking humans. We are, after all, error prone, fickle, and masters of denial, and it’d be a shame for coding machines to be too like us. (Biased algorithms, anyone?)
What keeps more people from contributing to open source? As anyone who’s participated knows, it can be a real pain. Most OSS is maintained in GitHub repositories that lack advanced user permission, delegation, or resolution features, and so rely entirely on unpaid philosopher kings (or queens) to do and be everything. For a sense of what that’s like, one only needs to read a post by Noah Lawson titled “What it feels like to be an open source maintainer”: “Outside your door stands a line of a few hundred people. They are patiently waiting for you to answer their questions, complaints, pull requests, and feature requests.” The line is endless. Tools help, “but at some point … one human being just doesn’t scale.”
For-profit companies are pouring resources into OSS, but it’s a drop in the bucket compared to what it needs to be. Companies that make their money up-selling OSS services are usually only concerned with their own fiefdoms. Microsoft, Apple, and Google offer code bounties for some OSS, and the EU began offering OSS bug bounties in 2019, but the budgets are paltry. In the EU’s case, it allotted just $1M to a pool for the entire global program.
OSS relies entirely on unpaid philosopher kings (or queens) to do and be everything.
If the state of the actual, physical roads and bridges in the developed world are any indication, we are not headed to a good place. America was gobsmacked with a D+ from the American Society of Civil Engineers in their 2017 Infrastructure Report Card. The ASCE has a conflict of interest, sure, but plenty of other organizations give the US’ physical infrastructure similar grades (we’re 60th in terms of road safety, according to the World Health Organization). Most developed countries underinvest in a similar fashion. The issue is unmistakably a human one — inertia is difficult to overcome, and the great tragedy of our OSS commons is that it helps make lots of money, but nobody in particular is paid to keep it safe.
Plus, if the fight for net neutrality offers us any guidance, and this is me being cynical, big corporations with a vested interest in perpetuating the OSS problem are going to come out of the woodwork and make finding a solution next to impossible.
A specific prediction: The same committee of US Senators who asked Mark Zuckerberg how Facebook makes money (umm, ads, sir) will get involved and pass a bill granting exclusive OSS maintenance rights to one company — say, the same folks who launched healthcare.gov — and it’ll probably just outsource it all to freelancers … on UpWork. And underpay them.
Is this the future we want?
The potential downsides of these three futures are enormous: A primarily freelance software development economy that’s poorly regulated and where big companies hold too much sway over developers’ outcomes. Runaway code creation that once started, can never again be slowed or maintained by humans. And a world of software built on digital roads and bridges ready to buckle and collapse. It’s a potential future — but is it the one we want? Perhaps it’s my nature, but I’m cautiously optimistic. To paraphrase Winston Churchill, we as a society will always do the right thing — but probably only after exhausting every other option.
If you’re into these topics and have ideas, let’s talk. Connect with me on Twitter at @SubspaceNet.
The future of software development: modular, intelligent, and rickety was originally published in Hacker Noon on Medium, where people are continuing the conversation by highlighting and responding to this story.