garyprinting.com

Books That Transformed My Perspective on Software Engineering

Written on

Chapter 1: My Journey into Software Engineering

Since my high school years, I was aware that a career in Software Engineering awaited me. Following conventional advice, I pursued a Bachelor's degree in Computer Science. While I grasped the essential principles, my programming experience primarily revolved around academic assignments, culminating in an internship opportunity.

Reflective moment in software engineering journey

Photo by Markus Spiske on Unsplash

It was during my time at a small non-profit organization practicing Extreme Programming that my passion for coding truly ignited. Collaborating with exceptionally skilled engineers, I absorbed best practices and witnessed their enthusiasm for creating high-quality, enjoyable software consistently. Throughout my career, numerous books have impacted my approach, but five, in particular, have resonated deeply with me.

(Links below are affiliate links)

Section 1.1: Book #1 - Clean Code

Clean Code: A Handbook of Agile Software Craftsmanship

Amazon.com: Clean Code: A Handbook of Agile Software Craftsmanship (Audible Audio Edition): Robert C. Martin, Theodore…

amzn.to

Clean Code was one of the first recommendations I received, packed with valuable insights for Software Engineers seeking practical guidelines. Robert Martin is candid about his views on writing software, a perspective I found invaluable early in my career. Key takeaways include:

  • Prioritize meaningful naming for classes, functions, and variables
  • Simplify your software as much as possible
  • Ensure functions are concise, focusing on a single task
  • Maintain consistency across your codebase
  • Favor polymorphism over conditional statements
  • Implement dependency injection
  • Write tests that are fast, independent, readable, and repeatable

Section 1.2: Book #2 - Growing Object-Oriented Software

Growing Object-Oriented Software, Guided by Tests

Growing Object-Oriented Software, Guided by Tests [Freeman, Steve, Pryce, Nat] on Amazon.com. FREE shipping on…

amzn.to

This book emphasizes Test Driven Development (TDD) and the importance of building quality from the outset. Traditionally, teams would wait until project completion to deploy, but this book encourages the construction of a “walking skeleton,” essentially launching a basic application to mitigate risks early on.

Implementing this approach has significantly reduced the stress associated with going live; launch days feel more like celebrations rather than stressful events filled with anxiety about potential issues.

Insightful moment during software development

Photo by Anthony DELANOIX on Unsplash

Additional principles I learned include:

  • Favor telling over asking
  • Apply the Law of Demeter to avoid long method chains
  • Understand the Testing Pyramid (Unit, Integration, End-to-End)
  • If a failing test is challenging to write, consider redesigning the system

Chapter 2: Key Readings

The first video, 5 Books that changed the way I think about Software Engineering, delves into the transformative literature that has reshaped my approach to coding and software development.

The second video, 6 Books That Changed My Life (As A Software Engineer), explores additional influential readings that have impacted my professional journey.

Section 2.1: Book #3 - Refactoring

Refactoring: Improving the Design of Existing Code (2nd Edition)

Refactoring: Improving the Design of Existing Code (2nd Edition) (Addison-Wesley Signature Series…

amzn.to

Understanding refactoring can be daunting for those starting in Software Engineering. This book articulates what refactoring entails and how to implement it effectively to maintain clean codebases over time. The concept of refactoring refers to restructuring code without altering its functionality.

The joy of writing tests to verify behavior before simplifying code is immensely rewarding. This practice enhances test-writing skills while ensuring that passing tests confirm code functionality.

The latter half of the book, while dense, offers clear “recipes” for various refactoring techniques based on different code smells, encouraging critical thinking about when to refactor.

Section 2.2: Book #4 - 99 Bottles

99 Bottles - Sandi Metz

We are practical people. We love beautiful code but we're committed to getting things done. 99 Bottles of OOP enables…

sandimetz.com

I was fortunate to attend a workshop led by Sandi Metz, where I had the opportunity to engage deeply with the material in her book. This work focuses on effective Object-Oriented Programming (OOP) and refactoring, covering key principles such as SOLID.

The unique exercise of performing one-line refactors—modifying only a single line of code at a time—encourages a thoughtful approach to keeping tests passing while adhering to a specific methodology.

Section 2.3: Book #5 - Extreme Programming Explained

Extreme Programming Explained: Embrace Change, 2nd Edition

Extreme Programming Explained: Embrace Change, 2nd Edition (The XP Series)

amzn.to

This book revolutionized my perspective. Previously, my role as a Software Engineer involved working independently, focusing solely on meeting deadlines and maintaining quality. My days were often spent isolated, merging my work into the main codebase only for future deployments.

However, after joining a small team practicing Extreme Programming, I experienced a collaborative environment that accelerated my learning. We maintained various systems with a compact group, employing practices like writing tests first, discussing architecture, and pair programming, which transformed our workflow.

Key takeaways from this book include:

  • Emphasis on communication
  • A focus on simplicity
  • The value of feedback
  • The necessity of courage and respect

Practices promoted include:

  • Pair programming
  • Test Driven Development (TDD)
  • Continuous Integration/Continuous Deployment (CI/CD)
  • Small, frequent releases
  • Relentless refactoring
  • Adhering to a 40-hour workweek
  • Collective code ownership

If you found this article insightful, consider subscribing to my Medium posts! I'm eager to hear about books that have influenced your approach to Software Engineering—let’s share our reading lists! If this topic resonates with you, check out my YouTube channel as well. Wishing you a fantastic day!

Share the page:

Twitter Facebook Reddit LinkIn

-----------------------

Recent Post:

Understanding the 2023 Nobel Prize in Physics: Attosecond Pulses

The 2023 Nobel Prize in Physics honors pioneers of attosecond light pulses, revealing their significance in studying electron dynamics.

The Necessity of Removing Parabens from Skincare Products

Understanding the reasons to avoid parabens in skincare to protect health and maintain beauty.

Unlocking Cognitive Potential: The 4 Essential Brain Workouts

Discover the four types of workouts that are essential for enhancing cognitive function and overall brain health.

Embracing Self-Forgiveness: A Pathway to Self-Acceptance

Discover ways to cultivate self-acceptance and compassion through forgiving yourself and overcoming self-criticism.

Honesty: A Journey Towards Self-Truth and Authenticity

Discover the importance of honesty with yourself and others, and learn actionable steps to embrace authenticity in your life.

Finding Momentum Over Motivation: A Path to Productivity

Discover how to prioritize movement over fleeting motivation for sustained productivity and well-being.

Building Trust: The Essential Cornerstone of Relationships

Discover how trust forms the basis of love and relationships, and learn strategies to cultivate and maintain it.

MacGyver's Ingenious Science: Creating Solutions with Everyday Items

Explore MacGyver's inventive use of simple tools and materials to solve complex problems.