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:

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
    quality.

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

Summary

Key Points

Chapter 2 Class Design and Prototyping

Collaboration in Visual Studio

Think First, Code Later

Software Modeling

Summary

Key Points

Chapter 3 Metaprogramming

What Is Metadata?

Metadata in Managed Applications

Metadata in Your Applications

Inside Microsoft: Configuration Management in Windows Live Spaces

Summary

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

Summary

Key Points

Chapter 5 Designing for Scale

Understanding Application Scalability

Tactics for Scaling Web Applications

Inside Microsoft: Managing the Windows Live Messenger Service Infrastructure

Summary

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

Summary

Key Points

Chapter 7 Managed Memory Model

Managed Heap

Garbage Collection

Finalization

Pinning

Tips for the Managed Heap

CLR Profiler

Summary

Key Points

Chapter 8 Defensive Programming

Defensive Programming and C#

Warnings

Code Review

Software Testing

Defensive Programming with Classes

Defensive Programming Without Examples

Design Patterns

Summary

Key Points

Chapter 9 Debugging

Overflow Bug

Pentium FDIV Bug

Symbols

Preemptive Debugging

Proactive Debugging

Debugging

Debugging Tools

Tracing

Production Debugging

Summary

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 Microsoft.com Web Analytics Platform

Summary

Key Points

Chapter 11 Improving Engineering Processes

Tactics for Engineering Process Improvement

Summary

Key Points

Chapter 12 Attitude Is Everything

Passion

Linear versus Iterative

Sales Are Good

Flexibility

Solve Real Problems

You Are Responsible

Port Code as New Code

Refactoring

Priorities

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.