Blog

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.

Leave a Comment

Your email address will not be published. Required fields are marked *