A Guide For New Programmers (Part 3)
9 min read
The aim of this blog post is to provide some guidance on questions to ask yourself if you’re starting from scratch. This is the #1 topic most people tend to send me questions on, but is one that I also cannot provide a succinct response to, because it’ll differ for everyone. This post is my attempt to provide an answer in a more helpful way.
What I’d do if I was starting out today
If I were to start again from scratch today, here are the list of questions I’d be asking myself to get a sense of the direction I need to take. In order:
- Why do I want to learn programming?
- What goal do I want to accomplish as a first step?
- What areas of tech / programming am I most interested in?
- What are the skills within this area that will best enable me to get to where I want to go?
- How should I prioritise the learning of these skills?
Once you’ve answered question 5, you should have a list things you want to learn and what to learn first. This is where part 2 of this blog post series kicks in. 😀 As the questions above might seem a little abstract, I’ll walk through each one giving some examples along the way to help illustrate my thoughts.
Question 1: Why do I want to learn programming?
The world of tech and programming is absolutely massive, with an infinite number of things you could learn. Being able to articulate why you want to learn programming will go a long way to giving you direction and helping you filter out a lot of what you think you might want to learn.
The other thing to note is that learning programming is a long road, and it can be difficult and frustrating at times. You’ll need to be motivated by something to ensure you keep going. Knowing why you really want to do this can be a good driving force for when times get tough. The deeper you’ve thought about the why, the stronger its hold will be on you - this is something you really want to connect to on a deep, emotional level.
Some examples might be:
- I want to make a career change from finance to tech because....[fill in the blank].
- I want a job that allows me to work remotely and with flexible hours, so I can spend more time with my family.
- I would like to increase my efficiency at work so I can spend my time learning new skills that will enable me to get promoted and increase my impact at work.
- I would like to publish a game on Steam and earn recurring revenue, so I don’t have to continue working 2 jobs.
Question 2: What goal do I want to get to as a first step?
Once you know your “why” (i.e. the direction you want to go), the next thing to determine is where you want to get to as a first concrete step (your first milestone on your journey). If your why was, “I want to make a career change from finance to wellness-tech”, your goal might be, “To get a job at Peloton”.
The main reason I think it’s important to clarify what your first goal is, is so that you can learn with a concrete purpose in mind. It will help you focus specifically on solving the problem at hand, rather than learning for learning’s sake.
- To make your goal stronger, add a timeframe and make it as specific as you can e.g. “To get a job at Peloton within the next 12 months, working on technology a user interfaces with on a daily basis”.
- To make your goal more achievable, set yourself up for success and think about what the smallest possible realistic representation of that milestone might be. i.e. don’t try to do too many things at once. Make it small, concrete and measurable so that you know when you’ve achieved that goal.
- Why: Increasing efficiency at work. Goal: Learn how to automate the transfer of data from CSV to company database, freeing up 4 hours in my working week.
- Why: Publish a game on Steam. Goal: Get a minimum viable game working on my computer by Christmas, with a single level, allowing players to collect coins.
Question 3: What areas of tech / programming am I most interested in?
The answer to this question might already be obvious to you from the answers you came up with in questions 1 and 2, but if not, I’d really encourage you to have a think about what areas of tech and programming really excites you.
Some of the main areas you might want to consider here are:
- Backend development - working with databases, servers and designing APIs.
- Frontend development - working with user interfaces and experiences.
- Systems engineering and reliability - overseeing the entire system and ensuring all parts are working seamlessly together.
- Games development - designing and developing games.
- Hardware development - working on the interfaces between electronics and mechanical system elements.
Whilst you can, of course, decide you want to go after more than one area, like full-stack development (both backend and frontend), I’d really encourage you to choose one area to lead with as a first step. The main reason for this is focus, especially in the early days when you’re learning everything from scratch and there is a lot to learn.
Side note: If you are interested in full-stack development, my humble opinion is to first start learning backend development and understanding data transfer between databases through to APIs to be consumed by the frontend. It feels easier to then continue with learning frontend development. I’m possibly biased because that was the path I took. 😝
Once you’ve identified the area you want to start with, revisit question 2 to see if there’s anything you’d change in your answer to make it more precise / clearer. It’s an iterative process, with the goal being to determine the smallest next step you can take, that still remains a meaningful goal to you.
Question 4: What are the skills within this area that will best enable me to get to where I want to go?
The answer to this question will really depend on what you answered for question 2. It will also be clearer, the more precise and detailed your answer to question 2 is. If you’re having trouble answering this question, go back to question 2 and have a deeper think about how to define a smaller goal. 🙃
- Goal: get a development role at Peloton. Area: frontend development.
- At this point, do some research to find out what Peloton’s tech stack is. You might find out they use React + NextJS on their website, and React Native for their mobile app. This might be sufficient for you, but you might also want to go back and revisit your goal to be more focused.
- Revised goal: get a frontend development role at Peloton, working on their mobile app. Area: frontend mobile development. Skills: React Native.
- Goal: learn how to automate the transfer of data from CSV to company database. Area: backend development.
- Let’s say your company uses Postgres for its database. One of the necessary skills would be SQL. You’d then have to do some research to figure out how you might be able to transfer CSV data to SQL commands. From your research, you might learn that you can use Python or Ruby. You then need to make a choice at this point, perhaps taking considerations like what backend languages your company uses, or what the most popular language used in industry is today, into account.
- From here, you might say the skills you need are Python and SQL.
Question 5: How should I prioritise the learning of these skills?
If you’ve managed to nail it down to one skill - well done! Check out my second post in this series if you need some guidance on how to learn something new. If you’ve landed on more than one skill to learn, you can either: (i) try to be more precise in your goal / area and therefore skills needed, or (ii) just roll with it, because honestly, it might just be necessary.
If this is the case, my suggestion would be to prioritise the skill you find most interesting or easiest in the first instance. What you want in the early days are quick wins, to prove to yourself that you can do this and that you’re progressing in tangible ways. This will give you the motivation to continue learning and pushing the boundaries of your knowledge.
As you make progress in the first skill, you might then choose to commence learning the second skill in parallel. I’m a strong proponent of learning with the aim of solving your problem, so going back to the example above, the aim here isn’t to learn everything about Python, and then everything about SQL - it’s about learning enough Python to understand how to manipulate CSV data, then learning enough SQL to save that data to a Postgres database.
As I’ve mentioned in my previous posts, this is just my thought process and opinion on how to go about learning programming. If this helped you in anyway, I’d love to hear about it. If you have any suggestions on how I might improve this post, please do also let me know.
And finally, good luck! You’ve got this! 💪🏻😃