Learning Python & Front End — 6 Month Progress Update

It has been 6 months now since I have started on this journey of getting back into programming through Python. So, I want to reflect on what has gone well and what I could have done better. I also want to set some concrete targets to help me focus my efforts in the next 6-months.

Time Allocation

My aim was to spend an hour every working day — that would be 5 hours per week and 20 hours per month. In 6 months, that means 120 hours. Though I have not been able to spend 1 hour consistently every day, I guess that I might have spent about 100 hours easily in the last 6 months (My time tracker tells me that I have spent about 90 hours in the last 5 months as I have started tracking time on this from Dec 2019). Going forward, I want to stick to 1-hour per day discipline as that is the best way to make progress without much sweat — a simple concrete daily goal.

Materials Used

I have used a number of books and a few video course along with generous amount of stackoverflow answers and Google searching. Looking back, I would have spent about 20–30 hours of the 100 hours in reading things that could not benefit me immediately and in starting courses, books and not continuing with them. With so many choices available at the click of a Google button, it is easy to get distracted. Though I am generally good at focusing, I regret the amount of time I have wasted in wandering through articles that could not be of immediate benefit to me. Going forward, I want to pick up a few books and completely focus only on them. As they say, Less is More.

Learning Approach — Deep Proactive Learning vs Shallow Reactive Learning

Since I have started on a live project before I knew Django, Javascript and CSS well, I had to search on Google for many things when I faced problems. Though I was able to solve them, I realized that I could not solve many of the issues/challenges I faced and I found workarounds for them.

Two live use-case are

  1. Using GitHub for deploying the production and test versions of my code on pythonanywhere server — after wasting a lot of time trying to do things manually, I finally picked up a book on Git and learnt a number of things which eliminated a whole class of problems/workaround I was using.
  2. Setting up VS code to debug Django apps — I was using debugging on commandline and it was painful to say the least. I was facing a number of issues with the formatting of django templates. Finally I spent the time to learn the proper way to set things up. It gave me such a boost in productivity.

These days, a lot of us prefer the shallow google-search style of learning. But somehow, I prefer the deep learning. It is not that I don’t face problems anywhere about which I have to search on SO. But I have reached a certain level of knowledge on Git and VS Code that I am confident to solve the issues that pop up without feeling frustrated. So, going forward, I am gonna focus on taking one or two topics and going deep till I feel that I reached an intermediate level of knowledge.

Here is the list of key milestones in these 6 months and/or resources I have found beneficial:

  1. Book — Automate the Boring Stuff with Python : Though I started off with Learn Python the hard way book, I felt that it was too basic and then I picked up this book. I have been exposed to so many different application areas of python in this single book. I have done a variety of things with the knowledge I have picked up from the book — parsing word documents, extracting data from Google sheets, connecting to web APIs, etc. I am so grateful for this book. I plan to do a second reading through the book to get more from it…
  2. Project — Quran Revision using Spaced Repetition System (SRS) using Google Forms and Google Sheets : This project challenged me to apply the skills I have learnt. There is so much I learnt by doing. The project kept pushing the limits of what I could do.
  3. Website — CheckIO : This site exposed me to the pythonic ways of solving problems. Though the problems were very simple, the one-line solutions given by the senior members were breathtaking — doing problem on this site was a huge motivation for me to learn more of python.
  4. Book — Python Tricks by Dan Bader : This is an excellent book, but somehow it did not make such an impact on me. I did learn a number of new ideas, but nothing was really profound in that sense. May be, I just read it too quickly and did not experiment with the ideas given in the book. But I still remember that Dan was a great teacher who cares a lot about his students understanding some complex topics. I should reread this book also.
  5. Video course — Functional Programming : Very useful course which opened up a whole new world for me. I have a detailed review here.
  6. Project — Quran Revision using SRS using Django : It is a dream project for me and I am so happy with the progress I am able to make so far on this project. There is so much more to do to improve the functionality of this web app. Here is the GitHub repo.
  7. Udemy course Web Dev Bootcamp by Angela Yu — Though I bought this course long back, I did not progress much in this course. Angela is a great teacher, but somehow I find that video courses take a lot more time to teach a few ideas. Now during this downtime, I wanted to use the time to complete this course but the internet is very slow. So, this is parked for a while.

As I look back, I could list only 2 books and one video course of about 5 hours along with 2 projects. Looking back, in 100 hours, I could have done a lot more if I could have focused and directed my learning. So that is the goal for the next 6 months.

Now the concrete goal for this month (and beyond if takes more time):

  1. Test Driven Development with Python — I used to be a fan of test-driven development during my days as a developer. Now that I have a live web-app used by my family members/friends, I have introduced bugs when I attempted to add new features in a hurry. Since I did not have automated test-cases, the manual testing did not cover all the possible scenarios, thus leading to the discovery of surprising bugs. This gave me the motivation to set things up right.
  2. Dom Scripting by Jeremy Keith — Ideally, I want to learn Vue Js. But before that I want to learn basic JS well. I bookmarked Javascript the definitive guide and JQuery Succintly. Today I was trying to do something simple in Javascript. After about 2 hours, I gave up. In one of the SO posts, I saw a reference to this book and decided to pick this up as I loved some of the key ideas that are covered in this book
  3. MDN Course — Learn Web development — I went through their Django course and I was so impressed — so thorough, such a clear example. I understood a lot about Django. This course gave me the motivation to deep dive into Django to get more out of it.

That is all for now. I hope to stay focused on these 3 items over the course of the course of the next few months and once I finish them, I would decide the next steps…

--

--

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store
Siraj Samsudeen

An entrepreneur who is coming back to coding after a gap of 16 years due to love of coding.