Code Complete


Steve McConnell - 1993
    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

The Future of Architecture in 100 Buildings


Marc Kushner - 2014
    A building that eats smog. An inflatable concert hall. A research lab that can walk through snow. We’re entering a new age in architecture—one where we expect our buildings to deliver far more than just shelter. We want buildings that inspire us while helping the environment; buildings that delight our senses while serving the needs of a community; buildings made possible both by new technology and repurposed materials.Like an architectural cabinet of wonders, this book collects the most innovative buildings of today and tomorrow. The buildings hail from all seven continents (to say nothing of other planets), offering a truly global perspective on what lies ahead. Each page captures the soaring confidence, the thoughtful intelligence, the space-age wonder, and at times the sheer whimsy of the world’s most inspired buildings—and the questions they provoke: Can a building breathe? Can a skyscraper be built in a day? Can we 3D-print a house? Can we live on the moon?Filled with gorgeous imagery and witty insight, this book is an essential and delightful guide to the future being built around us—a future that matters more, and to more of us, than ever.

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 Design of Everyday Things


Donald A. Norman - 1988
    It could forever change how you experience and interact with your physical surroundings, open your eyes to the perversity of bad design and the desirability of good design, and raise your expectations about how things should be designed.B & W photographs and illustrations throughout.

Biomimicry: Innovation Inspired by Nature


Janine M. Benyus - 1997
    Biomimics study nature's most successful ideas over the past 3.5 million years, and adapt them for human use. The results are revolutionizing how materials are invented and how we compute, heal ourselves, repair the environment, and feed the world.Janine Benyus takes readers into the lab and in the field with maverick thinkers as they: discover miracle drugs by watching what chimps eat when they're sick; learn how to create by watching spiders weave fibers; harness energy by examining how a leaf converts sunlight into fuel in trillionths of a second; and many more examples.Composed of stories of vision and invention, personalities and pipe dreams, Biomimicry is must reading for anyone interested in the shape of our future.

Ruined by Design: How Designers Destroyed the World, and What We Can Do to Fix It


Mike Monteiro - 2019
    Guns, which lead to so much death, work exactly as they’re designed to work. And every time we “improve” their design, they get better at killing. Facebook’s privacy settings, which have outed gay teens to their conservative parents, are working exactly as designed. Their “real names” iniative, which makes it easier for stalkers to re-find their victims, is working exactly as designed. Twitter’s toxicity and lack of civil discourse is working exactly as it’s designed to work.The world is working exactly as designed. And it’s not working very well. Which means we need to do a better job of designing it. Design is a craft with an amazing amount of power. The power to choose. The power to influence. As designers, we need to see ourselves as gatekeepers of what we are bringing into the world, and what we choose not to bring into the world. Design is a craft with responsibility. The responsibility to help create a better world for all.Design is also a craft with a lot of blood on its hands. Every cigarette ad is on us. Every gun is on us. Every ballot that a voter cannot understand is on us. Every time social network’s interface allows a stalker to find their victim, that’s on us. The monsters we unleash into the world will carry your name.This book will make you see that design is a political act. What we choose to design is a political act. Who we choose to work for is a political act. Who we choose to work with is a political act. And, most importantly, the people we’ve excluded from these decisions is the biggest (and stupidest) political act we’ve made as a society.If you’re a designer, this book might make you angry. It should make you angry. But it will also give you the tools you need to make better decisions. You will learn how to evaluate the potential benefits and harm of what you’re working on. You’ll learn how to present your concerns. You’ll learn the importance of building and working with diverse teams who can approach problems from multiple points-of-view. You’ll learn how to make a case using data and good storytelling. You’ll learn to say NO in a way that’ll make people listen. But mostly, this book will fill you with the confidence to do the job the way you always wanted to be able to do it. This book will help you understand your responsibilities.

Set Phasers on Stun: And Other True Tales of Design, Technology and Human Error


