rent-now

Rent More, Save More! Use code: ECRENTAL

5% off 1 book, 7% off 2 books, 10% off 3+ books

9780470259245

Code Leader : Using People, Tools, and Processes to Build Successful Software

by ;
  • ISBN13:

    9780470259245

  • ISBN10:

    0470259248

  • Edition: 1st
  • Format: Paperback
  • Copyright: 2008-05-05
  • Publisher: Wrox
  • Purchase Benefits
  • Free Shipping Icon Free Shipping On Orders Over $35!
    Your order must be $35 or more to qualify for free economy shipping. Bulk sales, PO's, Marketplace items, eBooks and apparel do not qualify for this offer.
  • eCampus.com Logo Get Rewarded for Ordering Your Textbooks! Enroll Now
List Price: $39.99

Summary

This book is for the career developer who wants to take his or her skill set and/or project to the next level. If you are a professional software developer with 34 years of experience looking to bring a higher level of discipline to your project, or to learn the skills that will help you transition from software engineer to technical lead, then this book is for you. The topics covered in this book will help you focus on delivering software at a higher quality and lower cost. The book is about practical techniques and practices that will help you and your team realize those goals.This book is for the developer understands that the business of software is, first and foremost, business. Writing code is fun, but writing high-quality code on time and at the lowest possible cost is what makes a software project successful. A team lead or architect who wants to succeed must keep that in mind.Given that target audience, this book assumes a certain level of skill at reading code in one or more languages, and basic familiarity with building and testing software projects. It also assumes that you have at least a basic understanding of the software development lifecycle, and how requirements from customers become testable software projects.Who This Book Is Not For: This is not a book for the entry-level developer fresh out of college, or for those just getting started as professional coders. It isn't a book about writing code; it's a book about how we write code together while keeping quality up and costs down. It is not for those who want to learn to write more efficient or literate code. There are plenty of other books available on those subjects, as mentioned previously.This is also not a book about project management or development methodology. All of the strategies and techniques presented here are just as applicable to waterfall projects as they are to those employing Agile methodologies. While certain strategies such as Test-Driven Development and Continuous Integration have risen to popularity hand in hand with Agile development methodologies, there is no coupling between them. There are plenty of projects run using SCRUM that do not use TDD, and there are just as many waterfall projects that do.Philosophy versus Practicality: There are a lot of religious arguments in software development. Exceptions versus result codes, strongly typed versus dynamic languages, and where to put your curly braces are just a few examples. This book tried to steer clear of those arguments here. Most of the chapters in this book deal with practical steps that you as a developer can take to improve your skills and improve the state of your project. The author makes no claims that these practices represent the way to write software. They represent strategies that have worked well for the author and other developers that he have worked closely with.Philosophy certainly has its place in software development. Much of the current thinking in project management has been influenced by the Agile philosophy, for example. The next wave may be influenced by the Lean methodologies developed by Toyota for building automobiles. Because it represents a philosophy, the Lean process model can be applied to building software just as easily as to building cars. On the other hand, because they exist at the philosophical level, such methodologies can be difficult to conceptualize. The book tries to favor the practical over the philosophical, the concrete over the theoretical. This should be the kind of book that you can pick up, read one chapter of, and go away with some practical changes you can make to your software project that will make it better.That said, the first part of this book is entitled "Philosophy" because the strategies described in it represent ways of approach

Author Biography

Patrick Cauldwell somehow found his way to a career in software despite earning a bachelor’s degree in East Asian Studies. From a work-study job in the student computer lab at college through early jobs in quality assurance and localization, and finally into full-time software engineering, Patrick has always been interested in what makes computers tick. He’s worked in a wide range of software operations, from very large projects at Intel to a very small start-up to a consulting job in the midst of the .COM boom.

Table of Contents

