Read These 5 Programming Books in 2020

stack-of-books.jpg

At Books on Code, our motto is bringing the book-lover culture to programmers. Reading technical books ought to be fun and exciting. We should look forward to our hot mug of tea and technical book after a long day.

That’s why today I am talking about 5 programming books I am out-of-this-world stoked to read.

In this post, I cover programming books of all kinds, including books on programming languages, books on best practices, and a fun computer science book, too. So relax in your favorite spot, brew a hot beverage, take a long, mindful sip, and let’s talk about books for programmers.

Overview

Because we’re all programmers here and may not be in the “Book Lovers” scene, here is a definition of the #bookhaul:

A book haul is when you go and buy books and then you do either a post, vlog, or any other form of social media posting about what new books you bought.

source: tagdef.com

In other words, the book haul is a way for book lovers to share the feeling of excitement and hype with their community. It boosts anticipation and stimulates conversation throughout the reading lifecycle. Why talk about technical books that we have read when we can be talking about them beginning, middle, and end?

For programmers, the book haul season is December — in other words, directly before you might lose your professional development budget. My employer, Pivotal Software, offered a generous prodev budget, and the pressure was on since its acquisition by VMware was closing at the end of the year.

Because of these circumstances, this was my shopping experience: I frantically threw Amazon-recommended programming books into my cart. And here we are! My Book Haul.

In this post, I’m going to go over the unread books I am most excited about (so some of them I am keeping secret). In the following sections, I cover my hopes and dreams for those reads. Follow this post to the end, since I’ll award fun prizes for categories like Most Anticipated Read.

This book haul is also an open invitation to read together. Feel encouraged to Tweet at me or email me about these books or your own recommendations for future book hauls.

Book #1: Head First: Design Patterns

Not going to lie: I am in love with the Head First series.

The topic of the Head First book is practically inconsequential because I love the formula so much: the cross-word puzzles at the end of each chapter, the “Fireside Chats” between the opposing views of two technical concepts, tons of games and exercises, and the kooky fake projects (for example, in this book you build a duck simulator called SimUDuck).

The informal writing is endearing, too. Head First: HTML & CSS was everything to me when I was a freshman in college. It set the standard for what a technical book ought to be: both fun and educational, since fun helps drive learning.

Another benefit of the Head First series is that it encourages readers to engage with a pencil and write directly into the book. After being at my computer all day, I am grateful to sit away from my computer with a hot beverage and have another way to better my skills.

I came to specifically Head First: Design Patterns through my previous article, which is a book review on The Complete Software Developer's Career Guide. The book cites design patterns as a timeless go-to when searching for technical books to read, and the author recommends this particular volume on his blog.

Design patterns are essential building blocks for programs that allow for solving common problems more easily and creating a shared language between programmers. I anticipate reading this book both for the fun factor as well as the obvious benefits.

My understanding of this book is that it is a lighter introduction to design patterns than other volumes about design patterns. Head First books are good at making you feel comfortable and not intimidate you into thinking that you are hitting ridiculously-steep learning curves over and over. If you have no familiarity with design patterns, I imagine this is a perfect starting point.

My edition of Head First: Design Patterns uses examples from Java 8, which, while I am not a Java developer, I think that it won’t be a problem since I am comfortable with other object-oriented programming languages.

