Skip to content

Instantly share code, notes, and snippets.

@wwerner
Last active May 10, 2022 18:41
Show Gist options
  • Star 19 You must be signed in to star a gist
  • Fork 9 You must be signed in to fork a gist
  • Save wwerner/58d091bfceab655cfb2fc1c71bd17bb1 to your computer and use it in GitHub Desktop.
Save wwerner/58d091bfceab655cfb2fc1c71bd17bb1 to your computer and use it in GitHub Desktop.
Reading list for young developers

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 (@pragmaticAndy), Dave Thomas (@pragDave)

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 (@stevemconstrux)

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 (@sandromancuso)

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 (@VaughnVernon)

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 (@unclebobmartin)

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 (@jaredrichardson), William Gwaltney

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 (@mtnygard)

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 (@gojkoadzic)

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 (@KentBeck)

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 (@chadfowler)

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 (@ToBeAgile)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment