Domain-Driven Design: Tackling Complexity in the Heart of Software


Eric Evans - 2003
    "His book is very compatible with XP. It is not about drawing pictures of a domain; it is about how you think of it, the language you use to talk about it, and how you organize your software to reflect your improving understanding of it. Eric thinks that learning about your problem domain is as likely to happen at the end of your project as at the beginning, and so refactoring is a big part of his technique. "The book is a fun read. Eric has lots of interesting stories, and he has a way with words. I see this book as essential reading for software developers--it is a future classic." --Ralph Johnson, author of Design Patterns "If you don't think you are getting value from your investment in object-oriented programming, this book will tell you what you've forgotten to do. "Eric Evans convincingly argues for the importance of domain modeling as the central focus of development and provides a solid framework and set of techniques for accomplishing it. This is timeless wisdom, and will hold up long after the methodologies du jour have gone out of fashion." --Dave Collins, author of Designing Object-Oriented User Interfaces "Eric weaves real-world experience modeling--and building--business applications into a practical, useful book. Written from the perspective of a trusted practitioner, Eric's descriptions of ubiquitous language, the benefits of sharing models with users, object life-cycle management, logical and physical application structuring, and the process and results of deep refactoring are major contributions to our field." --Luke Hohmann, author of Beyond Software Architecture "This book belongs on the shelf of every thoughtful software developer." --Kent Beck "What Eric has managed to capture is a part of the design process that experienced object designers have always used, but that we have been singularly unsuccessful as a group in conveying to the rest of the industry. We've given away bits and pieces of this knowledge...but we've never organized and systematized the principles of building domain logic. This book is important." --Kyle Brown, author of Enterprise Java(TM) Programming with IBM(R) WebSphere(R) The software development community widely acknowledges that domain modeling is central to software design. Through domain models, software developers are able to express rich functionality and translate it into a software implementation that truly serves the needs of its users. But despite its obvious importance, there are few practical resources that explain how to incorporate effective domain modeling into the software development process. Domain-Driven Design fills that need. This is not a book about specific technologies. It offers readers a systematic approach to domain-driven design, presenting an extensive set of design best practices, experience-based techniques, and fundamental principles that facilitate the development of software projects facing complex domains. Intertwining design and development practice, this book incorporates numerous examples based on actual projects to illustrate the application of domain-driven design to real-world software development. Readers learn how to use a domain model to make a complex development effort more focused and dynamic. A core of best practices and standard patterns provides a common language for the development team. A shift in emphasis--refactoring not just the code but the model underlying the code--in combination with the frequent iterations of Agile development leads to deeper insight into domains and enhanced communication between domain expert and programmer. Domain-Driven Design then builds on this foundation, and addresses modeling and design for complex systems and larger organizations.Specific topics covered include:Getting all team members to speak the same language Connecting model and implementation more deeply Sharpening key distinctions in a model Managing the lifecycle of a domain object Writing domain code that is safe to combine in elaborate ways Making complex code obvious and predictable Formulating a domain vision statement Distilling the core of a complex domain Digging out implicit concepts needed in the model Applying analysis patterns Relating design patterns to the model Maintaining model integrity in a large system Dealing with coexisting models on the same project Organizing systems with large-scale structures Recognizing and responding to modeling breakthroughs With this book in hand, object-oriented developers, system analysts, and designers will have the guidance they need to organize and focus their work, create rich and useful domain models, and leverage those models into quality, long-lasting software implementations.

The Visible Ops Handbook: Starting ITIL in 4 Practical Steps


