5 Books You Should Read Before You Start Your First Job In Software Engineering
Traditionally, students get only a small taste of the industry before graduating. You may find yourself chugging coffee at 3 am before a deadline; a hard lesson on project pacing. Perhaps you, a team leader, has to deal with a colleague upset about the balance of project work. Despite these experiences, you'll surely be learning even more from the countless lessons within Software Engineering industry.
These challenges can often spark trouble for a young software engineer, sometimes even inconveniencing senior engineers likewise. But even if failure is the end result, there's always something new to learn. Thankfully decades of experienced professionals have recorded their professional and personal journeys as books, five of which I want to highlight.
Guidance For The Aspiring Software Craftsman
This book is a great way to build on skills when entering the industry, great for keeping as a reference for daily occurrences you may face. Most of the book imagines short parables that an industry newcomer may experience, and how to carry them out for the most favorable outcome.
The flow of each scenario plays out as Context -> Problem -> Solution -> Action, acting as a cookbook for your career. Each little recipe gives you some insight into the workplace you take a part in. These highlighted skills will make you a more diversified and experienced software craftsman.
Not only does this book show you how to spearhead the workplace from every angle, but it also helps with the growing pains you would experience from a fresh start in the industry. For example, the imposter syndrome hindering your learning, or communication gaps you may uncover as you start taking more leadership roles. It stays generalized for the context of a Software Engineer while still being descriptive in the solutions it provides.
My favorite recurring theme in this book is their "wearing the white belt" mentality, something both junior developers and senior developers do alike. You must approach it with an open mind, ready to put apart their preconceptions and learn something new. It's something a vast amount of developers need to be reminded of to help keep their skills from going stagnant.
From Journeyman to Master
This book is a go-to for many weathered engineers. Newcomers can often find themselves cutting corners to fit project requirements, and this book enforces ways to put this to an end. By making bite size sections and useful tips to remember, it can make a lasting impact on any engineer wants to ascend from good to great.
One concept invaluable to conceptualize at an early point is the idea of Software Entropy. Often, newcomers can ask the question, "How can something rot when everything you do to it is an improvement?" The Pragmatic Programmer claims: don't touch something you don't understand. Limit your work, and fix the broken windows before moving on.
The book highlights another important sector of software development: organization. Tip 11: DRY is Don't Repeat Yourself. Something seemingly simple can help clarify application behavior, especially when important restrictions are shared across massive projects.
I think my favorite part of this book is the massive list of resources and anecdotes throughout. There's also an updated 20th anniversary version with even more modern tips and suggested languages for a programmer to investigate. As any good book should, it gives many resources to help fuel your love for the industry.
Tools For Talking When Stakes Are High
After your first project, you'll likely hear the term Crucial Conversation arise, especially if the project struggles on a communication level. Connections may be strained, personal issues may have an impact on productivity, and emotionally invested individuals could suffer. This is what the authors coined as Crucial Conversations, events anyone can experience when stakes are high.
No matter if you are a business manager, concerned spouse, or annoyed with the in-laws, this book portrays fantastic approaches for dealing with high-intensity conversations. By accurately describing the possible scenarios that you may encounter, it portrays a good picture of natural human responses you may have to comprehend.
Much of managing crucial conversations isn't just observing and watching someone else's emotions, but also managing your own. Many people fail to recognize when their emotions start controlling their actions; having a significant impact in crucial business decisions. The book provides several techniques to recognize when conversations are starting to crumble, and how to restore an important discussion.
My favorite thing about this book is how real the conversations feel – especially the ones dealing with romantic relationships. By contrasting two similar scenarios with different conversational approaches, you can see how thought out conversations can make a significant difference, especially when applied to your personal life.
Imagine taking someone's self management and relationship skills into a measurable quotient. That is what this book claims to do, coining their own term EQ as compared to IQ. The book is a bit more on the self-improvement side, but it still has very important lessons that I feel are valuable when transitioning from the busy student life to the more introspective and careful Software Engineering world.
This book claims Emotional Intelligence is comprised of four key components: self-awareness, self-management, social awareness, and relationship management. The former two are focused internally, and the latter two are focused externally. By mastering these skills, you can see your own EQ raise and improve your life both personally and in relationships.
Not everything highlighted in this book is solely conversational. Many human features can be recognized and used to help better a connection. The book highlights giveaways such as body language, and how they can explain a message that is intentionally (or unintentionally) sent to you.
My favorite approach this book takes is how it treats Emotional Intelligence like a quantifiable skill. It trains you to better yourself as if you were a musician, improving your musical talent. It gives you self assessments, encourages you to find an EQ mentor, tells you to track your progress, and ultimately can have a successful impact on your emotional management skills.
Essays on Software Engineering
"The bearing of a child takes nine months, no matter how many women are assigned" - Theodore von Kármán
You may have heard this quote. The Mythical Man-Month is a book that applies this and other similar concepts towards software management, first published in 1975. Despite its age, the book holds up in terms of classifying the intricacies of software engineering projects.
It may seem odd to recommend a book about project organization before you enter the realm of software engineering, considering a vast majority of industry rookies rarely manage their own project. Despite that, any member of a team should recognize the importance of project organization. This book explains why projects take so long, why quality matters in something as complex and precise as computer programming, and how to avoid the "tar pit" that has caused countless projects to fail.
One major component the book focuses on is the declassification of the "man month", which is not a valid quantity as the title suggests. Many projects believe that the more manpower added to a project, the faster it is completed. Quite often that figure does not hold up and large, long-term projects can succumb to overwhelming pressure.
Like a well-annotated textbook, the thing I appreciate the most about this book is how we can see ideas develop over time. The field of software engineering has expanded GREATLY since the 1970's, and this book is no exception. For each revised edition the book provides a synopsis of the beautiful concepts that aged like a fine wine, but also explains how several sketchy ideas aged like milk. I would suggest reading the book with a second bookmark in the Propositions of the Mythical Man Month: True or False? chapter, reviewing each chapter's notes as you complete it.
You may be successful in the industry without reading every one of these books, but the important thing to remember is to never stop learning. It doesn't matter if it's through books, podcasts, tech talks, or even blog posts, you can't ever let yourself fall behind in such a bustling industry as software.
You can only learn so much by yourself, so why not take a peek into the mind of another professional? An open mind is what makes a good engineer a great engineer, and is the greatest tool at our disposal.