The Pragmatic Programmer, a timeless book

This year I reread the legendary The pragmatic Programmer by Dave Thomas and Andy Hunt. I personally believe that rereading technical books after some years of experience is worth it, you’ll always understand something more, or learn. With this book, it was no different, everything happened.

The first time I read it, I was a young developer starting my professional journey as a software engineer, I remember reading some chapters and doesn’t understand not at all, but the final feeling was that I was reading something nice and great, especially the first chapter, this part of the book helped me a lot to understand the software engineers life, and how to manage my work and future.

Overall, the feeling was even better, now with many years of professional experience writing software, all the wisdom of this book was more worthwhile and impact. Every sentence makes you think about it, and every chapter makes hours of reflection on our work.

A must-read book for every people working with software, with any experience, this book will be worth it and make you a better professional. This book is soft and doesn’t have many codes, but it will make you learn more than in any book with many pages of code.

Pragmatic Programmer is timeless, it will keep being read by many generations of developers, as is being by more than 20 years from the time this post is written. Even more worthwhile than reading it one time, is to keep visiting it for your entire career.

The following text as taken from the Pragmatic Programmer second edition Postface, it made me reflect on the importance of what we do and certainly gives a preview of the wisdom contained in this fantastic book.

In The Mythical Man-Month: Essays on Software Engineering, Fred Brooks said “The programmer, like the poet, works only slightly removed from pure thought-stuff. He builds his castles in the air, from the air, creating by exertion of the imagination.” We start with a blank page, and we can create pretty much anything we can imagine. And the things we create can change the world.

From Twitter helping people plan revolutions, to the processor in your car working to stop you skidding, to the smartphone which means we no longer have to remember pesky daily details, our programs are everywhere. Our imagination is everywhere.

We developers are incredibly privileged. We are truly building the future. It’s an extraordinary amount of power. And with that power comes extraordinary responsibility.

How often do we stop to think about that? How often do we discuss, both among ourselves and with a more general audience, what this means?

Embedded devices use an order of magnitude more computers than those used in laptops, desktops, and data centers. These embedded computers often control life-critical systems, from power plants to cars to medical equipment. Even a simple central heating control system or home appliance can kill someone if it is poorly designed or implemented. When you develop for these devices, you take on a staggering responsibility.

Many nonembedded systems can also do both great good and great harm. Social media can promote peaceful revolution or foment ugly hate. Big data can make shopping easier, and it can destroy any vestige of privacy you might think you have. Banking systems make loan decisions that change people’s lives. And just about any system can be used to snoop on its users.

We’ve seen hints of the possibilities of a utopian future, and examples of unintended consequences leading to nightmare dystopias. The difference between the two outcomes might be more subtle than you think. And it’s all in your hands.

Dave Thomas and Andy Hunt, Pragmatic Programmer second edition Postface

Book I’ve read in 2018

I decided to make this post as a summarize of tech books that I’ve read this year, unfortunately this year I only read six technical books and six misc (that I’ll talk shortly at the end).

All these reviews I posted a book review on goodreads, as I started last month I’ve marked all books as “read” today but I’ve read it during the entire year, you can check my profile at Goodreads here that in 2019 I’ll use this social network on the right way, feels free to follow me.

This year I’ve read different kinds of books, because some books I decided to read because of unexpected needs like, the operating systems books I decided to read because I felt curious at university classes, or that I decided to read “Working effectively with legacy code” to improve my knowledge of legacy code and help more at my work. Let’s start each book review.

99 Bottles of OOP

99 Bottles of OOP Cover

You can check this review at Goodreads here.

I don’t have how to not give a five star to Sandi Metz when talking about OOP. This book is a complete book of OOP and if you make the exercise at the beginning of the book it will blow your mind and increase your experience with the book. It’s a good sequel to Practical Object-Oriented Design in Ruby.

I have a love relationship with Sandi Metz books, and this is not an exception, I recommend this book for all programmers, the quality of the lessons about object oriented programming is unparalleled.

If you can, you can buy it at Sandi personal site, just click here.

The Clean Coder

The Clean Coder Cover

You can check this review at Goodreads here.

Robert C. Martin is very famous for the “Clean Code”, on this book he writes about something like one “code of conduct” that every programmer should follow, and It’s very controversial but for me, it’s normal because is his opinion. I didn’t like the book because the entire book sounds like someone telling you a list of conduct rules that you should follow to be a good programmer, it doesn’t mean that you don’t need to follow any rules described, some rules are good and in my opinion you need to follow them (some of them), but I feel worried if someone read it and start following all these rules as if they were all true without wondering about.

One good thing in this book is the real stories that uncle bob writes almost in the entire book, some stories are very interesting and tell a little about the past and the background of the author.

3 stars.

If you can, you can buy it at Amazon, just click here

Arquitetura de Sistemas Operacionais

Check my last posts:

Arquitetura de Sistemas Operacionais Cover

You can check this review at Goodreads here.

This is a Brazilian book and as you can perceive with the title, it is written in Portuguese, but I’ll make a summary in English.

This book is awesome and the translated title is “Operating Systems architecture”, its not a deeply technical book if you compare with Tanenbaum’s books for example, but it works as expected as a starter kit for operating systems, it has many pictures that can help understand the topics. It is basically a summarize of all operating systems without going deep in any “code”. For me, it was a five stars read.

If you can, you can buy it at Amazon, just click here

The C Programming Language

The C Programming Language

You can check this review at Goodreads here.

