Hi guys. Recently my interview was published over at Mouse vs Python blog which is run by Mike. I am glad that I was able to become a part of Mike’s PyDev of the week series. This post is not going to be technical. I am going to use my time to clear up my mind through this post.
Firstly, a lot of new programmers ask me how to learn Python. They want to reach my level of competence. They are much more fascinated by my skills when they come to know that I have learned it using the web and not any book or University course. Now I am going to jot down the steps which I follow to learn any new programming language.
- Look up a project which I have already done in another language.
- Make sure that the project’s scope is not too big.
- Try to implement it bit by bit in the language which I am trying to learn.
- Search on Google for how to do a specific task in the new language. This might be file i/o and how to access the web.
- Complete the project by searching on Google and Stackoverflow.
- Now I might pick up a book about the new language and read it – try to pick up the best practices from the book.
- Look up a simple Open Source program written in the language which I am learning and try to contribute to it. Don’t worry, if your PR (Pull Request) is not of high quality because most of the time the project owner would work with you to improve it and this would only contribute to your knowledge about best practices in the language. In the worst case scenario your PR would be rejected. Don’t sweat it because we are still beginners. Just try this step again.
Some people will argue that this method is not correct and one would miss the best practices of the language by completing the first project solely based on Stackoverflow and Google. I don’t want to argue with them. This is MY method and you are not required to follow it. It is entirely up to you. Doing Open Source contributions would allow you to learn about the best practices.
Now onto the next question. A lot of people argue that programming is not for them. They are simply not putting in enough effort. There is nothing in the world which you can not achieve. If you put in enough effort then no one can stop you from achieving success. Let me share my own story. It is slightly off topic but I believe this is the most suitable part of the post to share it.
When I was 12 I was fascinated by a hack for an online game called Club Penguin. It was a software called Penguin Storm. I had no idea about programming back then but I wanted to make such hacks and softwares myself. Who doesn’t want to? Right? I searched on the web and got to know that the software was made using a language called Visual Basic. I went to a Bookstore and bought a book on Visual Basic, Visual Basic 2010 Step By Step. It had over 300 pages. I was not put off by the page count. I considered more pages == more knowledge. I took the book to a guy who knew programming. He used to teach my cousin. I put the book in front of him and asked him to teach me programming. He immediately tried to back off and said that I was too young to learn it. I asked him to just teach it to me and give no regard to my age. He refused. I was slightly put off at this moment. Nonetheless, I started to read the book myself. In the beginning I wasn’t able to understand even a single word of it. I had no idea about what variables were. I had no idea about what loops were but I was determined.
I was not ready to give in because I had taken the words of that guy as a challenge. I was intent on proving to him that age is a useless factor in learning to program. I completed the book halfway and just copy/pasted the code along the way.
Along with the book, I started to search for tutorials on Google and Youtube. I still remember that while I was searching for a tutorial on how to make a Keylogger in Visual Basic, Python tutorials were popping up. I thought that a language whose name is Python can’t be a serious language. I overlooked Python tutorials but then after stumbling over them 5-6 times I decided to give it a go.
I read the tutorial and was really happy that it worked as expected. I decided to delve more deeper into this ‘Python’ language. From that moment onwards things started to make sense. I began to understand what loops were and what variables were. I ditched the Visual Basic book and started reading the ‘Head First Python’ book. It was a great help. However, I didn’t complete it either. I was distracted by all the wonderful things which I could do in Python and when those things were not covered in the book, I took help of Google and learned how to do it.
When I was 13 I stumbled across GitHub. I was surprised that such a website existed. I searched for a simple Python project and contributed to it. My first contribution was correcting the indentation of the code. I was happy and overjoyed. It was my first ever contribution to someone else’s code. Then I stumbled on another great project called youtube-dl. I contributed to it as well. My contribution consisted of a video downloader for a website. I simply copied another downloader from the repository and tweaked it to support the website which I was working with. No particular knowledge of Python was required for this contribution either.
From that moment onwards I started to write small scripts in Python and things started to make much more sense. The quality of my pull requests started to improve.
Bottom point: Everything takes time. Just take it step by step and you would achieve success. And never ever let anyone ever tell you that you can’t do anything.
I am sure that this post would help a lot of you know a bit more about me. I support diversity in the Tech field. Right now there are not much girls in STEM. So if anyone out there who is a girl and wants some mentoring or advice or solution to their technical problems then they can easily contact me using the comments section or through email and I would be more than happy to help them out.