Our neighboursneu describe being able to code as having a superpower, and we have to agree with them. Software is eating the world
. Pretty much every industry and walk of life has seen the impact of software — health, politics, travel, arts, entertainment and on and on.
The problem, at least here in Scotland, is coding hasn’t been taught particularly well. Certainly, for my generation, computing at school was largely how to use a Windows computer and the Office suite. Pupils didn’t get introduced to coding until they had ‘picked’ computing as a subject and when they did it was using True BASIC. That leaves a huge pool of people that have either never written a line of code, or the code they have written is pretty far removed from what is useful today.
These people are now in their late twenties and thirties and will likely have a host of ‘adult’ commitments like a full-time job, a mortgage/rent and perhaps a family to look after. They can’t afford the luxury of going back to uni or taking part in an expensive conversion course so what can someone like this do to learn to code in a way that can fit around their lifestyle?
1. Get the right tools for the job
Imagine trying to build a fence with a kitchen knife instead of a saw. Like any trade coding because much easier when you have the right tools for the job. Fortunately, the right tools for the jobs are readily available and affordable.
Hardware-wise you need a decent computer ideally with wifi and a high-resolution screen, but these are nice to have rather than essentials
. More importantly, is the operating system you run on it. It has to be something modern, so sorry for the bad news if you’re still holding onto Windows XP.
At Add Jam we use Mac hardware and macOS. Why? It’s not just the shiny hardware and nice interface that draws developers to the macOS ecosystem, its because its a ‘Unix system’. Being a Unix system is important as many of the applications we will develop will run on a Unix environment called Linux.
Out of the box, a Mac will be pretty much ready to go with some development. Alternatively, if you don’t already have a Mac and can’t get your hands on one we would recommend installing Ubuntu on a PC.
Whatever the platform there’s a few things you’ll likely want to have:
- A good editor, we recommend Visual Studio Code (free) from Microsoft — https://code.visualstudio.com
- Get comfortable using the Terminal and using commands to navigate around your computer — https://blog.teamtreehouse.com/introduction-to-the-mac-os-x-command-line
- A modern web browser, Chrome or Firefox are good browsers for web development
And that’s about it for getting started.
2. Get the right foundations
Coding is built upon some common conventions. You might have heard some of these terms before — variable, argument, function, types. Most of these concepts carry across languages, so don’t get too bogged down in the language you choose.
Some useful resources for learning these conventions include:
- Ruby Koans — http://www.rubykoans.com
- Codecademy — http://codecademy.com
- LearnJS — https://www.learn-js.org
Everyone learns at their own pace, so I won’t suggest a time limit on running through these sorts of exercises. I will say, take your time running through them and if you’re ever unsure about something run through the tutorial again. The aim here is we learn the difference between a String, an Integer and Boolean. We learn about arrays, objects, conditionals and loops. This might seem a world away from building your own app or game but these fundamental concepts are the building blocks for much bigger things.
Each of these languages will have an ecosystem around it with widely used frameworks. Frameworks are a collection of tools and conventions that make it easier to make products. Think of it as cajun seasoning, there’s a group of herbs, spices and blends that come together to make a seasoning that can be used in recipes again and again. If you wanted cajun seasoning from scratch you’d have to get the component parts each time starting from zero.
3. Work towards something
Personally, I find it useful to learn by actively working towards a goal. Start by picking a tutorial online that works towards building something, maybe try to make a ToDo list or something that displays the weather in an interesting way or something to track movies you’ve watched. Don’t get idea’s that are too big too soon — it will just discourage you.
Where do you find tutorials like this? It’s 2019, obviously YouTube. YouTube has so much good learning content. Some good channels to start with are:
- LearnCode.Academy — https://www.youtube.com/user/learncodeacademy
- thenewboston — https://www.youtube.com/user/thenewboston
- Treehouse — https://www.youtube.com/user/gotreehouse
Beyond that, you can get access to low-cost tuition from sites like:
- Treehouse — http://teamtreehouse.com
- Udemy — http://udemy.com
- Ray Wenderlich — http://raywenderlich.com
- GoRails — https://courses.gorails.com
All these courses are not only extremely affordable but you can work on them at your own pace and fit them around your commitments.
4. I’m stuck
going to get stuck. Learning to code isn’t trivial. There will be concepts you get stuck on or typos that will trip you up (you’re not a real developer until you’ve wasted an hour tracking down a missing semicolon or comma). When you do get stuck don’t get too frustrated. This is part of the learning experience and there’s help out there.
I’ll let you in on two secrets to getting a Computer Science degree:
- Be good at Googling
- Use Stack Overflow
Knowing how to Google to find answers is a skill in itself and something you just need to keep doing to get better at.
Stack Overflow is a question and answer platform aimed at developers. Ask a question and other developers around the world will provide you with answers. Simple. No strings attached. And actually, you’ll quickly find you don’t need to ask the question because someone else already has.
If you don’t get much progress with Google and Stack Overflow you can talk to a real person. Around the world, there are coding clubs and meetups you can access to get help from volunteers so get looking on Eventbrite, Meetup.com and even Facebook to see what is going on around you.
Around me in Glasgow there is:
- CodeBar — http://codebar.io
- Code your Future — http://codeyourfuture.io
- CoderDojo — http://coderdojoscotland.com
- Glasgow Coding Meetup — https://www.meetup.com/Glasgow-Coding-Meetup/
- Ladies of Code — https://www.meetup.com/Ladies-of-Code-Glasgow/
All the above to my knowledge are free to attend. I’d also highly recommend getting to a hackathon. Hacka-what now? Don’t worry a hackathon isn’t about stealing people’s credit card details or breaking into the pentagon. A hackathon is about getting a group of people together to ‘hack’ away at a product (like hacking away in a shed to build a spice rack). These are a great place to learn as you go, form a team and get working with an eclectic mix of people.
Hackathons of note around Scotland are the ones run by Product Forge — http://productforge.io
5. Get shipping
Once you’ve built the output of your tutorials, its time to get it live and get some people using it. This is the hardest step so far. Being able to put something you’ve made out there for the world to see, use, critique, ridicule and copy. This is a daunting task but it’s crucially important for your learning and development.
Going on the assumption we’ve made something for the web you’re going to need to host it. Hosting requirements and the process for doing it will depend entirely on what you’ve made and at this stage, you’ve learned to code enough to have something to ship. You don’t want to get bogged down in server configuration so something like Heroku
are our best bets. Heroku makes it easy to deploy apps in most languages/frameworks and Netlify is great for static sites and web apps using things like React.
The other thing I would strongly recommend is putting it on Github.
Hands up, I’ve totally glossed over git and its something you should learn. Git is a means for teams to collaborate, it keeps revision of your code for if you ever make a mistake you can always go back. Git is an integral part of how most modern software teams work and is backed into their workflows and business processes.
Useful services for learning to use git are:
GitHub is a service built around git that has become a de facto place to discover open-source projects and has elements of a social network for developers. By putting your code up there people can see it, comment on it, critique it or possibly reuse it. Having the confidence to use and interact on GitHub is massively important to learning to code and having a career in software.
We’ve given a breakneck tour through learning to code and glossed over a lot. We’ve not mentioned HTML/CSS, we’ve scraped the surface of tools you should use, hosting and we haven’t spoken about design and using assets.
There’s loads we could go into more detail on so that’s where you come in. Let us know what you would like to know more about and we can write it up, do a tutorial, example projects or even a YouTube video or two. Either write a reply or drop us an email (email@example.com).