To warm you up to the idea of reading this book with me (and signing up for my email list!), here are the first five chapters (of 14 chapters) in this book with key quotes from the chapter descriptions:

  • Chapter 1: Welcome to Design Patterns
    “[L]earn why (and how) you can exploit the wisdom and lessons learned by other developers who’ve been down the same design problem road and survived the trip.”

  • Chapter 2: Keeping Your Objects in the Know
    “We’ve got a pattern that keep your objects in the know when something they care about happens. […] The Observer Pattern is one of the most heavily used patterns in the JDK, and it’s incredibly useful.”

  • Chapter 3: Decorating Objects
    “We’ll re-examine the typical overuse of inheritance and you’ll learn how to decorate your classes at runtime using a form of object composition.”

  • Chapter 4: Baking with OO Goodness
    “There is more to making objects than just using the new operator. You’ll learn that instantiation is an activity that shouldn’t always be done in public and can often lead to coupling problems.”

  • Chapter 5: One of a Kind Objects
    “You might be happy to know that of all patterns, the Singleton is the simplest in terms of its class diagram; in fact, the diagram holds just a single class! But don’t get too comfortable; despite its simplicity from a class design perspective, we are going to encounter quite a few bumps and potholes in its implementation.”

Book #2: Strategic Writing for UX

“This is not a book for programmers,” you might be thinking. But at the same time, haven’t we all done it? You know — written UI text?

The need to write UI text sort of happens. You exposed a field and the field needs a name and people need to know how to use it. When I worked for marketing agencies, the designers were interested in the copy on the website itself. The CMS configuration fields — the place where our customers would spend all of their time — was ultimately up to me.

At Pivotal Software, the product I work on (Pivotal Platform) has very little UI. It is a complex platform designed for Fortune 100 companies to run their application runtimes (in other words, their entire business) on top of. The main interface is Operations Manager, which itself has been going in the direction of automation with YAML files and a command-line interface. For Pivotal Platform, front-end engineers and designers were a scarcity compared to Go and Ruby engineers and product managers.

My point: by the nature of the product, engineers end up writing UI text sometimes.

As software programmers, we know how important it is to name and label things. But naming things — and being strategic about it — can be really, really hard. Say it with me: “There are only two hard things in Computer Science: cache invalidation and naming things.” I know that quote is old and I’m sorry if I hurt you by saying it.

Strategic Writing for UX has a tagline: Drive Engagement, Conversion, and Retention with Every Word, which in itself drives my retention. I can tell that the book is no hypocrite. Who doesn’t want to drive engagement, conversion, and retention? As the founder of Books on Code, my care for this topic has gone up 1000 percent.

We have both had to conform to all different styles of writing in our lives. We had the 5-paragraph essay structure in high school, which for me turned into 20-page seminar papers in grad school, and many more academic pages for the thesis project. I work as a technical writer and as a blogger and I have written copy for websites.

Even in development, too, we are writing code and comments and naming things, which is still, ultimately, writing.

I believe that programmers excel when they know how to write.

And just because you learned how to write in one way, that does not mean you know how to write in another. My blogging is informal, which is different from my academic and technical work. I must show my personality here to engage readers, whereas my technical writing conforms strictly to a style guide and is designed for clear, unambiguous communication.

Now, to get you excited for this book, in the table of contents of Strategic Writing for UX, here is the breakdown of just Chapter 1:

Why: Meet the Goals of People and the Organization

Align the Goals of the People and the Organization

Choose Content to Meet the Goals

Identify Purposes, Opportunities, and Constraints

Imagine and Test Solutions

Summary: Words Make Experiences Work

Don’t these headlines make you want to jump up and down and say “Yes!”? Especially if you work at a large software company, “Align the Goals of the People and the Organization” sounds like magic.

I’m thoroughly convinced this is a book for anyone working in the software industry (even though I haven’t read it yet!). As a bonus, this is a handsomely-printed book, with glossy pages and color.

 

This book has a self-published feel, with large 8.5” by 11” pages. The back description says, “The material is kept up to date by me and the community,” which I find funny, since my print volume can’t be revised.

I was drawn to this book by positive reviews and a clear table-of-contents. This is a no-frills React book, which I was looking for, since there are lots of frills that complicate React (like React Native and Redux), so I just wanted to cut through all of that and actually learn React at its core.

Flipping through this volume, I can tell that the technical writing is sharp and spot-on: it is clear, unambiguous, and precise. The examples are also simple and clearly demonstrate the concepts discussed. At the end of each short chapter, there is an Exercises section that you can do to solidify the concept. I like that the exercises also look simple — again, no frills, and not a lot of time.

