A Mini-Guide to getting started in Coding/Python (Part 1)

“…you could take a multitude of courses and they would all teach you something different – probably because everyone has a different idea of what the basics should entail.”

Introduction

It’s been some time. Launch has slowed down abit as I prefer giving courses in person especially if they are consultative in nature. My fear is that an online session may dilute the objectives I hope to achieve in that span of 3 hours. If I had the time and willpower to do online videos, I would much rather make some general English videos on critical thinking and reading by going through some passages and picking apart the possible thought processes of the writers. That, to me, is at least useful to everyone and can be consumed by everyone as long as some minimum criteria are met in terms of age and grasp of the language.

In the past few weeks, since the start of April, I have returned to one of the few things I used to do – code. Unsurprisingly, I have grown rusty. I did spend quite a few hours on the topic two years ago (as I’ll elaborate later during the course reviews). Since the start of April, I’ve done 5 courses and am working on a 6th one at the moment. I don’t claim to be a proponent of ‘hyper productivity’ but there are good ways to manage your goals and motivation levels even in these trying times. We’ll discuss that during part 2 of this article but we’re going to focus on how to start and where to start in part 1.

Why am I writing this if there are articles you can easily read on what coding languages to start with? Because I find myself in this odd space where the people I talk to either 1) know nothing to very little about code or 2) have been coding for the most part of their lives or possess above average coding skills. It’s not unexpected, given the high barrier to entry of the skill, that people either stick to it for the long term or drop it quickly. As your life entails more commitments like work and family, having to look forward to doing ‘more work’ after your day job has ended can feel grueling. This article merely serves to give a perspective to the busy undergrads or working adults that wonder: should I pick coding up and where can I start?

To preface as blatantly as possible, coding is a skill that requires time commitment. Time commitment, practice and maybe, you get to develop one tiny program that you’ll be really proud of because of all the cumulative knowledge you needed to get there. So, before you even embark on this journey, let’s be clear: you won’t become a pro if you take some crash course somewhere that spoon feeds you code. Half the time, the learning comes from having to struggle with what you did wrong rather than looking at what someone did right. So, why? To me, the most important factor is to recognize and understand how code has pervaded our entire lives and yet, most of us know nothing about how the programs we use on an everyday basis work! Do we have to know how it works to live our lives? Probably not. But being able to pick apart (or at least conceptualize) the figurative plumbing beneath our incessant thumbing of our smart phones would shift your perspective and deepen your understanding of the world at large. Hence the thesis: even if you do not desire to become an expert in software development, you should at least be able to comprehend code when it is put in front of you. There are also obvious career benefits to being able to read code. It instantly creates a tangible barrier to entry to any job you may be looking to move towards. For example, you can choose to fight 100 people for a generic sales role, or you can choose to fight 10 people for a tech-related sales role. Some fintechs even require coding skills for sales roles, simply because you can’t sell a product you don’t understand!

I suppose if you’ve read so far despite my ranting you must have some interest in coding, so I shall dally no further. We’ll jump into the course reviews. The courses reviewed are courses that teach you Python. Since I only have more than basic knowledge in one coding language, here are my thoughts on Python: it’s beginner friendly, rather intuitive in its syntax and linguistic structure and there are plenty of modules that can help you achieve what you need (as opposed to languages built for a dedicated purpose). Once you understand the ‘thought process’ of the computer, other languages won’t seem that foreign to you: the learning curve should be flattened (see what I did there?) #StayAtHomeAndCode

Course Reviews and Proposed Paths

As I mentioned, I picked up coding, dropped it and returned to it at several points in life. Therefore, these courses were not done in a linear fashion but I do have opinions on most of them. I will lay out my commitment to these courses as well as the pros and cons of each. Why I dropped off a particular course may also hint to you whether I found it worthy of time. The interesting thing about wanting to ‘learn Python’ (or insert any other language) is: you could take a multitude of courses and they would all teach you something different – probably because everyone has a different idea of what the basics should entail.

1)       DataCamp (very early, maybe 2015 or 2016)

·         Summary: One of the first Python courses I remember taking where I was too cheap to go past the trial. It was very focused on being ‘hands-on’ – I don’t recall there being many lectures (if there were, they were certainly not memorable) and you were mostly doing exercises. The first few problems were math driven but seemed to lack context.

·         Pros: If you’re the type that enjoys bite sized portions of work and learns through doing, that’s good. It also comes with its own python shell so you don’t have to wade through the potential mess of installing Anaconda/Python on your PC.

·         Cons: I didn’t know where I was going: what am I going to be able to do after I take this course? I dropped it early because I could not see the end point. Should I have had a more favorable view of the course, I would have paid to finish it (as I have in recent times).

·         Rating: Too early to rate but I wouldn’t go back to it

2)       CS50 on EDX (it’s free unless you want to pay for a cert, probably did this around 2016-2017)

·         Summary: A great introduction to computer science. I didn’t finish the full thing but the first few lectures should be enough to give you a good grasp of what computer science is. I would treat this more as a ‘nice to know’ course as opposed to a ‘helps me get something done’ course.

·         Pros: Needless to say, I think some background knowledge to contextualize what is computer science before you start coding would be good. You can opt to finish it but if I’m not wrong they teach in C (again my memory might fail me).

