New book: Solid Code (Optimizing the Software Development Life Cycle)
Everybody, 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.