Software engineer Quoc Le grew up in rural Vietnam, in a small village that had no electricity till he was nine. But that didn’t stop him eventually becoming a PhD candidate at Stanford in 2007, working out a strategy that would let software learn things by itself.
Academics had begun to report promising but very slow results with a method known as deep learning, which uses networks of simulated neurons.
Le found a way to speed that method up significantly—by building simulated neural networks 100 times larger that could process thousands of times more data.
It was an approach practical enough to attract the attention of Google, which hired him to test it under the guidance of AI researcher Andrew Ng.
Without any human guidance, the system had learned how to detect cats, people, and over 3,000 other objects just by ingesting 10 million images from YouTube videos. It proved that machines could learn without labored assistance from humans, and reach new levels of accuracy to boot.
It’s perceivable that one day, software code and applications could be written without human intervention, but the reality is likely decades away and we will start to see a more hybrid approach making its way into software development. Using AI driven computer programs and workflow tools to assist the developer, and achieve the goal of increasing their productivity.
Developers can now build code more quickly and more reliably than previous generations. Deploying software into users’ hands with greater speed and agility.
As the iPhone celebrates its 10th anniversary, it’s clear the software development landscape has changed dramatically over the past decade. Self-driving cars, self-landing rockets, and self-flying drones are just some of the innovative end-user products that usually dominate the headlines. But they still have software at their heart, and fantastic engineers that lovingly coded each line.
The world around us is getting smarter, and so too are the tools we use to create software. Improving the speed, quality, and reliability of software delivered into user’s hands.
The next generation of software development tools
Traditionally, developers have relied upon their users to spot problems they encounter when their apps are in production, but all that’s changing as development tools grow in sophistication.
A recent report by Tricentis identified 548 recorded software fails in 2016 hitting the headlines, impacting 4.4 billion people and $1.1 trillion in assets.
It’s clear that even in large enterprise organizations with massive testing and analysis tools in place, bugs have a habit of sneaking through uncaught. Affecting the end user experiences of the customers these companies work so hard to delight.
Software intelligence and error tracking tools that can tell you what’s wrong with your application and why are already used by the world’s most innovative companies, and they’re going to get even smarter still.
Negating the need for users to report problems, these tools are telling developers directly when to pay attention and where the root causes of issues ultimately lie through deep diagnostic analysis. Skirting around slow or misinformed customer support teams and going straight to the people who can take action.
Engineers can be allocated to building new features, functionality and products rather than maintaining them, giving them an unparalleled view into how their applications are behaving out in the wild.
As applications are becoming more complex, development and analytics tools likely know more about your software and customers than you do.
Now there will be no excuse for shipping crappy software.
The rise of the bots and artificial intelligence
And if you think that artificial intelligence is here to slowly and systematically steal your job, perhaps it could be offering you one instead.
FirstJob’s AI-powered recruitment assistant Mya intelligently engages with applicants through the hiring pipeline. Recruiters only need to intervene where the assistant can’t handle a specific input and this enables organizations to process more applications in a shorter timespan.
This type of artificial intelligence and smart learning is becoming more and more prevalent in the tools we use to create and maintain software.
Just look at automated insights from Google for a prime example of how trawling through a haystack of data is now as simple as asking a question.
Functionality like this will be prevalent in future software applications, with the aim of making staff smarter and more productive. Empowering them to make better decisions rather than replacing them entirely.
After Forrester Research surveyed 25 application development and delivery teams, respondents said AI will improve planning, development and especially testing.
Software developers will be able to build better software, faster, using AI technologies such as advanced machine learning, deep learning, natural language processing, and business rules.
Continuous integration and delivery is also picking up speed as teams start to shy away from big, scary release cycles in favor of more iterative and smaller deployments. With many now shipping updates, feature releases and bug fixes several times a day.
According to one study, high performing teams who have implemented a continuous deployment delivery model have gained an even greater advantage over the past year. Recovering from production and infrastructure outages quickly and preventing failures in the first place.
This is likely giving them an advantage in satisfying their customers, because they have many more chances to deliver new value, and what they release is of higher quality. The result is faster time to market, better customer experience, and higher responsiveness to market changes.
The future of software development
Software engineering and web development have seen massive innovation over the past few years. Teams are shipping code faster than ever, with greater quality and with greater complexity.
AI and software intelligence tools aim to make software development easier and more reliable for frontline software engineers rather than steal the jobs of traditional programmers.
However, teams that are slow to adopt these innovations and new methodologies stand to lose out to their more nimble and capable competitors.
So what will software development look like ten years from now?
I guess we’ll have to wait and see.