Introductionp. xxi
Philosophy
Buy, Not Buildp. 3
Cost versus Benefitp. 4
Creating a Competitive Advantagep. 5
Base Class Librariesp. 6
Open Source Softwarep. 7
Taking Advantage of Your Platformp. 7
Designp. 7
Riskp. 8
Servicesp. 9
Third-Party Componentsp. 9
Summaryp. 10
Test-Driven Developmentp. 11
Tests Define Your Contractp. 13
Tests Communicate Your Intentp. 16
Summaryp. 19
Continuous Integrationp. 21
Integrate Early and Oftenp. 22
Keeping Testers Workingp. 22
Keeping Developers Workingp. 22
Barriers to Continuous Integrationp. 23
Build Serversp. 25
Automating a Build Processp. 26
Expanding the Build Processp. 29
Setting Up a Cl Serverp. 31
Multiple Builds of the Same Projectp. 35
Coordinating Build Outputp. 35
Notifying People about Build Resultsp. 36
Fix a Broken Build before Integrating Changesp. 37
Summaryp. 39
Process
Done Is Donep. 43
Discuss Design Decisionsp. 44
Every Class Has a Test Fixturep. 45
Each Fixture Exercises Only One Classp. 48
Code Coverage Is Highp. 49
No Compiler Warningsp. 51
Static Analysis Tools Generate No Errorsp. 52
Before Committing, Updatep. 53
Documentation in Placep. 53
Summaryp. 56
Testingp. 57
Why Testing Doesn't Get Donep. 58
How Testing Will Make You a Better Developerp. 59
Your Designs Will Be Betterp. 59
You'll Have to Write Less Code to Achieve Your Goalsp. 59
You Will Learn More about Codingp. 60
You Will Develop Better Relationships with Your Testersp. 61
You Will Make Your Project Sponsors Happyp. 61
Code Coveragep. 64
Why Measure Code Coveragep. 65
Code Coverage Toolsp. 67
Strategies for Improving Code Coveragep. 72
Types of Testsp. 74
Unit Testsp. 75
Integration Testsp. 84
Functional Testsp. 89
Performance Testingp. 93
Test Automationp. 96
Strategies for Test Automationp. 96
Testing Frameworksp. 97
Automation and Your Organizationp. 104
Summaryp. 106
Source Controlp. 107
Some Source Control Historyp. 108
Concurrent Versioning System (CVS)p. 110
Picking the Right SCCSp. 110
Performance and Scalabilityp. 111
Locking Modelsp. 111
Costp. 112
Atomic Commitsp. 112
Branchingp. 113
Mergingp. 114
Integration with Other Toolsp. 114
Reportingp. 115
Extensibilityp. 115
Making Your Choicep. 115
Organizing Your Source Treep. 117
Using TreeSurgeonp. 117
Packagingp. 121
Adding Folders to Work with Source Controlp. 121
Making the Most of Branchingp. 122
Version Branchesp. 123
Integration Branchesp. 127
Personal Branchesp. 129
Task Branchesp. 130
Merging Branchesp. 131
Summaryp. 133
Static Analysisp. 135
Using Static Analysis Toolsp. 135
NDependp. 136
FxCopp. 137
Simianp. 139
Who Benefits from Static Analysis?p. 139
How to Integrate Static Analysis into Your Processp. 140
Summaryp. 143
Code Construction
Contract, Contract, Contract!p. 147
Public Interfacesp. 152
Data Contractsp. 155
Summaryp. 158
Limiting Dependenciesp. 159
Limiting Surface Areap. 162
Dependency Injectionp. 165
Inversion of Controlp. 167
Summaryp. 170
The Model-View-Presenter (MVP) Modelp. 173
Why MVP?p. 173
What Is MVP?p. 174
Constructing the MVP Applicationp. 177
Testing MVP Applicationsp. 184
Summaryp. 187
Tracingp. 189
Different Kinds of Messagesp. 189
Log Sources and Log Sinksp. 190
Activities and Correlation IDsp. 192
Defining a Policyp. 193
Making Messages Actionablep. 196
Summaryp. 198
Error Handlingp. 199
Result Code Readingp. 200
Exception Throwingp. 201
Importance of a Policyp. 203
Defining a Policyp. 204
Where to Handle Errorsp. 207
Summaryp. 210
Putting It All Together
Calculator Project: A Case Studyp. 213
Wrapping Upp. 220
Indexp. 223
Table of Contents provided by Ingram. All Rights Reserved.

Supplemental Materials

What is included with this book?

The New copy of this book will include any supplemental materials advertised. Please check the title of the book to determine if it should include any access cards, study guides, lab manuals, CDs, etc.

The Used, Rental and eBook copies of this book are not guaranteed to include any supplemental materials. Typically, only the book itself is included. This is true even if the title states it includes any access cards, study guides, lab manuals, CDs, etc.

Rewards Program