Part – 1 Taking many first steps to learn programming

Why it important to start with the Why of any task

Technically speaking Day 0 – Halo Django World (link) was my first day of programming. I had done quite a bit of reading, exploring, and practice on that day but when I sat to journal it, the activities that I performed took a backstage, and the Why of getting into programming especially Python and Django took center stage. As Simon Sinek in his book Start with a Why (link) explains, if you are clear about the Why, the other How and What easily fall into place.

Many first steps you can take towards learning to program

Coming to the topic, I had no idea where to begin. I didn’t know what my first step should be so I took many first steps to learn programming on Day 0 and Day 1. Let me list them for you.

  1. Read blogs, watched Youtube videos, and tried to find an answer to any question that entered my head.
  2. Tried to make notes and this journaling is part of the effort and bookmarked or saved the content for revisiting.
  3. Bought a Udemy course (Link) to get started and started soaking the information as much as possible.
  4. Followed step-by-step process to install different software packages required to learn Python and Django like Python, Pycharm, and Django (links).
  5. Tried to keep me motivated by reminding myself about the Why of the whole exercise.

Why you will not succeed in the first attempt most of the time.

Did I succeed in everything I set out to achieve on these particular days? Of course not. First of all, I have a regular job. Although it’s in the Information Technology sector, my role is on the business side. On top of it, I got moved from my Sales role to a new role in Marketing. This made me extremely busy as I had to provide KT (Knowledge Transfer) to the new member who was replacing me and take KT from the person who I was replacing. It was busy hectic and stressful.

All through this, I kept asking myself, is following my dream of learning a programming language worth the effort at this stage of my career where nobody expects me to write code. The only thing that helped me carry on was the Why of the whole endeavor. This effort was going to give me the personal and professional satisfaction of being close to my industry, technology, and product and learning about what is happening at the product level. What would you prefer, buying the car from a person who designed it and is passionate about it or the car salesman who is there just trying to make a living?

Don’t seek clarity but seek engagement.

After going through the five tasks listed above did, I get any clarity? No. Did I make the right decision after realizing my confusion? No. Did I get off track because of my hectic schedule at the office? Yes. Did I lose motivation and drop the idea? I almost did that a few times. I thought since this is not going to make me any money why put the effort. Sometimes I am amazed at how many decisions are purely a function of money.

The more I learned the more confused I got. At a certain point, I decided Fu** the decisions and let us start. I was in a hurry to learn as much as possible in as little a time as possible so I took the following decision. I said to myself since I already know the basics of programming languages (I am an engineer in Information Technology) let me start with server-side programming. This is what happened next.

Hitting roadblocks is good new

I skimmed through the Udemy tutorial videos on the subject hoping it would at least explain the basic architecture. It was a painful and tasteless exercise. I was absorbing not more than 20% of what was being said but I pushed away. Then I hit the wall. I was not just starting with Django and my understanding percentage dropped to maybe 5%. I couldn’t watch another second of the video. Why I am sharing this is not to tell you what to do but to show you what to expect. Maybe this is part of the process and everybody is expected to undergo the initial resistance or there could be better ways of attacking it like starting with an easier topic like Python.

As mentioned earlier I wanted to strike at the heart. I wanted to understand the framework, the tiny details could follow later. Udemy was not working for me any longer for another reason. To do programming you need to install IDE (Integrated Development Environment). The IDE used in the course and the IDE that I had installed were different so to even blindly follow the instructions required double the effort.

Going back to the basics

At this point, I pulled myself back and asked which is the easiest course on the subject of Django. Note, I didn’t scale down the topic, I just chose an easier material to get started. A few years back I had scrolled through W3 School (link) materials. I found them super cool for two main reasons. Firstly they are explained in very simple language and a few sentences. Secondly, you can run small code snippets on their website itself. I just tried my luck to check if they had a similar course on Django also and Bingo !!! W3 School did have a course on Django.

I immediately dug into it and started implementing the instruction line by line on my system. The only challenge with W3 School is that you cannot have immediate feedback on the mistakes you are making while running your code, something you would get on a professional course with a tutor. Also, some of the topics are too simplified and you end up missing the actual message. But if you asked me if it is a great starting point, my answer would be an emphatic Yes!!!.

Another mistake that I did earlier was to start typing the code instead of cut-copy and paste when I was running them on the system. Of course, a programmer who types his code looks sexy and in the process absorbs more but I failed to remind myself of my objective which was to quickly understand the architecture like in this case MVT (Model View Template), and run the code to see if you can run it or not. 

Learning from other’s mistakes is a smart thing to do.

In programming when things get difficult it is usually a misunderstanding or a syntax. Let me list out my mistakes and suggestions which you can look into if you run into a roadblock.

  1. Always try to follow the sequence prescribed in the course. It helps your understanding of the subject. You need not go too deep but complete the cycle. Believe me, it will give you great confidence when you complete one cycle.
  2. If you copy-paste code, copy the complete code not only the additional code for that part of the execution. Sometimes other parts of the code would have changed which might not be very obvious.
  3. Always save your work so that changes are affected.
  4. Make notes. Make notes about topics you have researched and which you think you might require running the code again.
  5. Don’t expect the course like in this case W3 School to not miss any details. Sometimes it is expected that you know Command line instructions, and how to navigate files and directories both through User Interface and Command Prompt. Google, note, and practice and you will be bound to improve.
  6. In my personal opinion, programming is an art. It’s not about millions of lines of codes but how elegant those codes are. Don’t worry about it in the beginning.
  7. Your most time would be spent on debugging (at least for me it was so as I made a lot of mistakes especially when I am typing the codes or commands). Be prepared for finding 10 different ways to attack the error.
  8. Take a break. It will be difficult to leave the program/ error but you can’t ignore other personal and professional responsibilities. Also when you attack the problem the second time you are more relaxed, and confident and you already have the experience from making the mistakes earlier.
  9. Always be planning. Take the biggest objectives and tasks first. Even if there is a break don’t give up. Plan after office hours and weekends to move to the next steps.
  10. Don’t forget the Why.