The C bible, this book nowadays still relevant and can be a good C book for those who are starting or want to remember to program on C language. I don’t recommend it for beginners, I think that there are good books of C programming for beginners that don’t have any background.

If you can, you can buy it at Amazon, just click here.

Working Effectively with Legacy Code

Working Effectively with Legacy Code

You can check this review at Goodreads here.

This book is famous and I think when it was written, it made a lot more sense than nowadays. In most parts, the book treats legacy code only as the project that doesn’t have tests and spend a lot of time telling you how to make changes in small steps and write tests, unfortunately nowadays many developers deals every day with legacy code that have tests and face other kinds of problems like, libs versions, architecture, technical debts, refactoring and much more (The book talks about some problems that I described here, but not in an up-to-date way), the fact that the code “doesn’t have tests” is not the only thing that classifies it as legacy code anymore.

If you’ll read this book, jump to chapter 14.

If they release the second edition of this book, I’ll buy for sure.

If you can, you can buy it at Amazon, just click here

Automate the Boring Stuff with Python

Automate The Boring Stuff With Python Cover

For those who already follow my activities you already know that I’ve read it, and I already have a full review here, at my blog, if you want to check the full review click here

You can check this review at Goodreads here.

5 stars for beginners.

3 stars for programmers who already know how to program in another interpreted programming language like Ruby.

TL;DR: It’s a book recommended for novices, for me, it’s a good book for beginners, but for people who already know how to program in other dynamic and interpreted programming language, I think is not necessary to read this book, go ahead an read something more advanced.

The book is divided into two parts, the first one talks about all the basic things of any programming language like variables, loops, ifs/else and etc. This part is good to understand the basic of python. This part covers all between variables and manipulates text.

The most interesting is the second part when you create a lot of applications to automate boring stuff, but the first part is good to understand and knows the python basic. One thing that I loved on this book is the fact that it has a lot of exercises (with answers) to you train what you learned on the chapter, if you do all the exercises your read will be funnier and you’ll learn much more.

Conclusion: The only bad thing on this book is that this is a simple book for people that already know how to program, but this is not a problem because the book doesn’t say that is something advanced, but even for who already knows how to program, the second part with practical projects can be very good.

If you can, you can buy it at Amazon, just click here

How to Win Friends and Influence People

This is the only non-technical book that I’ll talk about on this post because for me it makes sense and I’ll be short.

How to Win Friends and Influence People Cover

You can check this review at Goodreads here.

A good and classic book of how to deal with people and leadership. The book shows you a lot of real examples and histories, with some obvious things and some not so obvious.

If you can, you can buy it at Amazon, just click here

What’s next?

My focus on 2019 first semester will be compilers and programming languages design, I already bought some books and start reading, I think I’ll make great posts about compilers 🙂

Final thought

If you have any question that I can help you, please ask! Send an email (otaviopvaladares@gmail.com), pm me on my Twitter or comment on this post!

Follow my blog to get notified every new post:

Automate the boring stuff with Python review

A few weeks ago I finished reading “Automate the boring stuff with Python” from Al Sweigart, In this review, I’ll try to make a good review of the book and talk about the main chapters.

It’s a book recommended for novices, for me, it’s a good book for beginners, but for people who already know how to program in other dynamic and interpreted programming language, I think is not necessary to read this book, go ahead and read something more advanced.

TL;DR: If you know how to program in another interpreted programming language like Ruby, go ahead and read something more advanced, if you are a beginner, start with this book, it’s a very good book to start coding.

If you want to know more about this book, you can check here: https://automatetheboringstuff.com/

Print / Publisher

The book publisher is the famous no starch press, that have a lot of famous books like:

And much more, I think every experienced programmer knows nostarch very well because they have a lot of famous and good books, if you are a beginner, you can trust them.

I didn’t have the physical edition of this book, I’ve read the digital edition on my Kindle Paperwhite, read technical books on digital readers is always it’s always a fear because some books don’t look good at the small screens, especially the code snippets, but this was not the problem of this book, I think large publishers like nostarch or O’Reilly you’ll never going to have this problem.

The physical edition I think should be excellent too, because I have other books from nostarch and no one disappointed me.

Content

The book is divided into two parts, the first one talks about all the basic things of any programming language like variables, loops, ifs/else and etc. This part is good to understand the basic of python. This part covers all between variables and manipulates text.

The second part and the most interesting show you how to automate boring stuff with python in a simple way, at this part you develop a lot of applications, for example reading Excel documents. This part has eleven chapters, talking about a lot of things, this is the best part of my opinion, the author shows you how to do a lot of cool things like web scraping 🙂

Final Conclusions

The most interesting is the second part when you create a lot of applications to automate the boring stuff, but the first part is good to understand and knows the python basic. One thing that I loved in this book is the fact that it has a lot of exercises (with answers) to you train what you learned in the chapter, if you do all the exercises your read will be funnier and you’ll learn much more.

The only bad thing on this book is that this is a simple book for people that already know how to program, but this is not a problem because the book doesn’t say that is something advanced, but even for who already knows how to program, the second part with practical projects can be very good.

Final thoughts

This is my first book review and I’ll try to get better on the next review posts, I’ll try to review every technical book that I read.

If you want to know more about this book, you can check here: https://automatetheboringstuff.com/

If you have any question that I can help you, please ask! Send an email (otaviopvaladares@gmail.com), pm me on my Twitter or comment on this post!

Follow my blog to get notified every new post: