I have recently made a career change from a Cisco collaborations engineer to technical writing. I became bored with the tedious repetitive tasks I was doing and knew that those tasks could be automated with code. But I have always told myself that I am not a "programmer" and that those jobs are for smart people. Then I started playing with IoT devices for fun, specifically Raspberry Pi with Python and realized that the code was actually quite understandable. Then I decided to give it a go, but never fully committed to the journey though.
Anyways now that I am a technical writer, my job is to write... about technical stuff, mostly programming.
This is great because I now have the opportunity to study programming and then share my findings through writing. It is certainly best of both worlds because both are crafts that I would love to master one day.
Python being the most popular language is one thing but there is just something about the language that I instantly fell in love with. When I first really looked at Python code I thought, "Hey, I can actually understand what is going on here", and that's when I realized that programming isn't just for the smart people. We are all smart people and we can choose to learn and become experts at whatever it is we are curious about.
Python is easy to read and understand, however, there is a lot to learn and understand before you get to a point of building your own cool programs.
My process of learning is a bit all over the place at the moment but if you are here looking for a way to start I would recommend something like this:
Firstly I started off with some video tutorials that introduce programming and Python as a programming language. This is a good starting point if you have no idea what Python is as it is a quick way to familiarize yourself with Python and programming at a high-level. This also helps you to have a basic understanding of concepts when you dive deeper. One of the videos I would recommend here is "Learn Python - Full Course for Beginners [Tutorial]" by FreeCodeCamp
After watching a few video tutorials you should have a better idea of what Python is at a high-level and also what it can be used for. So I started working through an online course that focuses on the theory behind the Python language, its usage and a few of the most commonly used Python libraries. This is good for really learning the language, syntax, libraries and how to use them. I have chosen the "Python Tutorial" at w3schools for this as I enjoy the exercises after each section. FreeCodeCamp also has nice tutorials which I will probably move to after finishing with w3schools for an even deeper understanding. I think it's good to learn from various sources as they often teach different ways of achieving the same results which help you develop your own way.
After having a good understanding of the theory I will move to "Automate the boring stuff with Python". The book is well written and easy to follow but what makes it so good to me is that it is full of examples, exercises and project ideas that you can use to expand your practical knowledge. This makes is a great next step as you can refresh your theoretical knowledge while coding along to practice the practical side. The second half of the book is where things start getting fun. It introduces you to more complex programs and actual examples of automation apps including project ideas which you can build to automate some of your own boring repetitive tasks.
Then I have already chosen a larger more complex project for myself to work on while I am learning. I learn through doing and I found it best to set a project for myself and break it into bite-sized pieces that I build as I learn. For most of it, I don't have any idea how it will be accomplished but it really is fun when I learn something and add it to my project (when it works). When it doesn't work it is also great because I then have a good idea of what I still have to learn.
Knowing how to code is one thing, knowing how to do it correctly and efficiently is where practice comes in. From here you would be able to build projects without following a tutorial so let your imagination run wild and start coding daily. You can write small programs or work on more complex ones as long as you consistently code every day. It is also a good idea that these projects are aligned with what you intend to accomplish as there are many different areas where Python is used and they each have their own learning curve. This can be anything like Machine Learning, Web-development, data-science and automation to name a few.
I am still a long way to mastering the Python programming language but I am enjoying every bit of the journey. I hope that you too find a way that works for you and most of all that you enjoy every moment!