Indie Software-Technology

29 Guidelines for Successful Pair Programming

Among software engineers, pair programming occurs when two coders join together to write code together. It’s an incredibly efficient and focused means of knowledge transfer. However, developers are also known for having prickly, sometimes difficult personalities, and these personal hangups can get in the way of effective pair programming. Author Oozie Ligus has logged over 700 hours of time pair programming and offers his advice on how to build an effective relationship. Following “extreme programming”…

Continue reading

Indie Software-Technology

Software Architecture for Developers: Designing Scalable & Maintainable Systems for the Real World

This book provides a succinct overview of the subjects a software architect interacts with on a regular basis in today’s world. That is, it portrays a high-level snapshot of the field in 2024. It summarizes what the current technologies are and lists the different conceptual frameworks software technology uses. Microservices, cloud computing, software as a function, and the packages that oversee it fill the lists that Steve Abrams provides. Its main weakness, however, is that…

Continue reading

Software-Technology

Writing Effective Use Cases

The first thing I noticed is that this book is almost 25 years old. That’s an eternity in computer science, especially in a non-mathematical subject. It was written under the “waterfall” paradigm of software development, before agile took over most of the software engineering world. Instead of a page or two, waterfall specifications could require a binder of dozens, if not hundreds, of pages. This book describes “use cases” instead of the “user stories” that…

Continue reading

Software-Technology

How Google Tests Software

I learned to develop software in the 1990s and started full-time work in the 2000s. I took time off to study other fields and returned to the practice in 2012, about the time this book came out. In the last 13-or-so years, I’ve noticed that the art of testing software has changed significantly. Twenty-five years ago, I started to code in an academic lab where we did our own testing out of necessity. In industry,…

Continue reading

Software-Technology

Tidy First? A Personal Exercise in Empirical Software Design

When a software developer is writing code, she/he is often confronted with a problem: How much work should I put into writing “the best” code versus just doing a quick but serviceable job? Kent Beck, pioneer of the influential Extreme Programming: Embrace Change, addresses this question via an in-depth look at the process of “tidying” code. His answer is usually to “tidy first”… but not always. This book seeks to identify exactly when one is…

Continue reading

Software-Technology

Modern Software Engineering: Doing What Works to Build Better Software Faster

Software engineering is a relatively young discipline that’s rapidly evolving. What practices moved software forward thirty years ago are different from what moves them today. Today, most software requires continual-release techniques in the era of Internet speed. In this book, David Farley, an expert in that area and one seasoned in business practices, brings the field up to date with practices that work. Modern Software Engineering provides a good summary informed by reading, personal practice,…

Continue reading

Leadership Management-Business Software-Technology

The Engineering Executive’s Primer: Impactful Technical Leadership

Encoding software is a highly technical task, but effective leadership is often anything but technical. Combining the two thus can be supremely difficult, but this pair of skills is necessary to fill roles like Chief Information Officer (CIO) or Chief Technology Officer (CTO). Unfortunately, advice is hard to come by in the literature since only a few extended books in this space. To better fill these gaps, Will Larson, known for his deep looks at…

Continue reading

Presentation Software-Technology

Creating Software with Modern Diagramming Techniques: Build Better Software with Mermaid

As a computer science major in college, I learned about Unified Modeling Language (UML) as a way to visually document software. However, I soon found designing and maintaining those images to be more of a pain than they’re worth. I had to reshuffle images on graphics programs for every minor change, so keeping documentation up to date proved to be impossible. Recently, however, I discovered that someone invented a language, called Mermaid, to convert a…

Continue reading

Software-Technology

Data-Oriented Programming: Reduce Software Complexity

Professionally, I write code for web applications in PHP for biomedical use. Thus, data play a central role in my professional life. At first, I tried to design my programs around object-orientated (OO) principles, but soon found that data played a strong role that OO actually restrained. Years later, I found how React divided itself between immutable data, state information, and code. Though I no longer code in React, I find this division still helpful…

Continue reading

Leadership Software-Technology

The Software Engineer’s Guidebook: Navigating Senior, Tech Lead & Staff Engineer Positions at Tech Companies & Startups

Writing software promises a career full of intellectual challenges, never-ending learning, and collaborative projects. Yet sometimes, the career path can seem arduous and hidden, especially for those not on the management track. How can engineers lead when they’re not managing a team? In this book, Gergely Orosz shows how engineers can establish a career, progress to senior level and tech lead, and then move onto principal or staff engineering roles. None of these roles involves…

Continue reading