Book and course references
A short list of really good books for Software Engineers
5 min read
This is a list of books and courses that one may find pertinent to several areas of software development. Please note that, even though this is an article, this is a "living list" which will be updated from time to time. Furthermore, of course, there are many more great books out there.
Team lead, tech lead... these positions have similar responsibilities and there is no clear definition on the market of what is what. Regardless, a management and technical component is always involved, and that is what these references below are about.
The Manager's Path: A Guide for Tech Leaders Navigating Growth and Change - a book that shows the path from a beginner manager, to a big executive. It is fun to read and gives one a perspective on what it is to be a manager.
Talking with Tech Leads: From Novices to Practitioners- this book is a collection of stories from several tech leads. it gives a perspective on the biggest challenges of such a role.
Presentation Zen: Simple Ideas on Presentation Design and Delivery (Voices That Matter) - this has to do with presentation techniques, which comes to be quite useful in team lead's activities.
Managing Humans: Biting and Humorous Tales of a Software Engineering Manager - a book with several useful tips for management.
Radical Candor: be a kick-ass boss without losing your humanity - it is a book about communication. But not your common-sense way of speaking with people, however, a broad range of techniques and a unique perspective of communicating efficiently.
Become an Effective Software Engineering Manager: How to Be the Leader Your Development Team Needs - this is a great book with tips when starting your first management role.
Quality Engineer goes from someone who does manual testing to an engineer who develops automated ones. Finding references for this position is not easy.
In the interest of full disclosure, I did not read the books nor took the courses from this section, however, I got very good recommendations, thus I am putting them here.
In one word it means a programmer. It could be backend, frontend developer, SRE Engineer, or whatever other position for someone who builds code and handles infrastructure.
Code and best practices books
Domain-Driven Design: Tackling Complexity in the Heart of Software - a classic. Every software engineer should read this book. It teaches you everything you should know about modeling systems. This book is not for the fainted-hearted.
Design Patterns: Elements of Reusable Object-Oriented Software - this is the original design patterns book. It is not the easiest reading, but worth it.
Head First Design Patterns: A Brain-Friendly Guide - the best book I read about design patterns. The patterns are well explained, as well as their purposes.
Clean Code: A Handbook of Agile Software Craftsmanship - you probably know about lots of code best practices, and most of them probably come from this book.
Designing Data-Intensive Applications: The Big Ideas Behind Reliable, Scalable, and Maintainable Systems - a very good book about the distributed system. The subject is not trivial, however, the book makes a very good job explaining it.
Per this reference, microservices can be defined as:
Microservices are an architectural and organizational approach to software development where software is composed of small independent services that communicate over well-defined APIs. These services are owned by small, self-contained teams.
- Building Microservices: Designing Fine-Grained Systems - a very complete and comprehensive book for getting in touch with microservices.
Apache Kafka Series - Learn Apache Kafka for Beginners v2 - your classic Kafka course, a very good one though.
Docker and Kubernetes: The Complete Guide - this is a very complete and good course about docker and Kubernetes. It is lengthy but worth taking it.
Amazon Web Services
Per the amazon website, AWS means
AWS is designed to allow application providers, ISVs, and vendors to quickly and securely host your applications – whether an existing application or a new SaaS-based application. You can use the AWS Management Console or well-documented web services APIs to access AWS's application hosting platform.
- Ultimate AWS Certified Solutions Architect Associate 2022 - this is an excellent AWS course, especially for beginners.
Hopefully, this is self-explanatory, but here it means references to subjects like data structures, sorting, graph algorithms, etc.
Introduction to Algorithms, 3rd Edition (The MIT Press) - this is the algorithm bible. It has everything and it is surprisingly not hard to understand.
Algorithms (4th Edition) - quite a good algorithm book. The nice touch is that the examples are in Java :).
The Algorithm Design Manual - this is another good alternative for learning algorithms. It is not so lengthy, therefore it helps if one wants a quicker reading.
- Algorithms: part 1 - Coursera - this is the best algorithm course I took. it is free, and the exercises are awesome. I do recommend it. There is the "part 2" of this course, but I did not take it.
This is not very easy to define, so please read this post for a lengthy description of the theme. Unfortunately, not too many references are provided here.
- Artificial Intelligence - Coursera - free and excellent course for newcomers in the area. A bit of calculus is necessary, but nothing extraordinary.
- System Design Interview – An insider's guide - this book is surprisingly good. It is short, yet very well elaborated. It is recommended not only for job interviews but mostly for the ones who wish to learn more about software architecture in general.
Here is a very nice definition:
Cryptography is the study of secure communications techniques that allow only the sender and intended recipient of a message to view its contents. The term is derived from the Greek word kryptos, which means hidden.
- Cryptography 1 - Coursera - I do not know much about cryptography in general, but this course was amazing. I think it was the hardest course I took, but quite worth it. If one truly wishes to understand cryptography, this course will teach you everything you need to know. There is also the "part 2", but I did not take it.