·         Cons: Lectures can be quite long (~2 hours). If you’re doing this after work, 2 hours is a LONG time. Plus, I highly recommend taking notes during any lectures because I guarantee you, you won’t retain much without practice. The problem comes when the practice is deeply separated from the lecture due to an inherent theory vs practical dichotomy in the conventional education system. If your lecture is focused on theory, your notes won’t help you in coding much.

·         Rating: 7/10 for the content that I did complete because the instructor is pretty engaging and the content is useful for setting the context but the lectures can feel a little long and draining.

3)       MIT Open Courseware (Introduction to Computer Science and Programming in Python; it’s FREE; probably did this around 2018)

·         Summary: Ah yes, this course took up the bulk of my time when I started making significant effort to code. This course alone would probably make up around 50 hours of coding time. This includes the time staring at your screen and getting Traceback Errors, then crying yourself to sleep because you’re useless. Thinking back, I would have much preferred to do this course now after doing the course I did recently (the next one I’ll review) but let’s put it this way: taking this course first is like playing an infamously difficult game and then choosing hard mode before you have any experience. It covers everything you need to know and then it assumes there’s some things you already should already know while you’re still struggling with wrapping your head around speaking like a computer.

·         Pros: Is it a good course? Definitely. But it also seems a lot more math focused, especially in the first few lectures. People that are not as inclined to math may find the problem sets overly challenging and give up as it’s simply too difficult. That being said, if you can come out of it having done all the problem sets, your fundamentals are good to go. I also enjoy that they go through different methods for solving math problems in the lectures like Guess and Check, Bisections, Approximations etc. It helps you get into the mindset of thinking like a software engineer should, which is basically being an effective problem solver.

·         Cons: The course lectures are heavy and not always intuitive. You could download the material and read through all the slides but still find yourself lost. Google is your best friend for explanations. Be prepared to spend a lot of time and struggle through the problem sets. If you’re totally new to Python, I cannot recommend this in good faith because it’s more likely to dissuade you from learning than to encourage you. I took this when I was working, and I recall that I could only do the course during the weekends because it was a real brain drain. I’d consider it an achievement if I can do both the lecture (1 hour) and the problem set (anywhere from 1-6 hours depending on your Eureka moment) in one day, but most of the time it’s much more realistic to split it over the two weekend days.

·         Rating: 8/10 There are some barriers to overcome but on the whole it’s definitely a very informative course that will force you to get better. However, I’d recommend this more as an intermediate course than a beginner’s course. Don’t make the same mistake as me.

4)       Python for Everybody Specialization on Coursera (Total of 5 courses; done Apr 2020; it’s FREE if you audit only, paid if you want to do the assignments and get a cert)

·         Summary: If I could turn back time, I would start with this course. It’s beginner friendly, provides a high level overview on all that Python could potentially offer – from math, to scraping, to building databases, to dissecting data and cleaning it up. The instructor is also really down-to-earth and sketches out flowcharts to illustrate how the key functions/methods would work. It really doesn’t get any clearer and more accessible than this, in my experience. On paper, all 5 courses should take you about ~40 weeks to get through but in reality, you could probably do it in less than 20 weeks even if you’re a complete beginner.

·         Pros: Instructor is GREAT. Lectures are bite sized so if you really wanted to take it one week at a time, you can. Assignments will probably be challenging for beginners but not ‘pull your hair out’ challenging. I recommend you audit the first out of the five courses before deciding if you want to spend money on the assignments, that’s how I did it. The assignments are not time gated so if you wanted to you could finish everything in a day. You will be equipped with everything you need to start branching out into your specific topics of interest.

·         Cons: I can’t really think of any except that the assignments actually get easier as you hit the 4th and 5th course. A lot of sample code is written for you so it’s much more important for you to understand the code rather than have to code it from scratch. You miss out on the practice in that sense. But at the same time, it allows you to apply your knowledge and modify some of the instructor’s code to achieve whatever you might want to program.

·         Rating: 9/10. I feel like I would have spent a lot more time and energy on coding if I started with this course because all it does is build a strong foundation for you to explore the language on your own.

If I could turn back time, I would probably have done a few lectures on CS50, followed by Python for Everybody with the MIT course being an optional challenge. There are so many different things you could branch into when learning coding that the only thing your first online course should impart to you is a strong foundation. At present I’m doing a course on Algorithmic Trading through Python but I could have chosen to move onto NLP or full stack web dev (some other courses I bought). An indicator of a good beginner course should always be: how confident do I feel pursuing more knowledge of the language on my own after taking this course? You don’t have to take the courses I’ve mentioned, but you should feel empowered to venture out and explore once you’ve concluded your beginner course in coding. If you have any other resources to recommend, just drop me a note and I’ll happy to put it here and credit you.

Ending Remarks

Evidently, the article I conceptualized in my head evolved to something way longer than I expected so we’ll have to break it into two parts. In the next part, I’ll talk about some best practices to ensure you’re disciplined; we’ll talk about my theory of productivity and how to manage your own levels of productivity. I’ll also be sharing my own thought processes when it comes to coding as well as some of my personal reflections.

If you find this useful, do feel free to reach out to ask questions or drop me some comments.

Read Part 2

Joel Lam