I have been on the React journey for a little while now, so what is discussed in this book won’t be all new to me. I have been watching lectures on Pluralsight as well as building my own single-page application (SPA) in React. As I am building, I am stumbling across bind spots in my knowledge, which can’t easily be resolved with a search or a video.

I figured it was the perfect time to educate myself conceptually and have a comprehensive understanding of React itself. I am confident The Road to Learn React can meet my need.

Only a small sample of the topics covered in this book:

  • ReactDOM

  • Hot module replacement

  • Complex Javascript in JSX

  • ES6 Arrow Functions, Classes, Spread Operators, and Object Initializer

  • Local Component State

  • Bindings

  • Interactions with Forms and Events

  • Composing, declaring, and reusing components

  • Lifecycle methods

  • Conditional rendering

  • Client- or server-side search

 

Book #4: CODE: The Hidden Language of Computer Hardware and Software

I am amazed that somebody put the love and dedication into crafting this book. Without having read it fully, I can sense that it has the material of a classic.

My first impression: the writing is engaging; it’s loaded with diagrams, and it was written with extreme attention to detail. CODE by Charles Petzold (2000) is about the origins of code at both a philosophical and practical level.

The pages in this book are dense, and after reading only 20 pages of this 400-pager, I already feel closer to machines and to humanity.

The first page is a real attention-grabber, much like a good opening to a novel:

You’re 10 years old. Your best friend lives across the street. In fact, the windows of your bedrooms face each other. Every night, after your parents have declared bedtime at the usual indecently early hour, you still need to exchange thoughts, observations, secrets, gossip, jokes, and dreams. No one can blame you. After all, the impulse to communicate is one of the most human traits.

While the lights are still on in your bedrooms, you and your best friend can wave to each other from the windows and, using broad gestures and rudimentary body language, convey a thought or two. But sophisticated transactions seem difficult. And once the parents have decreed “Lights out!” the situation seems hopeless.

How to communicate? The telephone perhaps? Do you have a telephone in your room at the age of 10? Even so, wherever the phone is you’ll be overheard. If your family personal computer is hooked into a phone line, it might offer soundless help, but again, it’s not int your room.

What you and your best friend do own, however, are flashlights. Everyone knows that flashlights were invented to let kids read books under the bed covers; flashlights also seem perfect for the job of communicating after dark. They’re certainly quiet enough, and the light is highly directional and probably won’t seep out under the bedroom door to alert your suspicious folks.

Can flashlights be made to speak? It’s certainly worth a try.

This is an introduction to Morse code, to the concept of code itself, and how code helps us communicate under certain restrictions.

I believe all books, even technical books, can be fun and engaging reads. That was my motivation behind starting Books on Code. If anyone questions the artistic integrity of a technical text, I imagine CODE is a book to point them toward.

For anyone who wants to feel a sense of purpose in their career by diving into the nuts and bolts of the origins of code itself, I suspect this is the book. I highly anticipate reading it. Perhaps we can read it together.

Book #5: Understanding ECMAScript 6: The Definitive Guide for Javascript Developers

I picked this book out of my own necessity. I have read too many blog posts that say React.js is basically ECMAScript 6 and later. They say that if you learn React first, please go away and come back when you’ve educated yourself.

I have also preached the importance of learning any underlying technology in a previous article, The Definitive Guide for Front-end Developers in 2020. To future-proof ourselves — to properly think about the solutions we are implementing — we must understand what is actually happening.

I have watched Pluralsight videos on ECMAScript 6, too, and I now know some things. For example, I know about (and have used) the short-hand functions. I know that declaring variables with var is a no-no since it is global and many developers feel declaring variables with const is best, since bugs tend to arise when mutating variables.

“But,” I tell myself, “Knowing the basics isn’t good enough!”

