Photo by Ed Robertson on Unsplash

The path to becoming a skilled Software Engineer is full of books, readings, and discussions about technologies and methodologies.

I spend a lot of time reading books, articles, exploring projects GitHub and, when I go out running, I listen to technical podcasts.

In this post, I will write down a list of technical books, articles and podcasts that I find interesting. I hope that someone will find it interesting as for me.

Not all the books I’ve read are listed here, only the ones I would like to suggest.

Technical Books I’ve read

This book is the one you MUST read if work with data (and I am quite sure you do). Since data is everywhere in modern software engineer, everyone must read it.

This is not too detailed about some advanced aspects, in order to keep it still readable, but a rich bibliography and a good style of writing compensate for it. Martin Kleppman is a researcher and you can find it reading the book.

I liked it so much!

Designing Distributed Systems

This book provides repeatable, generic patterns, and reusable components to make developing reliable systems easier and more efficient — so you can free your time to focus on the core development of your app.

I’ve learned so much from this book and it is a great reference for me during my work.

For each pattern, examples are provided, using Kubernetes as the orchestrator in order to abstract infrastructure details.

You can try out examples using minikube on your computer.

Elixir in action

Learning a new programming language is always a new challenge.

You could extrapolate some best practices and approaches that you could bring to your everyday work life, also using other programming languages.

Recently I have read Elixir in Action and I’ve found it a very interesting book.

I don’t know if I will ever work with Elixir but I like this language. I like the clearness and the power of the BEAM platform which has been brought back to our times by Elixir in a fancy and modernized style.

I’ve found this book very interesting and helpful. The author expresses advanced concepts with clearness and passion.

The art of multiprocess programming

I like the part “The art of…” in the title of this book and I think it is the best way to express this concept.

This book is a detailed guide to multicore programming and provides comprehensive coverage of the principles, algorithms, and tools necessary for effective multiprocessor programming.

The book uses Java as the programming language to show examples and algorithms, but you can extend those arguments (almost) every multi-thread programming language.

I have had the opportunity to use it as a textbook during the course of Parallel Programming at the university and I thought it might be one of the books to keep during my journey.

Microsoft Application Architecture Guide

This was the first book about architecture I have read and, you know, truly first love is not forgotten.

I think this book is valuable in the sense that it addresses most of the issues you’ll face when building an application and will help them to identify appropriate strategies and design patterns that will help you design your solution’s layers, components and services.

Some of those patterns are now deprecated but the book is still a good guide to learn how to read and analyze architectures.

Artificial Intelligence — A modern approach

It was first published in 1995 and the fourth edition of the book was released on 28 April 2020. It is used in over 1509 universities worldwide and has been called “the most popular artificial intelligence textbook in the world”.It is considered the standard text in the field of artificial intelligence.

In the end, Artificial Intelligence didn’t hit me, but this book is very good to start and to go deep in Artificial Intelligence.

I like that this book covers a lot of ground and provides super useful information and algorithms.

UNIX Network Programming

This is like the bible for system programmers.

The book focuses on the design and development of network software under UNIX and it is for programmers seeking an in-depth tutorial on sockets, transport-level interface (TLI), interprocess communications (IPC) facilities under System V and BSD UNIX.

The descriptions are concise, detailed, and still accurate and the sample code is still viable for starting any networking project.

Programming with distributed objects — Java RMI

This book teaches you the foundation of Remote Procedure Call, starting from the explanation of the problem, developing a custom solution, and will explain to you how to master Java RMI.

Technologies used in this book are quite old and deprecated, but the theory behind them is still used in modern RPC (i.e. gRPC)

Functional Programming in Python

It was fun to read this book but… please, don’t do Functional Programming in Python! Python is not a functional programming language. If you like functional programming, use a functional programming language.

The Go Programming Language

This book is the de-facto standard resource for any programmer who wants to learn Go. Each chapter has exercises to test your understanding and explore extensions and alternatives. Source code is available for download from http://gopl.io/ and may be conveniently fetched, built, and installed using the go get command.

Even though Go is one of my favorite programming languages, this book is not one of my favorite ones, but I appreciated the way this book was organized.

I’ve read pieces of it when I was curious about some aspects of the language, but, after all, it didn’t hit me.

Technical Books I am going to read

Technical articles

Technical podcasts

Software Engineer from Italy