:toc2:

[[the-pragmatic-programmer]]
The Pragmatic Programmer
~~~~~~~~~~~~~~~~~~~~~~~~

Straight from the programming trenches, The Pragmatic Programmer: From
Journeyman to Master cuts through the increasing specialization and
technicalities of modern software development to examine the core
process—what do you do, as an individual and as a team, if you want to
create software that’s easy to work with and good for your users.

This classic title is regularly featured on software development “Top
Ten” lists, and is issued by many corporations to new hires.

Authors: Andy Hunt
(https://twitter.com/PragmaticAndy)[@pragmaticAndy]), Dave Thomas
(https://twitter.com/pragdave[@pragDave])

https://www.amazon.com/Pragmatic-Programmer-Journeyman-Master/dp/020161622X

[[code-complete-2nd-edition]]
Code Complete 2nd Edition
~~~~~~~~~~~~~~~~~~~~~~~~~

Widely considered one of the best practical guides to programming, Steve
McConnell s original CODE COMPLETE has been helping developers write
better software for more than a decade. Now this classic book has been
fully updated and revised with leading-edge practices and hundreds of
new code samples illustrating the art and science of software
construction. Capturing the body of knowledge available from research,
academia, and everyday commercial practice, McConnell synthesizes the
most effective techniques and must-know principles into clear, pragmatic
guidance. No matter what your experience level, development environment,
or project size, this book will inform and stimulate your thinking and
help you build the highest quality code. Discover the timeless
techniques and strategies that help you: Design for minimum complexity
and maximum creativity Reap the benefits of collaborative development
Apply defensive programming techniques to reduce and flush out errors
Exploit opportunities to refactor or evolve code, and do it safely Use
construction practices that are right-weight for your project Debug
problems quickly and effectively Resolve critical construction issues
early and correctly Build quality into the beginning, middle, and end of
your project

Author: Steve McConnell
(https://twitter.com/stevemconstrux[@stevemconstrux])

https://www.amazon.de/Code-Complete-Practical-Construction-Costruction/dp/0735619670

[[the-software-craftsman]]
The Software Craftsman
~~~~~~~~~~~~~~~~~~~~~~

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: Sandro Mancuso
(https://twitter.com/sandromancuso[@sandromancuso])

https://www.amazon.de/Software-Craftsman-Professionalism-Pragmatism-Robert/dp/0134052501

[[implementing-domain-driven-design]]
Implementing Domain-Driven Design
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

Implementing Domain-Driven Design presents a top-down approach to
understanding domain-driven design (DDD) in a way that fluently connects
strategic patterns to fundamental tactical programming tools. Vaughn
Vernon couples guided approaches to implementation with modern
architectures, highlighting the importance and value of focusing on the
business domain while balancing technical considerations.

Building on Eric Evans’ seminal book, Domain-Driven Design, the author
presents practical DDD techniques through examples from familiar
domains. Each principle is backed up by realistic Java examples–all
applicable to C# developers–and all content is tied together by a single
case study: the delivery of a large-scale Scrum-based SaaS system for a
multitenant environment.

The author takes you far beyond “DDD-lite” approaches that embrace DDD
solely as a technical toolset, and shows you how to fully leverage DDD’s
“strategic design patterns” using Bounded Context, Context Maps, and the
Ubiquitous Language. Using these techniques and examples, you can reduce
time to market and improve quality, as you build software that is more
flexible, more scalable, and more tightly aligned to business goals.

Author: Vaughn Vernon
(https://twitter.com/VaughnVernon[@VaughnVernon])

https://www.amazon.com/Implementing-Domain-Driven-Design-Vaughn-Vernon/dp/0321834577

[[clean-code]]
Clean Code
~~~~~~~~~~

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
(https://twitter.com/unclebobmartin[@unclebobmartin])

https://www.amazon.de/Clean-Code-Handbook-Software-Craftsmanship/dp/0132350882

[[ship-it]]
Ship It
~~~~~~~

Ship It! is a collection of tips that show the tools and techniques a
successful project team has to use, and how to use them well. You'll get
quick, easy-to-follow advice on modern practices: which to use, and when
they should be applied. This book avoids current fashion trends and
marketing hype; instead, readers find page after page of solid advice,
all tried and tested in the real world.

Aimed at beginning to intermediate programmers, Ship It! will show you:

Which tools help, and which don't How to keep a project moving
Approaches to scheduling that work How to build developers as well as
product What's normal on a project, and what's not How to manage
managers, end-users and sponsors Danger signs and how to fix them Few of
the ideas presented here are controversial or extreme; most experienced
programmers will agree that this stuff works. Yet 50 to 70 percent of
all project teams in the U.S. aren't able to use even these simple,
well-accepted practices effectively. This book will help you get
started.

Ship It! begins by introducing the common technical infrastructure that
every project needs to get the job done. Readers can choose from a
variety of recommended technologies according to their skills and
budgets. The next sections outline the necessary steps to get software
out the door reliably, using well-accepted, easy-to-adopt, best-of-breed
practices that really work.

Finally, and most importantly, Ship It! presents common problems that
teams face, then offers real-world advice on how to solve them.

Authors: Jared Richardson
(https://twitter.com/jaredrichardson[@jaredrichardson]), William
Gwaltney

https://www.amazon.de/Ship-Practical-Successful-Pragmatic-Programmers/dp/0974514047

[[release-it]]
Release It
~~~~~~~~~~

Whether it's in Java, .NET, or Ruby on Rails, getting your application
ready to ship is only half the battle. Did you design your system to
survivef a sudden rush of visitors from Digg or Slashdot? Or an influx
of real world customers from 100 different countries? Are you ready for
a world filled with flakey networks, tangled databases, and impatient
users? If you're a developer and don't want to be on call for 3AM for
the rest of your life, this book will help. In Release It!, Michael T.
Nygard shows you how to design and architect your application for the
harsh realities it will face. You'll learn how to design your
application for maximum uptime, performance, and return on investment.
Mike explains that many problems with systems today start with the
design.

Author: Michael Nygard (https://twitter.com/mtnygard[@mtnygard])

https://www.amazon.com/Release-Production-Ready-Software-Pragmatic-Programmers-ebook/dp/B00A32NXZO

[[specification-by-example]]
Specification by Example
~~~~~~~~~~~~~~~~~~~~~~~~

Summary

Specification by Example is an emerging practice for creating software
based on realistic examples, bridging the communication gap between
business stakeholders and the dev teams building the software. In this
book, author Gojko Adzic distills interviews with successful teams
worldwide, sharing how they specify, develop, and deliver software,
without defects, in short iterative delivery cycles.

About the Technology

Specification by Example is a collaborative method for specifying
requirements and tests. Seven patterns, fully explored in this book, are
key to making the method effective. The method has four main benefits:
it produces living, reliable documentation; it defines expectations
clearly and makes validation efficient; it reduces rework; and, above
all, it assures delivery teams and business stakeholders that the
software that's built is right for its purpose.

About the Book

This book distills from the experience of leading teams worldwide
effective ways to specify, test, and deliver software in short,
iterative delivery cycles. Case studies in this book range from small
web startups to large financial institutions, working in many processes
including XP, Scrum, and Kanban.

This book is written for developers, testers, analysts, and business
people working together to build great software.

Purchase of the print book comes with an offer of a free PDF, ePub, and
Kindle eBook from Manning. Also available is all code from the book.

What's Inside

Common process patterns How to avoid bad practices Fitting SBE in your
process 50+ case studies For additional resources go to
specificationbyexample.com

Author: Gojko Adzic (https://twitter.com/gojkoadzic[@gojkoadzic])

https://www.amazon.com/Specification-Example-Successful-Deliver-Software/dp/1617290084

[[extreme-programming-explained]]
Extreme Programming Explained
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

In this second edition of "Extreme Programming Explained, " Kent Beck
organizes and presents five years worth of experiences, growth, and
change revolving around XP. If you are seriously interested in
understanding how you and your team can start down the path of
improvement with XP, you must read this book. Francesco Cirillo, Chief
Executive Officer, XPLabs S.R.L. The first edition of this book told us
what XP was it changed the way many of us think about software
development. This second edition takes it farther and gives us a lot
more of the why of XP, the motivations and the principles behind the
practices. This is great stuff. Armed with the what and the why, we can
now all set out to confidently work on the how: how to run our projects
better, and how to get agile techniques adopted in our organizations.
Dave Thomas, The Pragmatic Programmers LLC This book is dynamite! It was
revolutionary when it first appeared a few years ago, and this new
edition is equally profound. For those who insist on cookbook
checklists, there s an excellent chapter on primary practices, but I
urge you to begin by truly contemplating the meaning of the opening
sentence in the first chapter of Kent Beck s book: XP is about social
change. You should do whatever it takes to ensure that every IT
professional and every IT manager all the way up to the CIO has a copy
of "Extreme Programming Explained" on his or her desk. Ed Yourdon,
author and consultant XP is a powerful set of concepts for simplifying
the process of software design, development, and testing. It is about
minimalism and incrementalism, which are especially useful principles
when tackling complex problems that require a balance of creativity and
discipline. Michael A. Cusumano, Professor, MIT Sloan School of
Management, and author of "The Business of Software" "Extreme
Programming Explained" is the work of a talented and passionate
craftsman. Kent Beck has brought together a compelling collection of
ideas about programming and management that deserves your full
attention. My only beef is that our profession has gotten to a point
where such common-sense ideas are labeled extreme. ... Lou Mazzucchelli,
Fellow, Cutter Business Technology Council If your organization is ready
for a change in the way it develops software, there s the slow
incremental approach, fixing things one by one, or the fast track,
jumping feet first into Extreme Programming. Do not be frightened by the
name, it is not that extreme at all. It is mostly good old recipes and
common sense, nicely integrated together, getting rid of all the fat
that has accumulated over the years. Philippe Kruchten, UBC, Vancouver,
British Columbia Sometimes revolutionaries get left behind as the
movement they started takes on a life of its own. In this book, Kent
Beck shows that he remains ahead of the curve, leading XP to its next
level. Incorporating five years of feedback, this book takes a fresh
look at what it takes to develop better software in less time and for
less money. There are no silver bullets here, just a set of practical
principles that, when used wisely, can lead to dramatic improvements in
software development productivity. Mary Poppendieck, author of "Lean
Software Development: An Agile Toolkit" Kent Beck has revised his
classic book based on five more years of applying and teaching XP. He
shows how the path to XP is both easy and hard: It can be started with
fewer practices, and yet it challenges teams to go farther than ever.
William Wake, independent consultant With new insights, wisdom from
experience, and clearer explanations of the art of Extreme Programming,
this edition of Beck s classic will help many realize the dream of
outstanding software development. Joshua Kerievsky, author of
"Refactoring to Patterns" and Founder, Industrial Logic, Inc. XP has
changed the way our industry thinks about software development. Its
brilliant simplicity, focused execution, and insistence on fact-based
planning over speculation have set a new standard for software delivery.
David Trowbridge, Architect, Microsoft Corporation

Accountability. Transparency. Responsibility. These are not words that
are often applied to software development.

In this completely revised introduction to Extreme Programming (XP),
Kent Beck describes how to improve your software development by
integrating these highly desirable concepts into your daily development
process.

The first edition of "Extreme Programming Explained" is a classic. It
won awards for its then-radical ideas for improving small-team
development, such as having developers write automated tests for their
own code and having the whole team plan weekly. Much has changed in five
years. This completely rewritten second edition expands the scope of XP
to teams of any size by suggesting a program of continuous improvement
based on: Five core values consistent with excellence in software
developmentEleven principles for putting those values into
actionThirteen primary and eleven corollary practices to help you push
development past its current business and technical limitations

Whether you have a small team that is already closely aligned with your
customers or a large team in a gigantic or multinational organization,
you will find in these pages a wealth of ideas to challenge, inspire,
and encourage you and your team members to substantially improve your
software development.

You will discover how to: Involve the whole team XP styleIncrease
technical collaboration through pair programming and continuous
integrationReduce defects through developer testingAlign business and
technical decisions through weekly and quarterly planningImprove
teamwork by setting up an informative, shared workspace

You will also find many other concrete ideas for improvement, all based
on a philosophy that emphasizes simultaneously increasing the humanity
and effectiveness of software development.

Every team can improve. Every team can begin improving today.
Improvement is possible beyond what we can currently imagine. "Extreme
Programming Explained, Second Edition, " offers ideas to fuel your
improvement for years to come. " Author: Kent Beck
(https://twitter.com/KentBeck[@KentBeck])

https://www.amazon.com/Extreme-Programming-Explained-Embrace-Change/dp/0321278658

[[the-passionate-programmer]]
The passionate Programmer
~~~~~~~~~~~~~~~~~~~~~~~~~

Success in today's IT environment requires you to view your career as a
business endeavor. In this book, you'll learn how to become an
entrepreneur, driving your career in the direction of your choosing.
You'll learn how to build your software development career step by step,
following the same path that you would follow if you were building,
marketing, and selling a product. After all, your skills themselves are
a product.

The choices you make about which technologies to focus on and which
business domains to master have at least as much impact on your success
as your technical knowledge itself--don't let those choices be
accidental. We'll walk through all aspects of the decision-making
process, so you can ensure that you're investing your time and energy in
the right areas.

You'll develop a structured plan for keeping your mind engaged and your
skills fresh. You'll learn how to assess your skills in terms of where
they fit on the value chain, driving you away from commodity skills and
toward those that are in high demand. Through a mix of high-level,
thought-provoking essays and tactical "Act on It" sections, you will
come away with concrete plans you can put into action immediately.
You'll also get a chance to read the perspectives of several highly
successful members of our industry from a variety of career paths.

As with any product or service, if nobody knows what you're selling,
nobody will buy. We'll walk through the often-neglected world of
marketing, and you'll create a plan to market yourself both inside your
company and to the industry in general.

Above all, you'll see how you can set the direction of your career,
leading to a more fulfilling and remarkable professional life.

Author: Chad Fowler (https://twitter.com/chadfowler[@chadfowler])

https://www.amazon.com/Passionate-Programmer-Remarkable-Development-Pragmatic-ebook/dp/B00AYQNR5U

[[beyond-legacy-code]]
Beyond Legacy Code
~~~~~~~~~~~~~~~~~~

These nine practices could save the software industry. Beyond Legacy
Code is filled with practical, hands-on advice and a common-sense
exploration of why technical practices such as refactoring and
test-first development are critical to building maintainable software.
Discover how to avoid the pitfalls teams encounter when adopting these
practices, and how to dramatically reduce the risk associated with
building software—realizing significant savings in both the short and
long term. With a deeper understanding of the principles behind the
practices, you’ll build software that’s easier and less costly to
maintain and extend.

By adopting these nine key technical practices, you’ll learn to say
what, why, and for whom before how; build in small batches; integrate
continuously; collaborate; create CLEAN code; write the test first;
specify behaviors with tests; implement the design last; and refactor
legacy code.

Software developers will find hands-on, pragmatic advice for writing
higher quality, more maintainable, and bug-free code. Managers,
customers, and product owners will gain deeper insight into vital
processes. By moving beyond the old-fashioned procedural thinking of the
Industrial Revolution, and working together to embrace standards and
practices that will advance software development, we can turn the legacy
code crisis into a true Information Revolution.

Author: David Scott Bernstein
(https://twitter.com/ToBeAgile[@ToBeAgile])

https://www.amazon.com/Beyond-Legacy-Code-Practices-Software/dp/1680500791