Well, I am happy to have implemented the W3 School Django course on my system. It is ironic that even if you understand the whole architecture, implementing it takes time, patience, and persistence. Debugging will throw a light on your misunderstanding of the topic or your silliness (syntax error) but each bug will make you a better programmer and take you closer to your goal.

Do you want to guess what my next step is? I would love to hear about it before I share it in my next Day 3 blog. Don’t forget to share your comments, subscribe, and also share on your social media. Let us bring out the programmer within ourselves together.

Part 0 – Halo Django World

Introduction

They say “You can’t teach old dog new tricks”. Guess what you can. Learning is a lifelong process. Every moment of life teaches you something as long as you are aware of it.

Learning new things has always excited me. In my 15 year career, I have donned different roles in different types of companies and have enjoyed my learning everywhere. Learning is of course not new but journaling my journey is. If you want to peek into my shortcomings, frustrations, and motivations that are leading me to take up this new journey, then hop on and enjoy the ride.

Photo by Monstera on Pexels.com

Past and Future

I am excited to be starting on a new journey and I am going to blog it away. When I was growing up as a teenager, I sometimes came across advice that you should “keep a diary” in other words journal every day. If you are a ’90s kid you would also have come across the idea of having a ‘pen pal’. A distant friend in some faraway country whom you could write to without knowing if you were ever going to meet the person. It was a crazy idea for me back then. But in the last 25 years, the world has changed so much. Of course, the idea of traveling to a different country and meeting someone is still a far-fetched dream (especially if you are a middle-class person in an economically developing country like India) but you can of course write your heart out and share it with the world and connect with whoever cares to read it.

Internet through its social media, blogs, Youtube, and various other applications has made the world a much ‘smaller place’ thereby connecting everybody to everybody. Most importantly it has made the idea of “keeping a diary” and “having a pen-pal” enormously convenient. In this new journey and various other future journeys, I am going to share my thoughts, views, and opinions with anybody who cares to read them, comment on them and share them.

I am an Engineer in Information Technology and an MBA. I was starting out in the right industry at the right time. I had taken Computer Science in college and School. I even worked in a large ITES company Wipro Technologies back in 2005. Somehow, I never fell in love with the subject. As I look back it could have been several different reasons or a mix of them. Maybe I was distracted with partying, getting bogged down with earning a salary, not having the skills and hence the confidence of excelling or it could be 10s of other factors. As I look back 15 years from now, I realize that apart from the focus it was also a lack of guidance. The Internet had taken off but Youtube, Facebook ,etc were yet to be born. The only source of guidance was your family, friends, relatives or maybe colleagues but now the world has changed. You have guidance from a 16-year computer prodigy to a 60-year retired veteran who has taken up the same skill development that you are interested in. Watch Learn Practice Flourish and Repeat seems to be a mantra.

I have taken up blogging several times in my life. From eBlogger to WordPress to my website sanadsuman.com. Somehow, I couldn’t sustain it over a very long period consistently this is what I am going to try and overcome this time. Wish me the best of luck.

A new journey begins

So finally coming to the topic of this blog series. I am going to journal my journey to becoming a full-stack developer starting at the age of 40. I have fidgeted with some code in my years at Wipro Technologies but that doesn’t count. Firstly, it is 17 years back and secondly, it is on whole new programming language ie. Python and Django. I am banking on my knowledge gathered in school and college and also my curiosity about building a real-life project from scratch.

This blog will be my journey highlighting Objectives, Challenges, Methods, Victories and Losses along the way. I am sure there would be many of you who would connect with this and share your stories.

What this journey is not about

There is no real expectation, monetary or otherwise but looking forward to the satisfaction of applying my knowledge, skill ,and time and sharing it with whoever can benefit from it. The quote from Steve Jobs about “connecting the dots forward” has stuck with me.  I realized you cannot always logically and rationally justify the things you do and the decisions you make but in retrospect, they somehow connect. Also, as Blaise Pascal writes “The heart has its reasons which reason knows nothing of…”, I don’t know why I am so excited about developing this skill but know I want to.

“The heart has its reasons which reason knows nothing of… We know the truth not only by the reason, but by the heart.” ― Blaise Pascal

Also please note that this blog is not going to be something like 5 Quick ways to Learn full-stack development or 3 Reasons Why you should take up programming. I will try to keep it in a very conversational format sharing what I experienced and learned during my journey. Also as highlighted I am not an expert programmer. I am not a programmer at all so there is nothing right or wrong with what I will be sharing in my posts. You might even find something that may be technically incorrect and, in that case, I would be happy to get your feedback. Wish me luck.

Small Request

What do you think this journey is going to be like? Please don’t forget to comment and share the post on your social media. Also, share your email id in the registration form so that you get the latest blog in your inbox as soon I post it.