Modern practices, policies, and techniques for writing robust C# code for the Microsoft\xae .NET platform.
"/>
Solid Code: Optimizing the Software Development Life Cycle
Donis Marshall
John Bruno
Copyright 2009 Donis Marshall (All); John Bruno (All)
SPECIAL OFFER: Upgrade this ebook with OReilly
for more information on this offer!
Please note that upgrade offers are not available from sample content.
Recommendations for Solid Code
Solid Code does a great job of hitting that super hard middle ground between the management books and the technology books. By covering ideas from how to model software to security design to defensive programming, Donis and John show you the best practices you can apply to your development to make it even better.
JohnCofounder, WintellectRobbins
Solid Code isnt just about code; it imparts the knowhow to deliver a solid project. This book delivers straightforward best practices, supplemented with case studies and lessons learned, from real products to help guide readers to deliver a perfect projectfrom design through development, ending with release and maintenance.
JasonSoftware Development Engineer, Microsoft CorporationBlankman
As a software developer of 20 years, there are a few books that I read again every couple of years. I believe that Solid Code will be one of the books that you will read over and over, each time finding new insight for your profession.
DonSoftware Development Engineer, Microsoft CorporationReamey
Solid Code is an invaluable tool for any serious software developer. The book is filled with practical advice that can be put to use immediately to solidify your code base. Solid Code should definitely be on your shelf, close at hand, as youll use it again and again!
JohnMicrosoft Regional Director, Managing Partner, AJI SoftwareAlexander
Solid Code is a must read for any IT professional, especially if you plan on using managed code. The book not only covers engineering best practices but also illustrates them with real test case studies.
AndresRelease Manager, Microsoft CorporationJuarez
This is a very well-written book that offers best practices in cultivating an efficient software development process by which typical developer mistakes can be avoided. The authors provide practical solutions for detecting mistakes and explain how software development and testing works at Microsoft.
VenkatB.Iyer
This book is excellent for developers at any levelbeginner to experienced. It provides the foundation of great development practices that should be used by any size development team, and even by individual programmers.
JohnIndependent Software DeveloperMacknight
Foreword
Software engineering is not engineering. As a software developer, I would love nothing more than to say I am an engineer. Engineers think through and build things that are supposed to work the first time due to careful planning. So having the word "engineer" in my job title would be very cool indeed.
Lets look at what would happen if the normal software engineering approach were applied to aerospace engineering. A plane is sitting at a gate boarding passengers, and an aerospace engineeron a whim or forced by managementdecides to replace the tail section. Because its just a tail section, lets just rip it off and stick another one on right there at the gate. No problem, we can make it work! If aerospace engineering were approached like software engineering, I think the passengers would stampede to get off that plane as fast as possible. But those are the kind of changes that are made every day in major software projects the world over. The old joke is that "military intelligence" is an oxymoron, but Id have to say that it fits "software engineering" as well. What makes this even more troubling to me is that software truly rules the world, but the approach nearly everyone takes to making it can in no way be called engineering.
Why is it that I know the physical computer Im using right now will work, but the program Im using, Microsoft Word, will screw up the auto numbering of my lists? While my electrical engineering friends will not be happy to hear this, hardware is easy. The electrical engineer has a limited number of inputs to work with, unlike the essentially unlimited number given to software developers.
Management also considers electrical engineering "real engineering," so management gives the appropriate time and weight to those efforts. The software business, as a distinct field, is not a mature industry; it really hasnt been around that long. In fact, I myself am slightly younger than the software business, so my youthful look reveals some of the problem. If I were as old as electrical engineering, Id be writing this from the grave.
Another difficulty with software development can sometimes be the software developers themselves. Realistically, the barriers to becoming a software developer can be quite low. Im a prime example: I was working as a full-time software developer before I had a bachelors degree in computer science. Because I was able to "talk the talk" in interviews, I was given a job writing software. None of my employers really cared about my lack of education because they could hire me cheaper than someone with a degree.
All real engineering fields require you to achieve ambitious certification criteria before you can add the Professional Engineer (PE) designation to your name. Theres nothing like that for the software industry. Thats due in part to the fact that no one can agree what all software developers should know because of the newness of the industry. In other fields, the PE designation appropriately carries huge weight with management. If a certified engineer says a design wont work, she wont sign off on the plans and the project wont go forward. That forces management to take the planning process much more seriously. Of course, by signing off on a project, the PE acknowledges liability for ethical and legal ramifications should things go wrong. Are you ready to sign off on the ethical and legal liability of your softwares design? Until we get our industry to that point, we cant really call ourselves engineers in the traditional sense.
The good news is that even in the nearly 20 years I have been in the software development business Ive seen huge changes for the better. Senior management is finally getting the message that software project failures cost companies serious amounts of money. Take a look at Robert Charettes "Why Software Fails" in the September 2005 issue of the IEEE Spectrum magazine ( http://www.spectrum.ieee.org/sep05/1685 ) for a list of spectacular failures. With the costs so high, some senior management are finally committing real resources to get software projects kicked off, planned, and implemented right the first time. We still have a long way to go, but this buy-in for real planning from management is one of the biggest changes Ive seen in my time in the industry.
On a micro level, the best change in software development is that nearly all developers are finally serious about testing their code. Now its fortunately rare to hear about a developer who throws the code over the wall to the QA group and hopes for the best. This is a huge win for the industry and truly makes meeting schedules and quality gates achievable for many teams. As someone who has spent his career on the debugging and performance-tuning side of the business, Im really encouraged about our industry becoming more mature about testing. Like all good change, the testing focus starts with the individual and the benefits work their way up the organization.
Next page