Kevin Behr - 2004
    Visible Ops is comprised of four prescriptive and self-fueling steps that take an organization from any starting point to a continually improving process. MAKING ITIL ACTIONABLE Although the Information Technology Infrastructure Library (ITIL) provides a wealth of best practices, it lacks prescriptive guidance: What do you implement first, and how do you do it? Moreover, the ITIL books remain relatively expensive to distribute. Other information, publicly available from a variety of sources, is too general and vague to effectively aid organizations that need to start or enhance process improvement efforts. The Visible Ops booklet provides a prescriptive roadmap for organizations beginning or continuing their IT process improvement journey. WHY DO WE NEED VISIBLE OPS? The Visible Ops methodology was developed because there was not a satisfactory answer to the question: "I believe in the need for IT process improvement, but where do I start?" Since 2000, Gene Kim and Kevin Behr have met with hundreds of IT organizations and identified eight high-performing IT organizations with the highest service levels, best security, and best efficiencies. For years, they studied these high-performing organizations to figure out the secrets to their success. Visible Ops codifies how these organizations achieved their transformation from good to great, showing how interested organizations can replicate the key processes of these high-performing organizations in just four steps: 1. Stabilize Patient, Modify First Response - Almost 80% of outages are self-inflicted. The first step is to control risky changes and reduce MTTR by addressing how changes are managed and how problems are resolved. 2. Catch and Release, Find Fragile Artifacts - Often, infrastructure exists that cannot be repeatedly replicated. In this step, we inventory assets, configurations and services, to identify those with the lowest change success rates, highest MTTR and highest business downtime costs. 3. Establish Repeatable Build Library - The highest return on investment is implementing effective release management processes. This step creates repeatable builds for the most critical assets and services, to make it "cheaper to rebuild than to repair." 4. Enable Continuous Improvement - The previous steps have progressively built a closed-loop between the Release, Control and Resolution processes. This step implements metrics to allow continuous improvement of all of these process areas, to best ensure that business objectives are met.

Work Rules!: Insights from Inside Google That Will Transform How You Live and Lead


Laszlo Bock - 2015
    "We spend more time working than doing anything else in life. It's not right that the experience of work should be so demotivating and dehumanizing." So says Laszlo Bock, head of People Operations at the company that transformed how the world interacts with knowledge. This insight is the heart of WORK RULES!, a compelling and surprisingly playful manifesto that offers lessons including:Take away managers' power over employeesLearn from your best employees-and your worstHire only people who are smarter than you are, no matter how long it takes to find themPay unfairly (it's more fair!)Don't trust your gut: Use data to predict and shape the futureDefault to open-be transparent and welcome feedbackIf you're comfortable with the amount of freedom you've given your employees, you haven't gone far enough. Drawing on the latest research in behavioral economics and a profound grasp of human psychology, WORK RULES! also provides teaching examples from a range of industries-including lauded companies that happen to be hideous places to work and little-known companies that achieve spectacular results by valuing and listening to their employees. Bock takes us inside one of history's most explosively successful businesses to reveal why Google is consistently rated one of the best places to work in the world, distilling 15 years of intensive worker R&D into principles that are easy to put into action, whether you're a team of one or a team of thousands. WORK RULES! shows how to strike a balance between creativity and structure, leading to success you can measure in quality of life as well as market share. Read it to build a better company from within rather than from above; read it to reawaken your joy in what you do.

High Output Management


Andrew S. Grove - 1983
    In High Output Management, Andrew S. Grove, former chairman and CEO (and employee number three) of Intel, shares his perspective on how to build and run a company. Born of Grove’s experiences at one of America’s leading technology companies, this legendary management book is a Silicon Valley staple, equally appropriate for sales managers, accountants, consultants, and teachers, as well as CEOs and startup founders. Grove covers techniques for creating highly productive teams, demonstrating methods of motivation that lead to peak performance—throughout, High Output Management is a practical handbook for navigating real-life business scenarios and a powerful management manifesto with the ability to revolutionize the way we work.

Herding Cats: A Primer for Programmers Who Lead Programmers


