Learning Python & Front End — 9 Month Progress Update — In Javascript Heaven with FrontEndMasters

Siraj Samsudeen
9 min readAug 9, 2020

Last month has been a time of full immersion into Javascript. When I finished 4-hours per day on JS last month, my plan was to ease back into 1 hour per day on JS and continue with my work project which was in Python.

In that Python project, I had to extract a large Word document and split that into a number of individual pages based on a set of rules and upload them as a series of Knowledge Base pages on a help-desk system. I used the most popular package in Python for extracting data from the Word documents — python-docx. This was the package I got to know through the ‘Automate the boring stuff with python’ book.

Though I was quite successful in extracting the contents, this package had a serious limitations — it was dropping any hyperlinks along with its associated text in the document. So, I went around searching for alternatives and tried 2 other packages. Though the these 2 packages did solve this problem, I encountered other errors which stopped me from moving forward. Using the approach of TDD, I was able to execute baby-steps that allowed meto isolate the problem and find out exactly what content in the Word Doc was causing the issue — the issue was with a certain encoding found in the Word Doc, not something specific to the document I was working with.

Then, I had this idea of looking for similar packages in npm and I landed on mammoth — this packages allowed me to extract Word document data using JS into a HTML file. So, I was back to working on JS fully. It was such a striking coincidence — I spent a few weeks mastering JS only to be handed over a full JS project as soon as I finish. As they say, the teacher appears when the student is ready.

So, this project was a great teacher. I used the mammoth package which used Promises (async programming) and then connected the output to API service. But by the time the API service started uploading the data, the extraction process was not complete. In trying to debug this issue, I came to realize that I need to understand a few parts of JS at a deeper level. I did not fully understand scope of variables in JS and also I did not fully understand async programming in JS.

So, for the simpler problem of scope, I started reading up on the difference between let and var in Stackoverflow.

I landed on an article by Kyle Simpson very soon. Though it was a very long post, I really liked it — his emphasis on code readability is something I identify with. What happened next is breathtaking series of coincidences. That evening for the first time in my life, I decided to check out podcasts on Javascript to listen while I was jogging. So, I downloaded some random JS podcast and listened — there he was Kyle Simpson, talking about his book series and why and how he came to write that book. Again, I was very impressed with his careful judgement about the features that receive a lot of negative criticism.

So, I immediately checked out his book series in Safari online and started reading them. He started a 2nd edition of the series where I learnt about FrontEndMaster and landed there with this free course:

In this course, Kyle talks about the 3 pillars — types, closures and this. Since I have read the first 2 books of his v1 series, I was familiar with most of the ideas. However, there were some aspects about closure that I found confusing after reading his book. But I understood them much better here.
Though the course is just 2 hours, it gave me a in-depth view into a few key aspects of JS and a lot of sensible advice about understanding things deeply and to write code for better readability.

Since I was quite impressed with the first course of Kyle, I bought a subscription to Front End Master so that I could devour his next course:

Overall, a very deep course — covered the 3 pillars — types, scoping and objects. However, given that I have spent very little time in actually programming JS and seeing any of the errors, lot of ideas I saw here were just theory for me. I need to come back to this course, may be after a year or two to see how many of the mistakes he is talking about I would be committing and to mend my ways.

One thing that was very beneficial was to understand how closures work, the difference between lexical scope used by closure and the dynamic scope used by this keyword. I understand how the object model is very different in JS than in Java or C++ where I come from — hence, it was a great perspective not to bring baggage from my earlier work and to see it with new eyes.

Then, I did what I would consider to be the best course I have done in years:

I can’t contain my appreciation and awe for this phenomenal l teacher — Simply an awesome course from an awesome teacher — the best of the best teachers I have seen in the programming world. Will Sentence is just so amazing in his step-by-step approach to tackling very complex things using the blackboard.

Teaching is my passion as well and hence in every teacher I encounter, I try to learn something about teaching so that I can improve myself when I teach others.

