The way we teach coding is all wrong. Here’s how it needs to change
Becoming a software developer is hard. And even worse, aspiring coders aren’t necessarily being taught the skills that employers value and expect, says one CTO.
These days, it seems everybody wants to be a coder. Lured by the prospects of big salaries, plentiful work and the chance to work for some of the world’s most successful firms, more and more people are seeking out new opportunities in the ever-evolving field of software development.
The growing popularity of coding, which saw something of a spike in 2020 when the pandemic highlighted the demand for software skills, has led to a boom in the number of coding schools and online bootcamps.
According to Career Karma’s 2020 Coding Bootcamp Market Report, 33,959 students attended one of 105 bootcamps in 2019. These schools are designed to deliver intensive courses over the period of a few months and leave students with a working, and ideally hireable, knowledge of software development when they come out the other side.
But this crash-course approach doesn’t necessarily set aspiring developers up with the skills or experience they need to succeed. As the leader of a custom software development firm and a professor teaching software engineering, Max de Lavenne, founder and CTO of Buildable, knows the skills and experience he’s looking for in graduates.
SEE: How to become a developer: A cheat sheet (TechRepublic)
He also knows that budding software developers aren’t necessarily being taught the skills that employers value and expect – not just at coding bootcamps, but also within universities and software certificate programs. As a result, Lavenne says, developers are being misled – and ultimately disappointed – by the institutions claiming to position them for success.
“Software development is an awesome job – I have been so fortunate to be able to make a successful career out of my love for coding – but it’s not just about learning a coding language and watching the dollars roll in,” Lavenne tells TechRepublic.
“Becoming a software developer is harder than the average person might think – and it’s expensive.”
It’s hard to resist the allure of the reportedly astronomical salaries developers make working at tech behemoths like Facebook and Google. However, Lavenne says the reality rarely lives up to the fantasy for graduates fresh out of coding school.
What’s worse, in many ways students are being set up to fail, says Lavenne, who has himself seen new recruits who can’t even clear the low bar of a first interview. “We’ve seen people apply to positions here where they do these three-month trade school where they’re promised they will learn coding. Then we find out that they don’t know anything,” he says.
It’s not just students being let down, but also working professionals getting into software development after making a career-change.
SEE: The best programming languages to learn–and the worst (TechRepublic Premium)
He says: “We all know the drill: Come to *insert college* where you’ll learn the tools to land your dream job and make $100K fresh out of school…A newly graduated software developer is not always going to command top-dollar, and universities need to make this clear to them.”
The disconnect as Lavenne sees it is that students are mostly just being taught the fundamentals, and are lacking a lot of the hands-on, tactical experience that connects to marketplace needs.
Educational institutions need to focus not just on the tools of the trade, but also on the trade itself, says Lavenne. Learning to code is, after all, just the tip of the iceberg; Lavenne likens it to the difference between “picking up a dictionary and putting words together”, and actually learning the grammar and culture behind a language.
“Just because you can mow a lawn doesn’t mean you can run a landscaping business,” he says. “Only about 40% of software development is writing code.”
“Our field is more nuanced, varied, and rewarding than many realize—and it’s high time that degree programs educate students holistically to be great software professionals—not just good programmers.”
The programming languages that some courses focus on are also a source of contention, with Lavenne suggesting that ‘hot’ languages aren’t necessarily ones that are used in common, everyday development scenarios.
“Languages are good for what they are, but they [schools] definitely need to broaden the scope. Some languages like Python seem easy on the surface, but are not actually that easy to write cleanly. People can develop bad habits, and bad habits are very difficult to remove.”
Some languages are better than others at preventing graduate programmers from adopting bad habits – C# and Java, for example. Others, Lavenne says he discourages developers from using entirely. “I don’t want an engineer writing in C or C++, and the reason is it’s too dangerous of a language,” he explains.
“There are so many potential errors they can create that modern languages like C#, TypeScript, Java, Python can prevent…We don’t want them writing in those languages at all.”
Connecting to marketplace needs
So what exactly are the skills and attributes that make budding developers marketable to employers?
Hands-on experience will always be a deciding factor – though Lavenne acknowledges that the majority of students will be lacking this by default. Instead, he suggests university courses and coding programs encourage as much project work as possible – which will at least equip them with a working knowledge of the various components of the software development cycle.
There are also a handful of specific tools and technologies that Lavenne feels that every aspiring developer should have under their belt.
“Putting an emphasis on JavaScript and TypeScript is important; Node.js is a moving force of the world right now in web technologies and others. People have to start learning TypeScript in school,” he says.
SEE: C++ programming language: How it became the foundation for everything, and what’s next (free PDF) (TechRepublic)
“On the skillsets for languages that are super marketable; the technologies that are very marketable today are web and APIs. Every single software engineer that will come out on the market will work with APIs – they have to speak APIs, they have to speak JSON. XML is fading out into the distance; the world is speaking JSON from computer to computer, and REST APIs are everything.”
Today, any application being built is going to be distributed and on the cloud. This means that deep and specific knowledge of cloud platforms is going to put a developer in good stead with potential employers.
“When people come to us and say, ‘I’ve worked with Amazon Web Services or Google Cloud Platform or Azure ‘ – immediately we’re interested,” says Lavenne.
The solution to a teaching systems that, as Lavenne sees it, sets students up to fail, starts with the syllabus. Teachers and professors might be hard-pressed to update these, give how rapidly the software industry develops, yet at present Lavenne feels that many universities and coding programs are stuck in the past.
Lavenne recalls one now-retired professor from his own teaching experience who, in the mid-2010s, was still “teaching the stuff that was being taught in the early 90s”.
He says: “These teachers take classes after classes after classes – they don’t want to rewrite the syllabus every year, so there’s a little bit of resistance to adapt.
“But the truth is, the technology changes so fast they have to adapt, they have to update the course material, because what is relevant this year might not be relevant two years from now. We live in an industry where change is constant.”