Resources list
The List Post: Resources
How and what resources I used to get in love with software development
Here is a list of things that I did to help myself learn how to program. I tried to create a chronological narrative, so, besides the list of resources, you can also follow the progress of interests and curiosities that I had.
From previous experiences, when I started I knew three things:
- I knew that I had to get myself totally immersed in this new reality (this means: getting to know the people, the literature, the vocabulary, the mental map of everything).
- I knew that I had to build a personal project, one that got me interested in learning because the final result would be of personal importance.
- I knew that I had to follow my eccentricities, personal curiosity and interests rather than a more formal curriculum.
Here is it:
- I started by not knowing what I wanted to do. I needed to discover things and create a mental map of this new universe. The first thing that I did was to search for reddit programming subs. The best that I found, and it helps me to this day, is the Experienced Devs. I read those guys every day.
- freecodecamp was the first step for me. I learned a little bit of HTML, CSS, and Javascript. I already knew, after finishing the javascript session, that I would not like to be a front-end developer.
- I bought a book about Python. This book, by Eric Matthes, helped to learn all Python’s fundamentals. I didn’t stick to the OOP section, though. I found it too hard at that time (not Eric’s fault). Eric’s book caught my attention because of the introduction, where he describes how he started to code due to his father’s kindness.
- I started studying Python and watching Corey Schafer’s playlist on Flask. I built a Blog with it, but I was only copying code, although you can learn a lot by just copying code.
- I found that I wasn’t ready for back-end development yet, so I bought the famous Al Sweigart book: automate the boring stuff with python. Since it’s not a book based on OOP, I had the chance to understand more of the basics. It was great.
- I went back to Corey Schafer’s tutorials, and finally started to understand how web development worked.
- Got a lot of well-known books like: Fluent Python (I learned a lot by trying to read things I could not understand), Python Cookbook (pay attention to the environment), Think Python (how to), Learn Python the hard way, etc.
- At this point, I started building a personal project. I used this book by William Vincent. I took a course by Henrique Bastos: Welcome to the Django. This was a key experience in my personal journey, as I stopped following tutorials and started building something completely unique. I learned a lot by coding by myself.
- While working at Robo Laura, and trying to understand a complex architecture, I got interested in books like Building Microservices and Designing Data-Intensive Applications. I didn’t have enough experience or knowledge to read neither of them, but I insisted a little bit and learned a thing or two that helped me. (I plan to go back to those books as soon as my general knowledge allows me).
- I was interested in software testing and FastAPI, so I bought this course from testdriven.io. I learned a lot about Docker, the web, Python, testing, FastAPI.
- I spent a whole day watching Hettinger’s talks on Youtube. This one is fun.
- The one course that changed everything: CS-61A. This course taught me how to think as a programmer. I did it twice, and would do again if possible (this time, in Lisp/Scheme). Later, I tried CS-61B and C, but didn’t get through them (I want to).
- I spent some time with this course, but sadly barely finished the first part. I want to get back to it, since it has taught me more about compiling and runtime etc than any other thing that I had watched / read.
- Thanks to a friend, I discovered two books that would change the way I think about software development: Robust Python and Modern Software Engineering. Robust Python taught me how to make really good code with Python in larger systems. And Modern Software Engineering taught how to think as a software engineer.
- Robust Python taught me how to make really good code with Python in larger systems. And Modern Software Engineering taught how to think as a software engineer.
- I got obsessed with the Cosmic Python book, but since I was having difficulties in following it, I started to learn Domain Driven Design, Hexagonal Architecture and other things like that. I didn’t go too deep, though. I will get there. The most important resources that I found were: DDD distilled, this talk by Brandon Rhodes, the talks by Scott Wlaschin, this being one of them.
- Got back to some relaxed stuff, started playing with Vim and other things like that.
- I strayed a little bit, as my interest would lead me to other paths, and read this book about Golang and tests and tried to read the beautiful piece of weird content called Clojure for the Brave and True (great read, but I gave up too soon).
- I was having trouble with testing (how to do it properly) and this talk by Ian Cooper really helped me to understand what is software testing and what is the best way to do it. Boundaries is also a great talk by Gary Bernhardt.
Blogs that I have been following lately:
- Dan Luu’s blog — a black hole of great references.
- Ben Kuhn’s blog — for fun and profit.
- Kents Beck’s Tidy First substack — just started it. It’s great.
- Arjan’s YouTube channel — Python great stuff.
- Dave Farley’s YouTube channel — Processes.
- Pragmatic Engineer by Orosz — I wish I had the money to pay the subscription. Great content to help us think about our profession.