Steven Casey - 1993
    Structurally sound aircraft plummet to the earth, supertankers run aground in calm weather, and the machines of medical science maim unsuspecting patients - - all because designers sometimes fail to reflect the characteristics of the user in their designs. Designers and the public alike are realizing that many human' errors are more aptly named designed-induced' errors. Most consumers experience the frustration of using many new products; amusing stories about programming a VCR, operating a personal computer, or finding the headlight switch on a rental car are heard in everyday conversation. The problems consumers experience with modern everyday things are shared by the users of large-scale technologies where the consequences of design can go well beyond simple matters of inconvenience or amusement. In the new second edition of Set Phasers on Stun' and Other True Tales of Design, Technology, and Human Error, noted designer and author Steven Casey has assembled 20 factual and arresting stories about people and their attempts to use modern technological creations. Although the operator or pilot usually gets blamed for a big disaster, the root cause can frequently be found in subtle characteristics of the device's human interface.' Technological disasters can often be traced directly to the interplay between people and the design of a device - - be it an airliner cockpit, the controls in an industrial plant, a spacecraft's instruments, a medical system, a nuclear reactor, or even a commercial dishwashing machine.

Messy: The Power of Disorder to Transform Our Lives


Tim Harford - 2016
    His liberating message: you'll be more successful if you stop struggling so hard to plan or control your success. Messy is a deeply researched, endlessly eye-opening adventure in the life-changing magic of not tidying up' Oliver BurkemanThe urge to tidiness seems to be rooted deep in the human psyche. Many of us feel threatened by anything that is vague, unplanned, scattered around or hard to describe. We find comfort in having a script to rely on, a system to follow, in being able to categorise and file away.We all benefit from tidy organisation - up to a point. A large library needs a reference system. Global trade needs the shipping container. Scientific collaboration needs measurement units. But the forces of tidiness have marched too far. Corporate middle managers and government bureaucrats have long tended to insist that everything must have a label, a number and a logical place in a logical system. Now that they are armed with computers and serial numbers, there is little to hold this tidy-mindedness in check. It's even spilling into our personal lives, as we corral our children into sanitised play areas or entrust our quest for love to the soulless algorithms of dating websites. Order is imposed when chaos would be more productive. Or if not chaos, then . . . messiness.The trouble with tidiness is that, in excess, it becomes rigid, fragile and sterile. In Messy, Tim Harford reveals how qualities we value more than ever - responsiveness, resilience and creativity - simply cannot be disentangled from the messy soil that produces them. This, then, is a book about the benefits of being messy: messy in our private lives; messy in the office, with piles of paper on the desk and unread spreadsheets; messy in the recording studio, the laboratory or in preparing for an important presentation; and messy in our approach to business, politics and economics, leaving things vague, diverse and uncomfortably made-up-on-the-spot. It's time to rediscover the benefits of a little mess.

The 99% Invisible City: A Field Guide to the Hidden World of Everyday Design


Roman Mars - 2020
    The show celebrates design and architecture in all of its functional glory and accidental absurdity, with intriguing tales of both designers and the people impacted by their designs.Now, in The 99% Invisible City: A Field Guide to Hidden World of Everyday Design, host Roman Mars and coauthor Kurt Kohlstedt zoom in on the various elements that make our cities work, exploring the origins and other fascinating stories behind everything from power grids and fire escapes to drinking fountains and street signs. With deeply researched entries and beautiful line drawings throughout, The 99% Invisible City will captivate devoted fans of the show and anyone curious about design, urban environments, and the unsung marvels of the world around them.

JavaScript: The Good Parts


Douglas Crockford - 2008
    This authoritative book scrapes away these bad features to reveal a subset of JavaScript that's more reliable, readable, and maintainable than the language as a whole--a subset you can use to create truly extensible and efficient code.Considered the JavaScript expert by many people in the development community, author Douglas Crockford identifies the abundance of good ideas that make JavaScript an outstanding object-oriented programming language-ideas such as functions, loose typing, dynamic objects, and an expressive object literal notation. Unfortunately, these good ideas are mixed in with bad and downright awful ideas, like a programming model based on global variables.When Java applets failed, JavaScript became the language of the Web by default, making its popularity almost completely independent of its qualities as a programming language. In JavaScript: The Good Parts, Crockford finally digs through the steaming pile of good intentions and blunders to give you a detailed look at all the genuinely elegant parts of JavaScript, including:SyntaxObjectsFunctionsInheritanceArraysRegular expressionsMethodsStyleBeautiful featuresThe real beauty? As you move ahead with the subset of JavaScript that this book presents, you'll also sidestep the need to unlearn all the bad parts. Of course, if you want to find out more about the bad parts and how to use them badly, simply consult any other JavaScript book.With JavaScript: The Good Parts, you'll discover a beautiful, elegant, lightweight and highly expressive language that lets you create effective code, whether you're managing object libraries or just trying to get Ajax to run fast. If you develop sites or applications for the Web, this book is an absolute must.

