As my career in the tech industry grew in the QA discipline, I always had a hidden passion for coding. I've always been a "techy" person, and I've always been interested in programming. I had a very little experience as a kid who liked building websites and at later stages I fully adopt Linux OS's. However, I never had the courage to take the leap and start learning. Whenever I got the chance to do it, I sat in front of my empty editor and felt like I didn't know where to start.
This is a good point to make a disclaimer, in the companies I worked as a QA and as a Team lead, I always worked closely to developers, and I had got to a point i'm comfortable with Python (not for actual coding, but more in terms of not being intimidated by it).
At some point I got the opportunity to help a small automation team we had in a startup I worked in, and as time went by, I got more and more involved in the code, and I started to feel more comfortable with it up until the point I was able to do some contributions myself mainly around end-to-end tests we had for our backend services.
After some period of combining automation tests and management, the startup company I worked in got acquired by a bigger company, and I got promoted to a higher managerial role that turned the tied for me. It wasn't until I got promoted to a managerial role that drew me away from the fun parts of working in tech, that I realized I need to do something about it. I was no longer involved in the code, and I felt like I was missing out on the fun parts of working in tech. I decided to take action and start learning to code.
Then I encountered these hashtags on Twitter of #100DaysOfCode. I though the concept was amazing, but I wasn't sure where to start, until I found the 100DaysOfCode Udemy Python Course by Angela Yu.
So I went for it, and what can I tell you? It was totally worth it. You'll learn the fundamentals of Python, and you'll get a good understanding of the language. You'll also get to know common libraries such as tkinter, Selenium, Beautiful Soup, Request, Flask, Pandas, NumPy, Scikit-Learn, Plotly, Matplotlib and much more. note I said get to know, as it high level. Angela is an amazing instructor, and the course is built in a very intuitive way. It touches many scopes at high level, some I liked more and some less, but that's how it usually work in the tech industry and it's a matter of taste I guess.
So I made a promise to myself: spend at least an hour every day learning new stuff. I know this is a very though challenge especially if you have a full time job and a family, but I decided that this is my last chance of doing this switch to SW development, and I'm going to do it.
There's another un-written rule that is highly recommended while doing this kind of challenge, and that's share your work.
Most of the people are sharing their work in platforms like Twitter, Linkedin or blogs, but I'm not so active in those social network, so I decided to upload it to a GitHub repository and on each PR add two of my co-workers as reviewers. The main point wasn't to get feedback on my code, but to get the feeling of sharing my work and getting feedback on it. It help me commit deeply to this process.
So here are some takeaways:
Self-discipline is key
If you take this challenge, you will need self-motivation to work on the challenge every single day. Write reminders to yourself. Ask people to check on you, commit to it using social network or like any other creative way you feel comfortable with.
You are still leaning even if you don't actually typing
Google/Stack Overflow/Reddit/Discord (Generative AI wasn't born yet) and trying different solutions still counts as leaning. This is how you actually deepening your knowledge. You can code for a full hour, but sometimes handling a bug by digging online on why it happened or how to resolve it isn't less important.
Create your own environment
Work on the OS you feel comfortable with, use the editor you like, and use the tools you like. I know this sounds obvious, but I've seen people trying to learn on Windows while they are Linux users, or using VSCode while they are PyCharm users. This is a very personal thing, and you should feel comfortable with your environment especially when you are in the start of your learning journey.
Take it Day by day
100 days is a long journey. Try not to think about the 100 days as a whole, because that might be overwhelming. I for example, used not to look past the current section I was working on. I used to think about the next section only when I finished the current one. This helped me to focus on the current task and not to get overwhelmed by the amount of work I still have to do.
Try to combine it with another positive routine
In my case I printed and hanged on my desk a week schedule for the nights. Each day I had either learning or working out. This helped me balance the cognitive load.
Don't be afraid to ask for help
I used to ask many questions in the Python's Discord server and it provided many references and gave me lots of confidence that was missing.
Document and share your work
I already outlined it, but I can add that besides assigning reviewers, I also added a proper description in a README per each day which turned it to more meaningful for me.
It took me around 3 months to finish the entire course, which i'm very proud of and I got to a point where I felt comfortable with Python. But really quickly, I got to a conclusion that there's a large mile of being an actual developer and I had a feeling that i'm still not fully satisfied. I got to a conclusion that programming is a muscle that you will always have to continue to flex and grow.
My 100 Days of Code repository
There began my learning addiction.
I started consuming other online courses related to my actual work place. After a while I officially moved to the role of Automation Developer and from there everything is possible. Every day at work or in my private time, i'm learning new things such as frameworks, libraries, tools and more.
You may have heard about the term tutorial hell. This is a real thing. Only way I could get out of it was to start building my own projects without tutorials and tried to integrate what I've learned in my work place (when possible of course).
Even today while i'm a full time Software Developer, I know that learning can't be paused and I have to keep learning new things every day. And so the learning journey continues.
If you are in this the middle of this challenge, or planning to start with it, feel free to reach out to me and I will be happy to help you with any questions you may have.