Author: Robert C. Martin
Publisher: Pearson Education
Release Date: 2008-08-01
Even bad code can function. But if code isn’t clean, it can bring a development organization to its knees. Every year, countless hours and significant resources are lost because of poorly written code. But it doesn’t have to be that way. Noted software expert Robert C. Martin presents a revolutionary paradigm with Clean Code: A Handbook of Agile Software Craftsmanship . Martin has teamed up with his colleagues from Object Mentor to distill their best agile practice of cleaning code “on the fly” into a book that will instill within you the values of a software craftsman and make you a better programmer–but only if you work at it. What kind of work will you be doing? You’ll be reading code–lots of code. And you will be challenged to think about what’s right about that code, and what’s wrong with it. More importantly, you will be challenged to reassess your professional values and your commitment to your craft. Clean Code is divided into three parts. The first describes the principles, patterns, and practices of writing clean code. The second part consists of several case studies of increasing complexity. Each case study is an exercise in cleaning up code–of transforming a code base that has some problems into one that is sound and efficient. The third part is the payoff: a single chapter containing a list of heuristics and “smells” gathered while creating the case studies. The result is a knowledge base that describes the way we think when we write, read, and clean code. Readers will come away from this book understanding How to tell the difference between good and bad code How to write good code and how to transform bad code into good code How to create good names, good functions, good objects, and good classes How to format code for maximum readability How to implement complete error handling without obscuring code logic How to unit test and practice test-driven development This book is a must for any developer, software engineer, project manager, team lead, or systems analyst with an interest in producing better code.
Author: Robert C. Martin
Publisher: Prentice Hall
Release Date: 2011-11-10
The Robert C. Martin Clean Code Collection consists of two bestselling eBooks: Clean Code: A Handbook of Agile Software Craftmanship The Clean Coder: A Code of Conduct for Professional Programmers In Clean Code, legendary software expert Robert C. Martin has teamed up with his colleagues from Object Mentor to distill their best agile practice of cleaning code “on the fly” into a book that will instill within you the values of a software craftsman and make you a better programmer--but only if you work at it. You will be challenged to think about what’s right about that code and what’s wrong with it. More important, you will be challenged to reassess your professional values and your commitment to your craft. In The Clean Coder, Martin introduces the disciplines, techniques, tools, and practices of true software craftsmanship. This book is packed with practical advice--about everything from estimating and coding to refactoring and testing. It covers much more than technique: It is about attitude. Martin shows how to approach software development with honor, self-respect, and pride; work well and work clean; communicate and estimate faithfully; face difficult decisions with clarity and honesty; and understand that deep knowledge comes with a responsibility to act. Readers of this collection will come away understanding How to tell the difference between good and bad code How to write good code and how to transform bad code into good code How to create good names, good functions, good objects, and good classes How to format code for maximum readability How to implement complete error handling without obscuring code logic How to unit test and practice test-driven development What it means to behave as a true software craftsman How to deal with conflict, tight schedules, and unreasonable managers How to get into the flow of coding and get past writer’s block How to handle unrelenting pressure and avoid burnout How to combine enduring attitudes with new development paradigms How to manage your time and avoid blind alleys, marshes, bogs, and swamps How to foster environments where programmers and teams can thrive When to say “No”--and how to say it When to say “Yes”--and what yes really means
"1+1=3. That is the equation that summarizes the theme of this book. The book’s message is to integrate the developmental principles of Agile with the result-focused approaches integral to performance consulting. Your outcomes in shaping human performance will be significant--and greater than if you only used one of these models. This is a book for anyone who seeks to work collaboratively with leaders to bring about continuously improving and sustainable organizational change." --Dana Gaines Robinson, coauthor of Performance Consulting Agile Performance Improvement demonstrates the mutual benefits that accrue to the worlds of performance consulting and agile software development when the values and principles of both are blended synergistically under the guidance of practitioners skilled in both. The agile performance improvement model blends the principles of human performance technology with the frameworks and practices of Agile. The result is an approach that maximizes the value of interactions among the consultant, the work team, and the customer. Unlike traditional end-to-end waterfall processes, agile performance improvement delivers value continuously and in small increments, relentlessly focusing on outcomes of value to the customer. Building on structures of Agile that are used in software development, such as Scrum, the agile performance improvement model considers the human component of holistic solutions in establishing a continuous stream of value. Bob Winter, a performance consultant, was the product owner for the corporate education scrum supporting an agile transition initiative for hundreds of engineering teams. From this cross-disciplinary experience, he discovered that the two cultures, two languages, and two methodologies of performance consulting and agile software development are—far from being incongruent, incompatible, or irrelevant to each other—in fact ideally suited to complement and support each other. Being agile improves the effectiveness of the performance consultant, and applying the lessons of human performance technology improves the effectiveness of software development teams. In Agile Performance Improvement, Winter teaches performance consultants how to apply agile principles, values, and methods usefully to the tasks of optimizing human performance in areas of practice not only adjoining but also well beyond the realm of software and IT engineering, such as corporate learning solutions, human resources systems, and non-software products. Conversely, he shows engineering teams immersed in an agile environment how to boost their performance using the principles and techniques taught and cultivated by performance consultants. The author, who has worked extensively on both sides of the traditional divide, recounts entertainingly but informatively how both sparks and fur can fly when geeks encounter people people.
Pro Agile .NET Development with SCRUM guides you through a real-world ASP.NET project and shows how agile methodology is put into practice. There is plenty of literature on the theory behind agile methodologies, but no book on the market takes the concepts of agile practices and applies these in a practical manner to an end-to-end ASP.NET project, especially the estimating, requirements and management aspects of a project. Pro Agile .NET Development with SCRUM takes you through the initial stages of a project—gathering requirements and setting up an environment—through to the development and deployment stages using an agile iterative approach: namely, Scrum. In the book, you'll focus on delivering an enterprise-level ASP.NET project. Each chapter is in iterations or sprints, putting into practice the features of agile—user stories, test-driven development (TDD), behavior-driven development (BDD), continuous integration, user acceptance testing, extreme programming, Scrum, design patterns and principles, inside-out development, lean developent, KanBan boards, and more. An appendix features code katas designed for the reader to get up-to-speed with some of the features of extreme programming, while also showcasing popular open-source frameworks to assist in automated testing and mocking. In addition, popular open-source architectural foundation projects such as S#arp and NCommons are demonstrated to allow you to base future projects on these frameworks, which already have many best-practice design patterns and principles built in.
Author: Chris Sterling
Publisher: Addison-Wesley Professional
Release Date: 2010-12-10
Shipping imperfect software is like going into debt. When you incur debt, the illusion of doing things faster can lead to exponential growth in the cost of maintaining software. Software debt takes five major forms: technical, quality, configuration management, design, and platform experience. In today’s rush to market, software debt is inevitable. And that’s okay—if you’re careful about the debt you incur, and if you quickly pay it back. In Managing Software Debt, leading Agile expert Chris Sterling shows how understanding software debt can help you move products to market faster, with a realistic plan for refactoring them based on experience. Writing for all Agile software professionals, Sterling explains why you’re going into software debt whether you know it or not—and why the interest on that debt can bring projects to a standstill. Next, he thoroughly explains each form of software debt, showing how to plan for it intelligently and repay it successfully. You’ll learn why accepting software debt is not the same as deliberate sloppiness, and you’ll learn how to use the software debt concept to systematically improve architectural agility. Coverage includes Managing tensions between speed and perfection and recognizing that you’ll inevitably ship some “not quite right” code Planning to minimize interest payments by paying debts quickly Building architectures that respond to change and help enterprises run more smoothly Incorporating emergent architecture concepts into daily activities, using Agile collaboration and refactoring techniques Delivering code and other software internals that reduce the friction of future change Using early, automated testing to move past the “break/fix” mentality Scripting and streamlining both deployment and rollback Implementing team configuration patterns and knowledge sharing approaches that make software debt easier to repay Clearing away technical impediments in existing architectures Using the YAGNI (“you ain’t gonna need it”) approach to strip away unnecessary complexity Using this book’s techniques, senior software leadership can deliver more business value; managers can organize and support development teams more effectively; and teams and team members can improve their performance throughout the development lifecycle.
Author: James O. Coplien
Publisher: John Wiley & Sons
Release Date: 2011-01-06
More and more Agile projects are seeking architectural roots as they struggle with complexity and scale - and they're seeking lightweight ways to do it Still seeking? In this book the authors help you to find your own path Taking cues from Lean development, they can help steer your project toward practices with longstanding track records Up-front architecture? Sure. You can deliver an architecture as code that compiles and that concretely guides development without bogging it down in a mass of documents and guesses about the implementation Documentation? Even a whiteboard diagram, or a CRC card, is documentation: the goal isn't to avoid documentation, but to document just the right things in just the right amount Process? This all works within the frameworks of Scrum, XP, and other Agile approaches
Author: Jason McC. Smith
Release Date: 2012-03-23
2012 Jolt Award Finalist! Even experienced software professionals find it difficult to apply patterns in ways that deliver substantial value to their organizations. In Elemental Design Patterns, Jason McC. Smith addresses this problem head-on, helping developers harness the true power of patterns, map them to real software implementations more cleanly and directly, and achieve far better results. Part tutorial, part example-rich cookbook, this resource will help developers, designers, architects, and analysts successfully use patterns with a wide variety of languages, environments, and problem domains. Every bit as important, it will give them a deeper appreciation for the work they’ve chosen to pursue. Smith presents the crucial missing link that patterns practitioners have needed: a foundational collection of simple core patterns that are broken down to their core elements. If you work in software, you may already be using some of these elemental design patterns every day. Presenting them in a comprehensive methodology for the first time, Smith names them, describes them, explains their importance, helps you compare and choose among them, and offers a framework for using them together. He also introduces an innovative Pattern Instance Notation diagramming system that makes it easier to work with patterns at many levels of granularity, regardless of your goals or role. If you’re new to patterns, this example-rich approach will help you master them piece by piece, logically and intuitively. If you’re an experienced patterns practitioner, Smith follows the Gang of Four format you’re already familiar with, explains how his elemental patterns can be composed into conventional design patterns, and introduces highly productive new ways to apply ideas you’ve already encountered. No matter what your level of experience, this infinitely practical book will help you transform abstract patterns into high-value solutions.
Winner of a 2015 Alpha Sigma Nu Book Award, Software Essentials: Design and Construction explicitly defines and illustrates the basic elements of software design and construction, providing a solid understanding of control flow, abstract data types (ADTs), memory, type relationships, and dynamic behavior. This text evaluates the benefits and overhead of object-oriented design (OOD) and analyzes software design options. With a structured but hands-on approach, the book: Delineates malleable and stable characteristics of software design Explains how to evaluate the short- and long-term costs and benefits of design decisions Compares and contrasts design solutions, such as composition versus inheritance Includes supportive appendices and a glossary of over 200 common terms Covers key topics such as polymorphism, overloading, and more While extensive examples are given in C# and/or C++, often demonstrating alternative solutions, design—not syntax—remains the focal point of Software Essentials: Design and Construction. About the Cover: Although capacity may be a problem for a doghouse, other requirements are usually minimal. Unlike skyscrapers, doghouses are simple units. They do not require plumbing, electricity, fire alarms, elevators, or ventilation systems, and they do not need to be built to code or pass inspections. The range of complexity in software design is similar. Given available software tools and libraries—many of which are free—hobbyists can build small or short-lived computer apps. Yet, design for software longevity, security, and efficiency can be intricate—as is the design of large-scale systems. How can a software developer prepare to manage such complexity? By understanding the essential building blocks of software design and construction.
Be a Better Developer and Deliver Better Code Despite advanced tools and methodologies, software projects continue to fail. Why? Too many organizations still view software development as just another production line. Too many developers feel that way, too—and they behave accordingly. In The Software Craftsman: Professionalism, Pragmatism, Pride, Sandro Mancuso offers a better and more fulfilling path. If you want to develop software with pride and professionalism; love what you do and do it with excellence; and build a career with autonomy, mastery, and purpose, it starts with the recognition that you are a craftsman. Once you embrace this powerful mindset, you can achieve unprecedented levels of technical excellence and customer satisfaction. Mancuso helped found the world’s largest organization of software craftsmen; now, he shares what he’s learned through inspiring examples and pragmatic advice you can use in your company, your projects, and your career. You will learn Why agile processes aren’t enough and why craftsmanship is crucial to making them work How craftsmanship helps you build software right and helps clients in ways that go beyond code How and when to say “No” and how to provide creative alternatives when you do Why bad code happens to good developers and how to stop creating and justifying it How to make working with legacy code less painful and more productive How to be pragmatic—not dogmatic—about your practices and tools How to lead software craftsmen and attract them to your organization What to avoid when advertising positions, interviewing candidates, and hiring developers How developers and their managers can create a true culture of learning How to drive true technical change and overcome deep patterns of skepticism Sandro Mancuso has coded for startups, software houses, product companies, international consultancies, and investment banks. In October 2013, he cofounded Codurance, a consultancy based on Software Craftsmanship principles and values. His involvement with Software Craftsmanship began in 2010, when he founded the London Software Craftsmanship Community (LSCC), now the world’s largest and most active Software Craftsmanship community, with more than two thousand craftsmen. For the past four years, he has inspired and helped developers to organize Software Craftsmanship communities throughout Europe, the United States, and the rest of the world.
Author: Mary Poppendieck
Publisher: Addison-Wesley Professional
Release Date: 2010
Genre: Business & Economics
The practical, how-to guide to putting Lean Software Development to work - by its legendary creators, Mary and Tom Poppendieck * *Packed with new real-world examples from the authors' worldwide consulting engagements. *Goes far beyond generic implementation guidelines to demonstrate exactly how 'lean' works in actual software projects. *Introduces powerful tools for successfully leading lean software projects. *Shows how to rethink software scheduling and finally make it work. Building on their breakthrough best-seller Implementing Lean Software Development , Mary and Tom Poppendieck show software leaders how to quickly identify the biggest opportunities for improvement in their development organizations. Next, the Poppendiecks guide leaders through the more complex process of making the changes that are necessary - and making them stick. Leading Lean Software Development offers an even greater emphasis on practical, 'how-to' advice that reflects the authors' even more extensive experience putting lean software development to work in real organizations. IT leaders will also find all-new coverage of the tools that are now available for successfully leading lean software organizations and relentlessly improving software development processes for years to come. Coverage includes: * *How software managers and engineers can apply lean principles and practices to run software projects more effectively. *Success stories demonstrating the application of lean values and practices. *Understanding the role of both systems and people in software process improvement. *Rethinking software project scheduling.
Author: Artur Ejsmont
Publisher: McGraw Hill Professional
Release Date: 2015-07-03
This invaluable roadmap for startup engineers reveals how to successfully handle web application scalability challenges to meet increasing product and traffic demands. Web Scalability for Startup Engineers shows engineers working at startups and small companies how to plan and implement a comprehensive scalability strategy. It presents broad and holistic view of infrastructure and architecture of a scalable web application. Successful startups often face the challenge of scalability, and the core concepts driving a scalable architecture are language and platform agnostic. The book covers scalability of HTTP-based systems (websites, REST APIs, SaaS, and mobile application backends), starting with a high-level perspective before taking a deep dive into common challenges and issues. This approach builds a holistic view of the problem, helping you see the big picture, and then introduces different technologies and best practices for solving the problem at hand. The book is enriched with the author's real-world experience and expert advice, saving you precious time and effort by learning from others' mistakes and successes. Language-agnostic approach addresses universally challenging concepts in Web development/scalability—does not require knowledge of a particular language Fills the gap for engineers in startups and smaller companies who have limited means for getting to the next level in terms of accomplishing scalability Strategies presented help to decrease time to market and increase the efficiency of web applications
Author: Roger S. Pressman
Publisher: McGraw-Hill Science/Engineering/Math
Release Date: 2010
For over 20 years, this has been the best-selling guide to software engineering for students and industry professionals alike. This seventh edition features a new part four on web engineering, which presents a complete engineering approach for the analysis, design and testing of web applications.