J. Hank Rainwater - 2002
    J. Hank Rainwater introduces new and not-so-new managers to concepts that will encourage them and help them become a strong leaders for their teams. You�ll learn about the varieties of programmer personality traits and be able match personnel to projects for maximum productivity. You�ll also learn how to manage your strengths and weaknesses as you improve your leadership skills, which will result in dramatic improvements to your team�s success. In this �how-to� manual that�s both practical and thought- provoking, you�ll find several chapters devoted to administrative aspects of your job, such as managing meetings, hiring and firing, and principles of organizing your job for success. Rainwater also describes task management software he built that you can use to organize project assignments. (The source code for this software is available for download once you own the book.) The chapter on technical leadership, which highlights the importance of architecture, design, and code reviews, not only illustrates practical applications of leadership, but also digs deep into concrete methods you must employ. Rainwater shows why things can go wrong for a leader and how to correct career-derailing problems as they arise. One chapter is devoted to the working relationship that you as a manager have with your boss, and it guides you into the best way to respond to the pressures of software project deadlines. Numerous other topics are discussed that are a necessity for anyone seeking to manage the �peopleware� aspects of software development. "Herding Cats: A Primer for Programmers Who Lead Programmers" is the definitive guide to the challenges and obstacles facing anyone who manages programmers. Author Information Hank Rainwater leads programmers who build software for the insurance industry at Risk Sciences Group in Atlanta, Georgia. His career in science and engineering has spanned over three decades and has included writing Fortran programs on punch cards; teaching college mathematics; conducting research in radio astronomy, missile guidance systems, and remote sensing technologies; and managing the building of embedded digital control systems. As a software professional, Hank has served as a consultant, mentor, and teacher of programming languages and has led development teams in several industries.

Working in Public: The Making and Maintenance of Open Source Software


Nadia Eghbal - 2020
    In the late 1990s, it provided an optimistic model for public

When Coffee & Kale Compete: Become Great at Making Products People Will Buy


Alan Klement - 2016
    

Ship It!


Jared Richardson - 2005
    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.

Shipping Greatness: Practical lessons on building and launching outstanding software, learned on the job at Google and Amazon


Chris Vander Mey - 2012
    In this guide, Chris Vander Mey provides a simplified, no-BS approach to the entire software lifecycle, distilled from lessons he learned as a manager at Amazon and Google.In the first part of the book, you’ll learn a step-by-step shipping process used by many of the best teams at Google and Amazon. Part II shows you the techniques, best practices, and skills you need to face an array of challenges in product, program, project, and engineering management.Clearly define your product and develop your mission and strategyAssemble your team and understand enough about systems to communicate with themCreate a beautiful, intuitive, and simple user experienceTrack your team’s deliverables and closely manage the testing processCommunicate clearly to gracefully handle requests, senior-management interactions, and feedback from various sourcesBuild metrics to track progress, spot problems, and celebrate successStick to your launch checklist and plan for marketing and PR

Practical Object Oriented Design in Ruby


Sandi Metz - 2012
    The Web is awash in Ruby code that is now virtually impossible to change or extend. This text helps you solve that problem by using powerful real-world object-oriented design techniques, which it thoroughly explains using simple and practical Ruby examples. Sandi Metz has distilled a lifetime of conversations and presentations about object-oriented design into a set of Ruby-focused practices for crafting manageable, extensible, and pleasing code. She shows you how to build new applications that can survive success and repair existing applications that have become impossible to change. Each technique is illustrated with extended examples, all downloadable from the companion Web site, poodr.info. The first title to focus squarely on object-oriented Ruby application design, Practical Object-Oriented Design in Ruby will guide you to superior outcomes, whatever your previous Ruby experience. Novice Ruby programmers will find specific rules to live by; intermediate Ruby programmers will find valuable principles they can flexibly interpret and apply; and advanced Ruby programmers will find a common language they can use to lead development and guide their colleagues. This guide will help you Understand how object-oriented programming can help you craft Ruby code that is easier to maintain and upgrade Decide what belongs in a single Ruby class Avoid entangling objects that should be kept separate Define flexible interfaces among objects Reduce programming overhead costs with duck typing Successfully apply inheritance Build objects via composition Design cost-effective tests Solve common problems associated with poorly designed Ruby code

The Art of Scalability: Scalable Web Architecture, Processes, and Organizations for the Modern Enterprise