ECMAScript 6 has been implemented on all major browsers since 2016, with regular releases. The changes introduced in ECMAScript 6 allows Javascript to better function as a language in a way we might actually expect. The introduction of better encapsulation and object classes likely brought many developers to tears.

I am confident in this book’s ability to deliver complete understanding for what ECMAScript 6 offers, and that is all I should expect, since that is all this book aims to do.

I find comfort in the forward by Dan Abramov, creator of Redux, which goes like this:

Just as I was becoming proficient with JavaScript, I felt that somebody pulled the rug from under my feet, and now I had to learn a new language. I felt bad about this for a few months. Finally, on Christmas Eve, I started reading a draft of this book. I couldn’t put it down. Next thing I knew, it was 3am, everybody at the party was asleep, and I understood ES6!

Understanding ECMAScript 6 has a drawback, which is the book was published in 2016, so it would be wise to study the annual release updates in addition to the book. I recommend the article New ES2018 Features Every JavaScript Developer Should Know and YouTube video What’s new in JavaScript (Google I/O ’19).

I find inspiration in Abramov saying “I couldn’t put it down.” I hope any book that teaches programming concepts to have that quality.

 
 

Book Haul January 2020 Prizes

Now that we have discussed five book-haul books and why I am excited to read them, let’s give some prizes!

These are the two books I am most eager and most pressed to read.

If there are books you are most eager to read from the list, tell me in an email or Tweet. Also, if there are types of books you would like to see me cover more (for example, more about native and less about web), tell me that as well!

Prize for “Most-Anticipated Read”

This is hard to choose. I had already shortened my list to five for the book haul — and I honestly anticipate reading them all. I think, ultimately, CODE: The Hidden Language of Computer Hardware and Software takes the prize because the opening pages left such a strong impression.

This book will improve me as a developer as well as improve me as a person, since it might shape my relationship with programming and how I think about problems.

It feels like a book for the soul: meant to help contemplate my role as a developer and how I fit into the fabric of the world.

Runner-up Prize for “Highest-Priority Read”

Everyone is in a different phase of their journey, in different specialities of development. Since I am primarily concerned with front-end development, and I want to be sure that I am well-versed in underlying technologies rather than abstractions, Understanding ECMAScript 6: The Definitive Guide for Javascript Developers is the highest on my must-read list.

While I am glad that any course or book teaching React covers ES6 topics, I have learned that knowing ES6 fully first and being able to piece the feature from the abstraction are as essential as learning CSS before Sass (which I talk about in Takeaway #2 of The Definitive Guide for Front-end Web Developers in 2020).

That is why I am going to prioritize reading Understanding ECMAScript 6 before anything else.

Conclusion: “Get hyped about reading!”

This article was beneficial for me to write, since talking about technical books with excitement is exactly what I need to dive in and feel like learning is awesome.

When I first discovered Head First: HTML & CSS in college, I felt like a weirdo. Who literally, unironically likes reading technical books for fun?

But now, I am not alone: we are all here because we love learning about computer and programming topics, and we are driven in becoming better problem solvers every day.

If you loved the January Book Haul and are driven to change the conversation about technical books, share this post.

If you want to keep the conversation going, sign up for my email list below.

If you want more exclusive Books on Code content about reading technical books and improving your experience with technical books so that you are always learning the fun way, you can sign up for my free email course, How to Get the Most From Technical Books.

And finally, I want to thank you for being programmers who are making the world a better place. By reading technical books and growing your skills, you are building better software all the time and transforming the industry.

I look forward to seeing you all in my next article.

 

Miranda Limonczenko

Miranda is the founder of Books on Code, with a mission to bring book-lover culture to programmers. Learn more by checking out Miranda on LinkedIn.

http://booksoncode.com
Previous
Previous

Are Front-end Developers Happy?

Next
Next

The #1 Book to Grow Your Programming Career in 2020