It’s fall 2017. Conducting research in application security and beginning side projects in Python sparked my pursuit to learn beyond the classroom. Sure, YouTube, Reddit, Medium and Stack Overflow are excellent resources for guides and instructional materials. However, I wanted to read about the stories, references and reasoning behind numerous topics in my field of interests.
Computer science is a hefty beast. Fortunately, textbooks, manuals and most variations of non-fiction, page-bound mediums provide unique takes on the subject. Ironically, sometimes the traditional methods of teaching provide the some of the most progressive insight into the software frontier.
Well… maybe that’s not entirely correct. Software is developed by humans, for humans (mostly). I’m very far from an expert in biology or psychology, but I’m willing to bet that humans connect through emotion and storytelling far more than technological creations do with each other.
Page-bound mediums are a great method of expressing and extending human emotions and stories, much like technology. However, the clear separation between the two provides a unique perspective into how and why we build software.
Enough background information! Maybe I’ve convinced you on the importance of books in computer science… and maybe not.
Regardless, I’m going to try to convince you to read some books. You might have been avoiding the medium since AP English. Don’t worry. I’ve got you. These books are fun, informative, and the value-per-page ratio is off the charts.
Read this! Read that! Read them all! Read none of them! Read some of them! Read these ones! Read those ones!
I recommend that you ask around. Specifically, ask around within relevant circles about the books and articles that those people recommend.
Professors and industry veterans may recommend staples such as Cracking The Coding Interview and Algorithms To Live By. These books are classics and you should definitely read them… or, at least, the ones that sound most interesting to you.
While the classics are near essential in some cases, I want to provide some books that you may have heard about, but never thought about reading yourself. As a computer science student and potential software engineer, you may not have thought about…
- …how site reliability engineering affects the entire software development lifecycle.
- …the “triumphant, turbulent stories behind how video games are made”.
- …agile methodology (taught in very “meta” lean fashion)
I’m a firm believer in learning outside of your comfort zone and immediate work environment. For instance, running backs not only practice running and catching a football, but also spend some time throwing too. The culmination of skills practiced outside of your immediate skillset can help your overall prowess as a football player.
What I am trying to say is that you might not be interested in being an SRE, working in the gaming industry or being part of a mega fast Agile team. However, I believe that learning outside of your immediate interests can help you become a better computer scientist or software engineer. So… let’s dive in!
Book 1: Site Reliability Engineering
- Title - Site Reliability Engineering: How Google Runs Production Systems
- Author - Various
- ISBN - 978-1491929124 - (free for digital use!)
Description - This book defines what it takes to solve operational problems with software. Its approximate 500 pages and 34 chapters may be daunting, but each chapter accomplishes its goal both concisely and efficiently. Even for the pure embedded-software engineers, red team operators, IT server administrators, this book divides its subject matter such that you can read exactly what you want to, without having to comb through the pages. From high level topics such as Post-Mortem Management to detailed Google systems, such as Borg and Kubernetes, this book encompasses the bleeding-edge of the SRE/DevOps umbrella.
What pulled me - Admittedly, this may be my most “biased” pick. My interests have always teetered around the DevOps, InfoSec and Software Engineering realms. Learning about the position’s existence immediately led to extensive research. I am always looking for ways to pursue my career-oriented passions, such as Python, security, and containerization, in order to be the best engineer that I can be. Seeing that roles such as an SRE exist, I wanted to learn all about them.
What may pull you - Your interests may range anywhere from the very beginnings to the very endings of the software development lifecycle. While my undergraduate interests have floated around the middle, you might not have had a chance to see the handoff between development and operations.
Book 2: Blood, Sweat, and Pixels
- Title - Blood, Sweat, and Pixels: The Triumphant, Turbulent Stories Behind How Video Games Are Made
- Author - Jason Schreier
- ISBN - 978-0062651235
Description - This book reads out like a nicely organized collection of short stories… except they are neither short nor are they nice. From indie developer to studio juggernaut, Jason Schreier brings out some of the best investigative journalism seen in the gaming industry. These stories are the truest “behind the scenes” looks of video games that I have ever seen. From Destiny to Stardew Valley, this book not only shows the technical challenges behind game development, but also financial, complex and unknown obstacles that all stakeholders face when creating video games.
What pulled me - I’ve always loved video games. Of course, I’ve dabbled in creating games and explored the industry at a basic level. Jason’s rise to fame as a talented, investigative journalist indicated that a new era of transparency and community involvement was here. Thus, I was excited to read this book. What I did not expect was that this book would apply to MANY other industries. The parallels are not always exact or even close, but are apparent nonetheless. How do we battle deadlines? Who’s the true customer? What value do varying teams generate? How do we overcome huge mistakes? These questions were not directly answered by Jason, but were provided through his stories. Besides the practical knowledge gained, this was also a very enjoyable read!
What may pull you - Similar to what pulled me, the parallels between these stories and your experiences in other industries might be of interest. If you are curious about what being in the gaming industry is like, this book is a must read. If you are an aspiring software engineer or computer scientist, I would still recommend it. The planning, consequences and victories of deploying software are beautifully played out in Jason’s book.
Book 3: The Agile Samurai
- Title - The Agile Samurai: How Agile Masters Deliver Great Software
- Author - Jonathan Rasmusson
- ISBN - 978-1934356586
Description - Part of The Pragmatic Programmers series, this book is a guide on HOW TO BECOME A SAMURAI……… well, in Agile at least. The irony here is that not only is this book about teaching the Agile method, but it’s also written in Agile. This is evident the minute you hit the very front page. Jonathan Rasmusson takes no extra time in explaining the Agile method. While the everyday reader may not know if the the book was completed in one week sprints, its content-rich, lean, fast, and pragmatic style are like nothing I’ve ever read. That’s a great thing.
What pulled me - Simply put, my undergraduate interests included wanting to build software when I “grew up”. Agile is the current, and arguably, most successful, method of delivering great software. It involves vital concepts, such as empathy-led design thinking and focused development with minimally viable products. This read was very easy as its almost like a picture book. However, do not underestimate its style because it’s absolutely content-rich.
Why may pull you - In my experience as a hackathon founder, I have seen a lot students know exactly what they want to create and what tools to use. However, many have never developed software within a team or corporate environment. Your stakeholders do not just include the customer, but also your boss, their boss, the public market, and even your roommate’s cat! ………yeah, maybe not your roommate’s cat, but the idea is that learning to empathize, creating minimally viable software and creating communication plans might be aspects of development that you might not have thought of before.
I hope that you try out at least one of these three reads! However, remember to enjoy your undergraduate experience. I’m only three months out and while I’m so excited to step out into the real world… I might actually miss taking eighty-four pictures in front of Wait Chapel.