A good friend of mine invited me to her New Year’s Eve party last night, and after a few drinks, we all went across the street to watch the culmination of the city’s block party celebration; the fireworks show set to commence at the dawn of 2019. In the final few minutes of the year, standing on the steps of the capitol building in anticipation of the awaiting spectacle, I reminisced upon the highlights of the past 365 days and tried to take stock of the progress I had made in my life in that brief duration. It was in these moments of reflection when I thought I would recap the progress I’ve made in the past year on the Python front, specifically those resources which I’ve found to be most useful in my growth as an aspiring developer.
If I had to pick one single book from which to start out learning the basics of Python, it would without a doubt be Python Crash Course by Eric Matthes. Not only does it cover the fundamentals of programming and the nuances of the language itself, the latter half of the book is comprised of three different projects, which utilize the knowledge you picked up in the earlier chapters. One has you creating a Space Invaders-esque game, another focuses on data visualization, and the last has you building a web app. I really liked that these projects were so varied because you start to get a sense of the great wealth of things you can accomplish with Python. Again, I highly-recommend you starting here if you are looking to get into programming, or may be coming over from another language.
If online material is more your thing, I also had a lot of fun with Treehouse’s Python track, and also The Python Bible course over on Udemy. Both sources also cover the basics of Python as Matthews’s book, and you may be thinking, “Weevo, why would I take more fundamentals classes when I now already know the basics?” To answer that I give two reasons. One, because you may pick up something in one course that was left out in another. More importantly, relearning the basics, helps you to reinforce and retain these critical concepts. Wouldn’t want to build a mansion on a shaky foundation.. But to get back on track, Treehouse is just an excellent fount of learning for all things development. C#, Python, Swift, Web Dev, Data Science, you name it.
I’ll end this section with another book. I recently read John Sonmez’s Complete Software Developer’s Career Guide. While it doesn’t teach you how to program, the focus of this particular book is instead to provide you with a wealth of topics to help you jump-start your journey as a software developer. How to promote/brand yourself, how to prepare for those infamous whiteboard code interviews, how to negotiate your salary after getting that job offer. It also has a laundry list of further reading for more of a deep dive into other topics. Given that, perhaps this should be the first book you pickup before the Crash Course one, as it helps paint the bigger picture and how to get from A to Z without the minutia of the finer details.
After becoming comfortable navigating some of Python’s libraries and wielding its primitive data structures, a good next step I found was Al Sweigart’s Automate the Boring Stuff with Python. While having read this one quite a while ago, I do recall it being more an exploratory work, showcasing some of the more interesting things you can do with the language, and how it can even help you to, well, automate some of the more mundane daily tasks you may be faced with in your day-to-day. One in particular I remember was writing a script that would automatically open Paint and having it manipulate the mouse cursor to draw pictures.
A common thing I believe you will hear on your journey is the importance of maintaining a healthy GitHub profile. I created an account on the site years ago, but I never really could figure out how to use it. Fast-forward a bit and I had stumbled upon a post about how Udacity’s nanodegree program had helped someone land a web development job. After some research, I bit the bullet and signed up for their Programming for Data Science track. It was estimated to take three months to complete, but already being comfortable with Python and a tad familiar with SQL, I managed to knock it out with a few weeks of dedication. I really liked their project-based resume-building approach, but what I got most out of the course came from the section on using GitHub. Little laughable that something so simple took me so long to grasp but, in the end I’m happy to say I finished the class well-ahead of schedule and with an understanding of version control.
My most recent achievement was finishing Jose Portilla’s Python 3 Masterclass Journey, available through Udemy. It has a brief overview of the basics, but is largely another exploratory course. What I loved about this one was the way it was presented; it is story-based with the plot woven around you. You assume the role of an aspiring field agent who, after learning the Pythonic ropes, are tasked with tracking down a group of fellow agents gone rogue. You uncover their trail by writing scripts to decrypt messages, send and receive emails, manipulate images and other methods. Felt very much like I was in one of those old Command and Conquer games. You’ll learn a lot and have fun doing it, but towards the end, I thought the difficulty ramped up significantly so, definitely not a first step.
Going to conclude with two non-Python specific works that might not come in handy until a little later in your studies. One is a book by “Uncle Bob” Martin, The Clean Coder. Basically stresses the need for professionalism whilst on the job, and while that probably seems common sense, it covers situations where that isn’t always easy to do, and how to overcome. The book is full of personal anecdotes which help keep it a light and entertaining read. The last is another course on Udemy which covers the software development lifecyle. Language-neutral and doesn’t go into the specifics of hows or whys, but rather gives a general glossary/overview of the Agile method so, more ‘big picture’ material that I think would come in handy as one begins a career in development.
And there you have it; a year’s worth of experience summarized in a few paragraphs. I hope this insight can be of some use to folks starting out on their Python programming path. The hardest part of any journey is the first few steps but, from what I have seen, the communities of Twitter’s #100DaysOfCode and Stack Overflow are always welcoming and willing to help newcomers so, also give them a look!
And of course a special shoutout to Jenna for being an awesome friend and helping me find this inspiration, and for just being a beautiful soul in general.