The field of software development is changing.
What’s changing it? The same thing that’s causing huge disruptions to scores of other industries around the globe – artificial intelligence (AI).
At present, the role of software developer is a highly-prized job. Developers hold this prestige because many employers and business owners believe that only well-trained and highly-skilled human beings can write great code. However, with the advancements being made in AI, this gig might soon be up – unless developers commit to becoming something more.
Traditionally, developers have written software as a series of hard-coded instructions to a computer – if X happens then do Y. Line by line, the human programmer – using languages such as Java, Python, Ruby, etc. – instructs the machine in how to behave or achieve a desired outcome.
Soon, though, many – such as Andrej Karpathy, former Research Scientist at OpenAI and now Director of AI at Tesla – believe AI will take over much of this menial work as self-writing code becomes a reality. With advances in deep learning, neural networks are being built that can learn which instructions or rules are required to make software function as intended – in other words, software may soon be able to write itself.
“Neural networks are not just another classifier,” writes Karpathy, “they represent the beginning of a fundamental shift in how we write software. They are Software 2.0.”
In a Software 2.0 scenario, developers may not write code any longer – at least not in the way they do so now. Rather, they’ll be feeding data into machine learning (ML) systems which do not need programmers to give the computer rules for how to make decisions and take actions. Instead, the ML model deduces from the data what features and patterns are important, and automatically produces the code in whatever the appropriate programming language may be.
Author, scientist, and Google Research Engineer Pete Warden agrees with Karpathy in his recent blog post entitled ‘Deep Learning Is Eating Software’: “Instead of writing and maintaining intricate, layered tangles of logic, the developer has to become a teacher, a curator of training data and an analyst of results. This is very, very different than the programming I was taught in school, but what gets me most excited is that it should be far more accessible than traditional coding, once the tooling catches up. […] There will be a long ramp-up as knowledge diffuses through the developer community, but in ten years I predict most software jobs won’t involve programming. As Andrej memorably puts it, ‘[deep learning] is better than you’!”
With the advent of AI and automation, the reality is that more repetitive programming tasks – such as writing code – will likely soon be taken over by machines. Microsoft’s recent acquisition of GitHub is seen by many as another sign that the golden age for developers will soon come to an end. With access to the largest database of man-made code ever written, the belief is that Microsoft will use it to train its artificial intelligence to create self-writing software programmes able to produce software of better quality and integrity than even the most experienced senior full stack could ever hope to accomplish.
But does this spell the end for software developers?
Not at all. Rather, AI has the potential to make developers smarter. Machine learning systems will become experts in a software programme much faster than a human being would ever be able to. Testing will become more efficient, with AI automatically identifying flaws and bringing up past iterations and lifecycles for reference so current projects can be improved. AI may also eliminate the need for generic boilerplate code, reduce the amount of time wasted on repetitive typing tasks, and boost productivity.
All of this gives developers more time to do what they do best – solve problems.
With AI handling the menial tasks, developers are free to focus on more pressing business objectives, such as building relationships with clients and communicating their precise needs to the team. Change is coming – but if developers can anticipate and adapt to it, the advent of AI and programming automation can be beneficial to a dev’s career, not a threat to it.
What this ultimately means, however, is that developers will need to have to a skillset that stretches beyond just knowing how to code. In fact, a big focus needs to be placed on soft skills – i.e. skills that don’t involve coding, but are nonetheless imperative to becoming a more proficient developer and more valuable team member as a whole.
These are essentially people skills that will remain safe from AI – at least for the foreseeable future. Let’s take a look at what they are.
Communication with Stakeholders
Software development isn’t just about talking to computers. A good dev is just as proficient at communicating with team members (both in-house and remote), partners, CEOs, project managers, supervisors, and, of course, clients.
Being able to unravel the client’s vision and then communicate it effectively to the team in a way that throws up great ideas is a skill that will always be required of software developers – even when the robots are handling the bulk of actual programming tasks. Understanding your clients’ unique business requirements and then presenting your team’s ideas back to them in a way that gets them excited is a huge part of the developer’s job – and always will be.
As such, great written and verbal communication skills are a necessity for all developers looking to advance their careers. Clients should be treated as part of the team. They need to be involved in daily discussions, consulted when problems are encountered, and kept in the loop at all times. This involves regular calls, emails, status reports and weekly updates – all of which require developers to be expert communicators, and just as good at listening as they are at talking.
Giving and Receiving Feedback
Communication is perhaps the mother of all soft skills that a modern software developer needs – and the ability to communicate effectively overlaps with another important skill: teamwork.
On any team, the ability to work with others is essential – and that means being able to both give and accept feedback in a constructive and professional manner.
Giving positive feedback is easy – it feels great for both the person giving the feedback as well as the recipient. Nonetheless, sometimes negative feedback must be given – and developers need to acquire the skills necessary to deliver it in way that will lead to improvements, and not demoralise co-workers or employees.
When giving feedback, it should always be based on facts – not speculation – and delivered as soon as possible. The focus should be on giving actionable advice (not just criticisms), and, where possible, be done face-to-face – even if you have to use Skype or similar. Written feedback – especially when it’s negative – is often misconstrued and runs the risk of being taken for personal criticism. By communicating face-to-face, the recipient is able to ask questions, and the whole procedure will feel much more genuine.
When it comes to receiving feedback, the same level of professionalism needs to be exercised. You need to listen carefully – without arguing or interrupting – and always evaluate what you’ve been told before responding. You may not immediately agree with what’s said, and it’s easy to become defensive when on the receiving end of a critique. However, the best developers thrive on feedback, ask for it often, and regard it objectively as an opportunity for improvement.
The Ability to Adapt to New Conditions
Software development is not a career suited to the intellectually idle. Only those who remain open-minded, eager to learn, and willing to adapt to new conditions, methodologies and emerging technologies (such as AI) will be successful in the long run.
Being a hater of new tech is not constructive – artificial intelligence is coming to the development world. But this only poses a threat to your career if you let it. Don’t fear the new – embrace it, learn about it, plan for it, involve yourself in it. Go to conferences and meetups. Chat with other developers – both online and offline – and begin to gain a true understanding of the disruptions that are inevitably coming your way.
The advent of AI in software development should be cause for excitement, for it will augment – not replace – existing developers, and lead to many new enlightenments in programming and better software being built. Those who can adapt to the new paradigm will not only survive but thrive – so stay hungry, and learn all you can.
Advancing your career means moving up the ladder – and the higher you go, the more people there will be who rely upon you for guidance, support, and leadership.
Good leadership is a continuous journey of learning, teaching, and growing. The best leaders help their teams – not just dictate to them. They do this by acting as coach and counsel, and by developing programmes that motivate and inspire their teams to achieve the best possible outcomes.
A team leader understands that problems often arise, and helps the team to both overcome and learn from them so they do not happen again. Importantly, good leadership means refraining from micro-management, as this can be extremely demotivating and lead to a culture of distrust within the workplace. Instead, the good leader builds autonomy by providing team members with clear goals and allowing them to find the best ways to achieve them.
Leadership is also about delegating the most appropriate tasks to the most appropriate people, developing those people through training and education, and being sure to reward and recognise team members for their achievements. Ultimately, good team leaders build their authority by demonstrating their integrity and commitment to doing the right things for the right reasons. This inspires trust, loyalty and dedication, all of which lead to better results.
As AI in software development gradually comes to fruition over the next decade or so, developers may take some solace in remembering that the it is the menial tasks – not jobs – that will first be replaced by machines. The days where you simply tell a computer to create a whole programme from scratch are still a long way away. Instead, AI will arrive to give developers an incredibly powerful set of tools to create better products – and that’s something to be excited about.
However, it does mean that the job role will evolve, and, as the act of writing lines and lines of code becomes less important, soft skills like problem solving, communication, collaboration, teamwork and leadership will become more important to anyone who wants a long and rewarding career in the industry.