The Shark's Paintbrush: Biomimicry and How Nature is Inspiring Innovation


Jay Harman - 2013
    They use enormous amounts of energy to heat raw material, shape it with heavy machinery, and maintain its design, strength, and durability with toxic chemicals. Now, in a world of depleted natural resources, entrepreneurs and scientists are turning to nature to inspire future products that are more energy- and cost-efficient. Biomimicry, the science of employing nature to advance sustainable technology, is arguably one of the hottest new business concepts. At the center of this growing movement has been award-winning inventor and biomimetic entrepreneur Jay Harman.In The Shark's Paintbrush, Harman introduces us to pioneering engineers in a wide array of businesses who are uncovering and copying nature’s hidden marvels. He shows business leaders and aspiring entrepreneurs how we can reconcile creating more powerful, lucrative technologies with maximizing sustainability. He injects a whole new vocabulary and way of thinking into the business sphere that speaks to both small start-ups and corporate giants.

The Productive Programmer


Neal Ford - 2008
    The Productive Programmer offers critical timesaving and productivity tools that you can adopt right away, no matter what platform you use. Master developer Neal Ford not only offers advice on the mechanics of productivity-how to work smarter, spurn interruptions, get the most out your computer, and avoid repetition-he also details valuable practices that will help you elude common traps, improve your code, and become more valuable to your team. You'll learn to:Write the test before you write the codeManage the lifecycle of your objects fastidiously Build only what you need now, not what you might need later Apply ancient philosophies to software development Question authority, rather than blindly adhere to standardsMake hard things easier and impossible things possible through meta-programming Be sure all code within a method is at the same level of abstraction Pick the right editor and assemble the best tools for the job This isn't theory, but the fruits of Ford's real-world experience as an Application Architect at the global IT consultancy ThoughtWorks. Whether you're a beginner or a pro with years of experience, you'll improve your work and your career with the simple and straightforward principles in The Productive Programmer.

The Craftsman


Richard Sennett - 2008
    The computer programmer, the doctor, the artist, and even the parent and citizen all engage in a craftsman’s work. In this thought-provoking book, Sennett explores the work of craftsmen past and present, identifies deep connections between material consciousness and ethical values, and challenges received ideas about what constitutes good work in today’s world. The Craftsman engages the many dimensions of skill—from the technical demands to the obsessive energy required to do good work. Craftsmanship leads Sennett across time and space, from ancient Roman brickmakers to Renaissance goldsmiths to the printing presses of Enlightenment Paris and the factories of industrial London; in the modern world he explores what experiences of good work are shared by computer programmers, nurses and doctors, musicians, glassblowers, and cooks. Unique in the scope of his thinking, Sennett expands previous notions of crafts and craftsmen and apprises us of the surprising extent to which we can learn about ourselves through the labor of making physical things.

The Model Thinker: What You Need to Know to Make Data Work for You


Scott E. Page - 2018
    But as anyone who has ever opened up a spreadsheet packed with seemingly infinite lines of data knows, numbers aren't enough: we need to know how to make those numbers talk. In The Model Thinker, social scientist Scott E. Page shows us the mathematical, statistical, and computational models—from linear regression to random walks and far beyond—that can turn anyone into a genius. At the core of the book is Page's "many-model paradigm," which shows the reader how to apply multiple models to organize the data, leading to wiser choices, more accurate predictions, and more robust designs. The Model Thinker provides a toolkit for business people, students, scientists, pollsters, and bloggers to make them better, clearer thinkers, able to leverage data and information to their advantage.

Designing Data-Intensive Applications


Martin Kleppmann - 2015
    Difficult issues need to be figured out, such as scalability, consistency, reliability, efficiency, and maintainability. In addition, we have an overwhelming variety of tools, including relational databases, NoSQL datastores, stream or batch processors, and message brokers. What are the right choices for your application? How do you make sense of all these buzzwords?In this practical and comprehensive guide, author Martin Kleppmann helps you navigate this diverse landscape by examining the pros and cons of various technologies for processing and storing data. Software keeps changing, but the fundamental principles remain the same. With this book, software engineers and architects will learn how to apply those ideas in practice, and how to make full use of data in modern applications. Peer under the hood of the systems you already use, and learn how to use and operate them more effectively Make informed decisions by identifying the strengths and weaknesses of different tools Navigate the trade-offs around consistency, scalability, fault tolerance, and complexity Understand the distributed systems research upon which modern databases are built Peek behind the scenes of major online services, and learn from their architectures