Martin L. Abbott - 2009
    Abbott and Michael T. Fisher cover everything IT and business leaders must know to build technology infrastructures that can scale smoothly to meet any business requirement. Drawing on their unparalleled experience managing some of the world s highest-transaction-volume Web sites, the authors provide detailed models and best-practice approaches available in no other book. Unlike previous books on scalability, "The Art of Scalability" doesn t limit its coverage to technology. Writing for both technical and nontechnical decision-makers, this book covers everything that impacts scalability, including architecture, processes, people, and organizations. Throughout, the authors address a broad spectrum of real-world challenges, from performance testing to IT governance. Using their tools and guidance, organizations can systematically overcome obstacles to scalability and achieve unprecedented levels of technical and business performance. Coverage includes Staffing the scalable organization: essential organizational, management, and leadership skills for technical leaders Building processes for scale: process lessons from hyper-growth companies, from technical issue resolution to crisis management Making better build versus buy decisions Architecting scalable solutions: powerful proprietary models for identifying scalability needs and choosing the best approaches to meet them Optimizing performance through caching, application and database splitting, and asynchronous design Scalability techniques for emerging technologies, including clouds and grids Planning for rapid data growth and new data centers Evolving monitoring strategies to tightly align with customer requirements "

Lean Customer Development: Building Products Your Customers Will Buy


Cindy Alvarez - 2014
    These insights may shake your assumptions, but they'll help you reach the "ah-ha!" moments that inspire truly great products.Validate or invalidate your hypothesis by talking to the right peopleLearn how to conduct successful customer interviews play-by-playDetect a customer's behaviors, pain points, and constraintsTurn interview insights into Minimum Viable Products to validate what customers will use and buyAdapt customer development strategies for large companies, conservative industries, and existing products

Scrum Shortcuts Without Cutting Corners: Agile Tactics, Tools, & Tips


Ilan Goldstein - 2013
    But when new Scrum practitioners attempt to apply Scrum theory and high-level approaches in actual projects, they often find it surprisingly difficult. In Scrum Shortcuts without Cutting Corners, Scrum expert Ilan Goldstein helps you translate the Scrum framework into reality to meet the Scrum challenges your formal training never warned you about. Drawing on his extensive agile experience in a wide range of projects and environments, Goldstein presents thirty proven, flexible shortcuts for optimizing Scrum processes, actions, and outcomes. Each shortcut walks you through applying a Scrum approach to achieve a tangible output. These easy-to-digest, actionable patterns address a broad range of topics including getting started, quality and metrics, team members and roles, managing stakeholders, estimation, continuous improvement and much more. Whatever your role, Scrum Shortcuts without Cutting Corners will help you take your Scrum skills to the next level and achieve better results in any project you participate in.

Web Form Design: Filling in the Blanks


Luke WroblewskiMicah Alpern - 2008
    In Web Form Design, Luke Wroblewski draws on original research, his considerable experience at Yahoo! and eBay, and the perspectives of many of the field's leading designers to show you everything you need to know about designing effective and engaging Web forms.

The Art Of Business Value


Mark Schwartz - 2016
    But the Agile literature has paid scant attention to what business value means—and how to know whether or not you are delivering it. This problem becomes ever more critical as you push value delivery toward autonomous teams and away from requirements “tossed over the wall” by business stakeholders. An empowered team needs to understand its goal! Playful and thought-provoking, The Art of Business Value explores what business value means, why it matters, and how it should affect your software development and delivery practices. More than any other IT delivery approach, DevOps (and Agile thinking in general) makes business value a central concern. This book examines the role of business value in software and makes a compelling case for why a clear understanding of business value will change the way you deliver software. This book will make you think deeply about not only what it means to deliver value but also the relationship of the IT organization to the rest of the enterprise. It will give you the language to discuss value with the business, methods to cut through bureaucracy, and strategies for incorporating Agile teams and culture into the enterprise. Most of all, this book will startle you into new ways of thinking about the cutting-edge of Agile practice and where it may lead.