I’ve struggled with coding tutorials for a long time. My difficulty with them is not from lack of trying. I’ve got some thoughts on why many people don’t click with them and what could be done differently.
Why do people learn to code?
We have to understand that most people are not necessarily learning to code for fun. They’re usually taking online coding tutorials so they can accomplish a professional goal – often becoming a software engineer.
Would-be coders are essentially getting into the game so they can pursue a prestigious and lucrative career as a software developer. Software developers earn an average of £38,000 in London and £30,000 in Manchester.
It’s not fashionable to admit it in some circles, but software development is damn good money. That’s why more people want a slice of the pie. (Plus, you know, it’s good for society).
New coders hit walls when they try to understand what a software engineer is, because tutorials are geared towards coding only. They are constructed based on an outdated mental model that one person could be responsible for building a whole website or application.
In reality, modern web applications require whole teams to build them. Software systems are now so complex that each member of a team must be highly specialised in a particular area.
And, the bigger the project, the more developers are drafted in. Suddenly you realise the big companies out there – Facebook, Google, Twitter – employ thousands of developers. So much for the lone coder.
The importance of computer science
Really, would-be coders should be learning the principles of software development or software engineering (I use these interchangeably but there is a subtle difference). The field of engineering is applied science, and the field of software engineering is applied computer science.
Techopedia defines computer science as:
…the study of both computer hardware and software design. It encompasses both the study of theoretical algorithms and the practical problems involved in implementing them through computer hardware and software. The study of computer science has many branches, including artificial intelligence, software engineering, programming and computer graphics. The need for computer science as a discipline has grown as computers become more integrated into our day-to-day lives and technology continues to advance.
Software engineering is about applying agreed-upon computer science principles to build something that solves a practical problem. The creativity lies in how you solve a problem (and engineering is a fundamentally creative discipline).
It’s unfortunate that most coding tutorials focus solely on teaching people ‘how to code’ without explaining why they should code. Computer science is usually casually dismissed as being fuddy duddy (the prevailing wisdom being that students normally take CS degrees, and degrees are elitist). But understanding computer science is essential to becoming a software engineer.
Not teaching coders about computer science principles results in much lost time and confusion.
Software engineering teams
It’s so important to look at the why, because that tells us why software engineering teams are structured the way that they are.
When most people think of software engineering, they think of building applications that are aimed at the end user. This is just one branch of software engineering but it’s the most visible and popular at the moment. You should at least know about this branch so you can make the choice to go a different way.
For example, Deliveroo is seen as innovative for the way they have transformed the way we consume food in cities. But we have come to expect to be able to order anything we want online and take advantage of gig economy labour. Software like this is delivered via a mobile app with a front end, back end and software interface.
Software engineering cannot be seen in isolation from the social context – the meteoric rise of software in the technology industry (formerly dominated by hardware). It’s far more than simply cranking out code.
The traditional way that coding tutorials approach the discipline is slowing down the career professions of many would-be developers.
Systems over coding tutorials
We need to move away from the model of a lone coder because that is just not the reality in the business landscape.
It works when you’re just tinkering with HTML and CSS because you theoretically might build your own website with limited functionality. Or you might be a designer, and want to add a bit of coding to your repertoire.
As soon as you start getting into programming (actual applied computer science), the tutorials don’t work so well. Even if you’re a freelance developer, the likelihood is you will still need to work as part of a team. You will need to know what you don’t know.
And why.
Why do we want to write this code in the first place? So we can build applications that fit into the ecosystem of existing apps and platforms that comprise our digital lives. We have defined how services are delivered over the internet and now we need apps that solve gaps in those services.
What you should learn
Don’t get me wrong – I have benefited massively from tutorials.
It’s just that they taught me more about writing code than about becoming a software engineer, which was what I was really interested in. I didn’t really understand why we were writing this code and so I wasn’t motivated to finish the tutorials.
They should be teaching people about how to build applications as a team – how they will fit into the system – because that’s what most people are ultimately aiming for when they take code tutorials.
Then, you can take charge of your own learning.
You should learn:
- The basics of back-end programming for databases (eg MySQL or Oracle) where you store your information – overlaps with the next point
- Back-end programming for the application (eg languages like Ruby, PHP or Python) – plus how to use libraries/frameworks and run software on a server
- Front-end programming for the application interface (HTML and CSS)
- All about how to host your database on servers, plus database security
- How to hook everything up so it can send data back and forth
- Social coding tools like Github, Git, or TeamForge
- Development and testing production methodologies
Learning about the whole context of coding is important. Otherwise, new coders are taking coding tutorials but becoming divorced from the reasons why we code. We’re only attracting developers who flourish at blindly sticking to a learning program and following orders – and who will perpetuate the current status quo of becoming a cog in the system.
This leads to the tech industry continually gazing in on itself and creating more problems than it solves.
We are trying to help the tech industry become more diverse and part of the way to do this is encouraging more under-represented groups to learn to code.
While this approach is often admirable, too many people are falling by the wayside because they find ‘learning to code’ so impenetrable – perpetuating the myth that not everyone is technical.
Maybe some people can learn with only blind faith to guide them, but I need to know exactly why I’m doing what I’m doing (in case I decide there’s a better way to do it). Just ‘learning to code’ with assurances it’s worthwhile doesn’t really cut it for me.
Photo by Kobu Agency on Unsplash
great thanks your article is very useful
The great work. Your article is very update and informative. You describe new and update coding technology. I learn new this from this article. Thank you.
Wonderful, thank you!