New book: Solid Code (Optimizing the Software Development Life Cycle)

9780735625921fEverybody, in our long stream of “New book” posts since we launched our blog in January 2009, in which we describe over 130 books we’ve published in the last couple of years, we apparently missed a book: Solid Code (ISBN: 9780735625921; 352 pages), by Donis Marshall and John Bruno. Well, better late than never, I suppose!

About Donis Marshall and John Bruno

Donis Marshall has 20 years of experience as a developer and instructor, with an in-depth background on Microsoft .NET technologies. His firm promotes an entirely Web-based debugger for Windows applications. In addition to training and consulting, Donis has written several books, including Programming Microsoft Visual C# 2008: The Language and .NET Security Programming.

John Bruno is a Microsoft senior program manager with 10 years of industry experience. He specializes in designing and building scalable Web-based applications and services with Microsoft .NET and has played key roles in launching Windows Live and the service architecture and developer platform of Windows Live Spaces, which is delivered to more than 100 million users worldwide.

Here’s an excerpt from the book’s Introduction:


Software development has evolved greatly over the past several years. Improvements in
programming languages and rapid development tooling, like .NET and Visual Studio 2008,
have driven the software industry to build higher-quality software, faster, cheaper, and with
more frequent upgrades or refreshes. Despite this continued demand for more software and
the evolution in tools and processes, building and releasing quality software remains a dif-
ficult job for all participants of software projects, especially developers. Fortunately, this title
encapsulates the essence of the best-in-class engineering practices, processes, policies, and
techniques that application developers need for developing robust code.

Solid Code explores best practices for achieving greater code quality from nearly every facet
of software development. This book provides practical advice from experienced engineers
that can be applied across the product development life cycle: design, prototyping, imple-
mentation, debugging, and testing. This valuable material and advice is further supplement-
ed by real world examples from several engineering teams within Microsoft, including, but
not limited to, the Windows Live Hotmail and Live Search teams.

Who Is This Book For?

Solid Code has something for every participant in the software development life cycle. Most
specifically, it is targeted toward application developers who are seeking best practices or
advice for building higher-quality software. Portions of this book illustrate the important role
of the engineering process as it relates to writing high-quality code. Other parts focus on the
criticality of testing. However, most of this book focuses on improving code quality during
design and implementation, covering specific topics like class prototyping, performance, se-
curity, memory, and debugging.

This book targets both professional and casual developers. Readers should have a basic un-
derstanding of programming concepts and object oriented programming in C#. There are no
skill level expectations. Solid Code is about the practical application of best practices for man-
aged code application development. The topics discussed within the book should resonate
with managed code developers of all skill levels.

Organization of This Book

Solid Code is organized similarly to the application development life cycle. The chapters are
not separated into parts, but rather grouped according to four key principles. These prin-
ciples are outlined in Chapter 1, “Code Quality in an Agile World”, and include: Focus on
Design, Defend and Debug, Analyze and Test, and Improve Processes and Attitudes.

  • Focus on Design  One of the great themes of this book is the importance of thought-
    ful design as a means to improve overall product quality. To support this theme, prac-
    tices such as class design and prototyping, metaprogramming, performance, scalability,
    and security are explored.
  • Defend and Debug  Although great designs are critical to building a high-quality
    software application, it is equally important to understand the pitfalls that hinder de-
    livery of bug-free code. Topics such as memory management, defensive programming
    techniques, and debugging are all discussed in the context of this principle.
  • Analyze and Test  Even the greatest programmers produce bugs despite following
    the recommended best practices. Therefore, it is important to discuss code analysis and
    testing as methods for further improving code quality.
  • Improve Processes and Attitudes  Beyond best practices, engineering processes and
    culture can have a great impact on the quality of the work being produced. We explore
    several key topics for improving the efficiency of the team as well as their passion for

And here is the book’s complete TOC:

Table of Contents

Chapter 1 Code Quality in an Agile World

Traditional Methods of Software Development

Agile Methods of Software Development

Moving Quality Upstream

Inside Microsoft: Windows Live Hotmail Engineering

Tactics for Writing Solid Code


Key Points

Chapter 2 Class Design and Prototyping

Collaboration in Visual Studio

Think First, Code Later

Software Modeling


Key Points

Chapter 3 Metaprogramming

What Is Metadata?

Metadata in Managed Applications

Metadata in Your Applications

Inside Microsoft: Configuration Management in Windows Live Spaces


Key Points

Chapter 4 Performance Is a Feature

Common Performance Challenges

Analyzing Application Performance

Tactics for Improving Web Application Performance

Incorporating Performance Best Practices

Inside Microsoft: Tackling Live Search Performance


Key Points

Chapter 5 Designing for Scale

Understanding Application Scalability

Tactics for Scaling Web Applications

Inside Microsoft: Managing the Windows Live Messenger Service Infrastructure


Key Points

Chapter 6 Security Design and Implementation

Common Application Security Threats

Principles for Designing Secure Applications

SD3+C Strategy and Practices for Secure Applications

Understanding .NET Framework Security Principles

Additional Security Best Practices


Key Points

Chapter 7 Managed Memory Model

Managed Heap

Garbage Collection



Tips for the Managed Heap

CLR Profiler


Key Points

Chapter 8 Defensive Programming

Defensive Programming and C#


Code Review

Software Testing

Defensive Programming with Classes

Defensive Programming Without Examples

Design Patterns


Key Points

Chapter 9 Debugging

Overflow Bug

Pentium FDIV Bug


Preemptive Debugging

Proactive Debugging


Debugging Tools


Production Debugging


Key Points

Chapter 10 Code Analysis

Invest in the Test Process

Incorporate Automated Code Analysis

Use Metrics to Understand Quality

Inside Microsoft: Managing Quality for the Web Analytics Platform


Key Points

Chapter 11 Improving Engineering Processes

Tactics for Engineering Process Improvement


Key Points

Chapter 12 Attitude Is Everything


Linear versus Iterative

Sales Are Good


Solve Real Problems

You Are Responsible

Port Code as New Code



Be Realistic

Paradigm Shift

Expand Your Perspective

Appendix A Agile Development Resources

Appendix B Web Performance Resources

We’ll post some chapter excerpts from the book soon.

Comments (2)

  1. ciupaz says:

    It will be published a new version of this book in the next months?

    It has already a pair of years on its shoulders, indeed.


  2. Hi, Luigi. No, we're not updating the book. We're just finally posting a "New book" post because we mistakenly forgot to do one when we published the book. Sorry about that.