So, What makes a teacher exceptional? The relationship between a teacher-student is a two-way relationship. If the student is bright or very hard-working, most teachers would be able to help the student master the topic. However, if the student is not bright or is new to the field and not ready to pull his weight, most teachers will end up making the student feel bad about their ability. This is where the great teacher’s ability comes in. They expect very little from the student and take upon themselves all the hard work of making sure that the student develops a deep and long-lasting association with the topics. In this sense, I still remember my advanced statistics teacher in my MBA at ISB 15 years back — Rakesh Vohra from Kellogg school. He made everyone understand some of the most confusing aspects of statistics and he was voted as the best professor of the year. I still remember the examples he has given in class to explain spurious correlation.

Will sentance is the next teacher in that cadre — After I learn a new concept, I take notes, I practice applying the ideas by trying them out in code a number of items, I create questions to put in my SRS system — Anki — so that I can review them later, etc. — All of this was absolutely unnecessary for the JS Hard Parts course of Will. Incidentally, I watched this course with my 12-year old son together as I was down with back injury at that time at home. And he also understood everything.

Though there is very little I did not know about closures since I have already done Kyle’s Deep JS course, I really enjoyed every minute of listening to him. And I have learnt quite a bit about Async, Event Loops and Object Oriented Programming in JS — very impressive course.

Since I was doing async programming in my project without fully understanding how it worked behind the scenes, I had some wrong conception which led to some surprising behaviours in my program. But Will cleared it all up and i am so grateful. I wish I could attend a live session of Will, just to have the pleasure of being with such a great teacher and to learning from him the art of teaching and caring for his students.

The only downside I felt was that the exercises were given as pair programming sessions in his live class. But for people watching recorded sessions later like me, there is no way to check the solutions or to see how the teacher would solve it, etc.

I also checked out the most-recommended book on JS

I have heard a lot of praise about this book a number of times. Hence, I was excited to start the book. Though the book starts with absolute basics in the first few chapters, I decided to read the book from start to get every ounce of wisdom packed in it.

I did really like the initial chapters, though I felt a little bit of discomfort in the examples that the author has chosen — the first example I remember is a program to find out when a person changes to squirrel based on his activity log. Though it sounded a bit funny, it took a lot of mental effort to really abstract the key requirements of such a program.

As the chapters went on, I felt increasingly uncomfortable with the examples — the one that made me feel worse was a crow nest-building algorithm. The writing style of the author is somewhat complicated — he uses a lot of complex verbiage to convey simple ideas. He uses arrow functions quite a lot which makes for difficult to read code (and Kyle has already convinced me about the negative impact of arrow function on readability and I saw many live demonstrations here in this book).

But I did like the fact that the author describes ideas fairly accurately — there are authors who say that variables are like boxes and constants never change. But this author said that variables are not like boxes but like tentacles which grasp the values. Constants never allow the link to be changed, but the contents inside the object they grasped could change, etc.

Ideally, I do want to read the book cover-to-cover and do all the exercises, but not now. So, I am marking it for a later time…

In Javascript heaven:

I have heard/read a lot of negative things about Javascript. But the following 3 teachers that I have encountered completely gave me a different perception of Javascript:

  1. Doug Crockford — https://www.youtube.com/playlist?list=PL62E185BB8577B63D
  2. Kyle Simpson for his book series and his deep-dive courses in FrontEnd Masters
  3. Will Sentance for his amazing JS Hard Parts series.

I came to really love Javascript now. I understand its limitations, but I also understand how flexible and easy-going the language is. Given that I lean towards a more disciplined approach towards programming (for me, this is my craft, not just work), I am not too worried about the surprising features of JS.

As Kyle puts it, once you understand how something works at a deeper level, then you can use it in much more powerful ways. I have worked in C, C++, Java, Python and now Javascript — and this is the language I prefer now of all the five. But it is still early days for me with JS as I have not even done a full real JS project yet. Let me see how my perception shapes up as I build more using Javascript.

A big thanks to Front End Masters for such a wonderful line-up of teachers and courses. I am just so amazed. The platform is so amazing for its attention-to-detail in so many ways. I gave up on learning through videos after doing a number of video courses in Udemy and Oreilly platforms but this platform completely changed my perception — thank you Marc and Front End Masters team once more. I am so grateful to you and the great teachers you have lined up of which I have encountered only two — Kyle And Will.

--

--

Siraj Samsudeen

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