How to learn to code as a Stay at Home Mom

You don’t need to pull all-nighters or wear fleece gilets (but you can if you want).

Photo by CoWomen on Unsplash

I started learning to code in my mid-30s when my son, Cian, was four and I was doing my Media Studies Masters degree. I do work but it’s freelance from home and I homeschool Cian, who’s now six, too.

What I’m outlining doesn’t replace a college course or a bootcamp, but it will hopefully enable you to use code to solve your own problems, and to give you a decent grounding if you do decide to pursue it professionally. Robin Hauser Reynolds, the director of a documentaryon women in technology, says that one reason why women often don’t make it beyond introductory programming classes in university is because the male students are often ahead of them as they’ve spent a long time gaming and have accumulated knowledge of the basics. The women also often lack “ambient belonging” where they don’t relate to associated but not essential subjects like science fiction and gaming. However, mothers are amazing problem solvers and this, combined with coding skills, can lead to training for a new career when the time is right for them.

I use Python but I believe most of the tips I outline will apply to Javascript or any other common programming language. I had previously done a lot of work with WordPress, which meant I could adjust other people’s PHP and JavaScript and understood things like loops and data structures. I started using Python to light things up on a Raspberry Pi and then built a robot using the Pi which introduced me to Flask for web interfaces. After that I learned a whole lot more Flask for my MA final project, along with MongoDB and API wrangling. I know quite a lot now, but it was all so gradual it didn’t feel like hard work.

I tend to get up early and write code most days and during the day I write down ideas and read articles. If I need to do deeper work I get a day or two a week when my husband’s home and I can spend more time on it.

(snip)

Google everything

That’s what the professionals do. And keep Googling until you find a tutorial or Stack Overflow answer that you understand. If you don’t, go on to something else and you’ll learn enough that eventually you’ll be able to understand the original thing.

Decide what you want to do in advance

I find writing down what each line of code is supposed to do as a comment then writing the code underneath it once I’ve worked out how to do it. This has the advantage of making sure your code is commented which is essential when you come back to it.

Have smaller goals

I am trying to write a function a day for the main project I’m working on. Sometimes I do a lot more and that’s great but I’m always making steady progress. It’ll also force you to write smallish functions that you can test easily and then string them together when you’re done.

Make it easy to see what you’ve done before

Use comments in your code, and use a Todo list or a kanban board like Trelloeven if you don’t need it to remember what to do, because you can use it to see what you’ve done.

Be able to take advantage of any opportunities

Have a Python app on your phone and you’ll be able to do your one function on there and copy it into your actual project later. Or keep a notebook with you and write down precisely what you want your program to do. I planned this year’s irrigation system waiting for a train the other day.

Move on if it’s hard

I said this above but it bears repeating. If there’s an aspect you completely don’t get, ignore it and use what you do know how to do to solve your problems. If it’s that essential, eventually you’ll have a problem that you can clearly define where it’ll be obvious how to use the previously head-twisting technique. I’m thinking of things like machine learning with TensorFlow here. Just use AutoML until it can’t solve your problem anymore, then you’ll have a good understanding and will be able to work it out.

Only do things once

Save copies of things you do repeatedly so you can just copy and paste into another project, or, keep a note of what you’ve done in which project so you can easily find it again.

Hardware is good

Particularly the Raspberry Pi I’ve found. But physical computing, as it’s known, really helps you visualise what you’re trying to do. Plus the Raspberry Pi resources are great — I used the Physical Computing and Flask tutorials to get started. You can also use MicroPython on the BBC Micro:Bit and CircuitPython on many low-cost boards from Adafruit.

Use these tutorials to get set up

I set up a Crouton Linux environment on my Chromebook using this article. I’ve set this up as well but I still usually use Crouton. I’m using Ubuntu, I have no experience with any of the other flavours.

RealPython is a brilliant site and they have a tutorial here covering installing Python on Windows, Mac or Linux.

This is how to run your scripts.

This is the first bit of Python I ever wrote, on a Raspberry Pi.

Here’s some ideas for small projects.

This is a good introduction to Git and GitHub. Git is a way of keeping track of what you’ve done with your code so you can undo it when you screw up, and GitHub is a web service where you can keep your code as a backup or to share it.

Get these books

These are the books I’ve either bought and found useful, or borrowed from the university library until they made me give them back.

Learn Python the Hard Way

Automate the Boring Stuff

Data Visualisation with Python and Javascript

Web Development with Flask

MongoDB: The Definitive Guide

*se full story by MEDIUM