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.
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
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
Collaboration in Visual Studio
Think First, Code Later
Software Modeling
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
What Is Metadata?
Metadata in Managed Applications
Metadata in Your Applications
Inside Microsoft: Configuration Management in Windows Live Spaces
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
Common Performance Challenges
Analyzing Application Performance
Tactics for Improving Web Application Performance
Incorporating Performance Best Practices
Inside Microsoft: Tackling Live Search Performance
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
Understanding Application Scalability
Tactics for Scaling Web Applications
Inside Microsoft: Managing the Windows Live Messenger Service Infrastructure
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
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
Chapter 7 Managed Memory Model
Managed Heap Garbage Collection Finalization Pinning Tips for the Managed Heap CLR Profiler Summary Key Points
Managed Heap
Garbage Collection
Finalization
Pinning
Tips for the Managed Heap
CLR Profiler
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
Defensive Programming and C#
Warnings
Code Review
Software Testing
Defensive Programming with Classes
Defensive Programming Without Examples
Design Patterns
Chapter 9 Debugging
Overflow Bug Pentium FDIV Bug Symbols Preemptive Debugging Proactive Debugging Debugging Debugging Tools Tracing Production Debugging Summary Key Points
Overflow Bug
Pentium FDIV Bug
Symbols
Preemptive Debugging
Proactive Debugging
Debugging
Debugging Tools
Tracing
Production Debugging
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
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
Chapter 11 Improving Engineering Processes
Tactics for Engineering Process Improvement Summary Key Points
Tactics for Engineering Process Improvement
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
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.
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.
Luigi
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.