AWS Well-Architected Framework (AWS Whitepaper)


Amazon Web Services - 2015
    By using the Framework you will learn architectural best practices for designing and operating reliable, secure, efficient, and cost-effective systems in the cloud.

Designed for Use


Lukas Mathis - 2011
    In this book for designers, developers, and product managers, expert developer and user interface designer Lukas Mathis explains how to make usability the cornerstone of every point in your design process, walking you through the necessary steps to plan the design for an application or website, test it, and get usage data after the design is complete. He shows you how to focus your design process on the most important thing: helping people get things done, easily and efficiently. The author presents a collection of valuable tips - organized in four distinct parts, filled with clever illustrations, and supported by fascinating psychological research. He teaches techniques that help you plan and evaluate your user interface design, and inspires you to look at design in a whole new way. He tells you exactly what to look for, and what to avoid, in creating applications and websites that people will be excited to use.

Apprenticeship Patterns: Guidance for the Aspiring Software Craftsman


Dave Hoover - 2009
    To grow professionally, you also need soft skills and effective learning techniques. Honing those skills is what this book is all about. Authors Dave Hoover and Adewale Oshineye have cataloged dozens of behavior patterns to help you perfect essential aspects of your craft. Compiled from years of research, many interviews, and feedback from O'Reilly's online forum, these patterns address difficult situations that programmers, administrators, and DBAs face every day. And it's not just about financial success. Apprenticeship Patterns also approaches software development as a means to personal fulfillment. Discover how this book can help you make the best of both your life and your career. Solutions to some common obstacles that this book explores in-depth include:Burned out at work? "Nurture Your Passion" by finding a pet project to rediscover the joy of problem solving.Feeling overwhelmed by new information? Re-explore familiar territory by building something you've built before, then use "Retreat into Competence" to move forward again.Stuck in your learning? Seek a team of experienced and talented developers with whom you can "Be the Worst" for a while. "Brilliant stuff! Reading this book was like being in a time machine that pulled me back to those key learning moments in my career as a professional software developer and, instead of having to learn best practices the hard way, I had a guru sitting on my shoulder guiding me every step towards master craftsmanship. I'll certainly be recommending this book to clients. I wish I had this book 14 years ago!" -Russ Miles, CEO, OpenCredo

What's New in Java 7?


Madhusudhan Konda - 2011
    Madhusudhan Konda provides an overview of these, including strings in switch statements, multi-catch exception handling, try-with-resource statements, the new File System API, extensions of the JVM, support for dynamically-typed languages, and the fork and join framework for task parallelism.

Managing Enterprise Content: A Unified Content Strategy


Ann Rockley - 2002
    Your customers expect the content you provide them to be adaptive --responding to the device, their location, their situation, and their personalized needs.Authors Ann Rockley and Charles Cooper provide insights and guidelines that will help you develop a unified content strategy--a repeatable, systematic plan that can help you reach your customers, anytime, anywhere, on any device.This up-to-date new edition of Managing Enterprise Content helps you: Determine business requirements Build your vision Design content that adapts to any device Develop content models, metadata, and workflow Put content governance in place Adapt to new and changed roles Identify tools requirements With this book you'll learn to design adaptable content that frees you from the tyranny of an ever increasing array of devices.

Growing Object-Oriented Software, Guided by Tests


Steve Freeman - 2009
    This one's a keeper." --Robert C. Martin "If you want to be an expert in the state of the art in TDD, you need to understand the ideas in this book."--Michael Feathers Test-Driven Development (TDD) is now an established technique for delivering better software faster. TDD is based on a simple idea: Write tests for your code before you write the code itself. However, this simple idea takes skill and judgment to do well. Now there's a practical guide to TDD that takes you beyond the basic concepts. Drawing on a decade of experience building real-world systems, two TDD pioneers show how to let tests guide your development and "grow" software that is coherent, reliable, and maintainable. Steve Freeman and Nat Pryce describe the processes they use, the design principles they strive to achieve, and some of the tools that help them get the job done. Through an extended worked example, you'll learn how TDD works at multiple levels, using tests to drive the features and the object-oriented structure of the code, and using Mock Objects to discover and then describe relationships between objects. Along the way, the book systematically addresses challenges that development teams encounter with TDD--from integrating TDD into your processes to testing your most difficult features. Coverage includes - Implementing TDD effectively: getting started, and maintaining your momentum throughout the project - Creating cleaner, more expressive, more sustainable code - Using tests to stay relentlessly focused on sustaining quality - Understanding how TDD, Mock Objects, and Object-Oriented Design come together in the context of a real software development project - Using Mock Objects to guide object-oriented designs - Succeeding where TDD is difficult: managing complex test data, and testing persistence and concurrency

Coders: The Making of a New Tribe and the Remaking of the World


Clive Thompson - 2019
    And this may sound weirdly obvious, but every single one of those pieces of software was written by a programmer. Programmers are thus among the most quietly influential people on the planet. As we live in a world made of software, they're the architects. The decisions they make guide our behavior. When they make something newly easy to do, we do a lot more of it. If they make it hard or impossible to do something, we do less of it.If we want to understand how today's world works, we ought to understand something about coders. Who exactly are the people that are building today's world? What makes them tick? What type of personality is drawn to writing software? And perhaps most interestingly -- what does it do to them?One of the first pieces of coding a newbie learns is the program to make the computer say "Hello, world!" Like that piece of code, Clive Thompson's book is a delightful place to begin to understand this vocation, which is both a profession and a way of life, and which essentially didn't exist little more than a generation ago, but now is considered just about the only safe bet we can make about what the future holds. Thompson takes us close to some of the great coders of our time, and unpacks the surprising history of the field, beginning with the first great coders, who were women. Ironically, if we're going to traffic in stereotypes, women are arguably "naturally" better at coding than men, but they were written out of the history, and shoved out of the seats, for reasons that are illuminating. Now programming is indeed, if not a pure brotopia, at least an awfully homogenous community, which attracts people from a very narrow band of backgrounds and personality types. As Thompson learns, the consequences of that are significant - not least being a fetish for disruption at scale that doesn't leave much time for pondering larger moral issues of collateral damage. At the same time, coding is a marvelous new art form that has improved the world in innumerable ways, and Thompson reckons deeply, as no one before him has, with what great coding in fact looks like, who creates it, and where they come from. To get as close to his subject has he can, he picks up the thread of his own long-abandoned coding practice, and tries his mightiest to up his game, with some surprising results.More and more, any serious engagement with the world demands an engagement with code and its consequences, and to understand code, we must understand coders. In that regard, Clive Thompson's Hello, World! is a marvelous and delightful master class.

Programming in Go: Creating Applications for the 21st Century


Mark Summerfield - 2012
    With this guide, pioneering Go programmer Mark Summerfield shows how to write code that takes full advantage of Go's breakthrough features and idioms. Both a tutorial and a language reference, "Programming in Go" brings together all the knowledge you need to evaluate Go, think in Go, and write high-performance software with Go. Summerfield presents multiple idiom comparisons showing exactly how Go improves upon older languages, calling special attention to Go's key innovations. Along the way, he explains everything from the absolute basics through Go's lock-free channel-based concurrency and its flexible and unusual duck-typing type-safe approach to object-orientation. Throughout, Summerfield's approach is thoroughly practical. Each chapter offers multiple live code examples designed to encourage experimentation and help you quickly develop mastery. Wherever possible, complete programs and packages are presented to provide realistic use cases, as well as exercises. Coverage includes:-- Quickly getting and installing Go, and building and running Go programs -- Exploring Go's syntax, features, and extensive standard library -- Programming Boolean values, expressions, and numeric types -- Creating, comparing, indexing, slicing, and formatting strings -- Understanding Go's highly efficient built-in collection types: slices and maps -- Using Go as a procedural programming language -- Discovering Go's unusual and flexible approach to object orientation -- Mastering Go's unique, simple, and natural approach to fine-grained concurrency -- Reading and writing binary, text, JSON, and XML files -- Importing and using standard library packages, custom packages, and third-party packages -- Creating, documenting, unit testing, and benchmarking custom packages

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 Art of Innovation: Lessons in Creativity from IDEO, America's Leading Design Firm


Tom Kelley - 2001
    At many companies, being first with a concept and first to market are critical just to survive. In The Art of Innovation, Tom Kelley, general manager of the Silicon Valley based design firm IDEO, takes readers behind the scenes of this wildly imaginative and energized company to reveal the strategies and secrets it uses to turn out hit after hit.IDEO doesn't buy into the myth of the lone genius working away in isolation, waiting for great ideas to strike. Kelley believes everyone can be creative, and the goal at his firm is to tap into that wellspring of creativity in order to make innovation a way of life. How does it do that? IDEO fosters an atmosphere conducive to freely expressing ideas, breaking the rules, and freeing people to design their own work environments. IDEO's focus on teamwork generates countless breakthroughs, fueled by the constant give-and-take among people ready to share ideas and reap the benefits of the group process. IDEO has created an intense, quick-turnaround, brainstorm-and-build process dubbed "the Deep Dive."In entertaining anecdotes, Kelley illustrates some of his firm's own successes (and joyful failures), as well as pioneering efforts at other leading companies. The book reveals how teams research and immerse themselves in every possible aspect of a new product or service, examining it from the perspective of clients, consumers, and other critical audiences.Kelley takes the reader through the IDEO problem-solving method:> Carefully observing the behavior or "anthropology" of the people who will be using a product or service> Brainstorming with high-energy sessions focused on tangible results> Quickly prototyping ideas and designs at every step of the way> Cross-pollinating to find solutions from other fields> Taking risks, and failing your way to success> Building a "Greenhouse" for innovationIDEO has won more awards in the last ten years than any other firm of its kind, and a full half-hour Nightline presentation of its creative process received one of the show's highest ratings. The Art of Innovation will provide business leaders with the insights and tools they need to make their companies the leading-edge, top-rated stars of their industries.From the Hardcover edition.

Head First Design Patterns


Eric Freeman - 2004
     At any given moment, somewhere in the world someone struggles with the same software design problems you have. You know you don't want to reinvent the wheel (or worse, a flat tire), so you look to Design Patterns--the lessons learned by those who've faced the same problems. With Design Patterns, you get to take advantage of the best practices and experience of others, so that you can spend your time on...something else. Something more challenging. Something more complex. Something more fun. You want to learn about the patterns that matter--why to use them, when to use them, how to use them (and when NOT to use them). But you don't just want to see how patterns look in a book, you want to know how they look "in the wild". In their native environment. In other words, in real world applications. You also want to learn how patterns are used in the Java API, and how to exploit Java's built-in pattern support in your own code. You want to learn the real OO design principles and why everything your boss told you about inheritance might be wrong (and what to do instead). You want to learn how those principles will help the next time you're up a creek without a design pattern. Most importantly, you want to learn the "secret language" of Design Patterns so that you can hold your own with your co-worker (and impress cocktail party guests) when he casually mentions his stunningly clever use of Command, Facade, Proxy, and Factory in between sips of a martini. You'll easily counter with your deep understanding of why Singleton isn't as simple as it sounds, how the Factory is so often misunderstood, or on the real relationship between Decorator, Facade and Adapter. With Head First Design Patterns, you'll avoid the embarrassment of thinking Decorator is something from the "Trading Spaces" show. Best of all, in a way that won't put you to sleep! We think your time is too important (and too short) to spend it struggling with academic texts. If you've read a Head First book, you know what to expect--a visually rich format designed for the way your brain works. Using the latest research in neurobiology, cognitive science, and learning theory, Head First Design Patterns will load patterns into your brain in a way that sticks. In a way that lets you put them to work immediately. In a way that makes you better at solving software design problems, and better at speaking the language of patterns with others on your team.

Elements of Clojure


Zachary Tellman - 2019
    This is necessary because, in the words of Michael Polanyi, "we can know more than we can tell." Our design choices are not the result of an ineluctable chain of logic; they come from a deeper place, one which is visceral and inarticulate.Polanyi calls this "tacit knowledge", a thing which we only understand as part of something else. When we speak, we do not focus on making sounds, we focus on our words. We understand the muscular act of speech, but would struggle to explain it.To write software, we must learn where to draw boundaries. Good software is built through effective indirection. We seem to have decided that this skill can only be learned through practice; it cannot be taught, except by example. Our decisions may improve with time, but not our ability to explain them. It's true that the study of these questions cannot yield a closed-form solution for judging software design. We can make our software simple, but we cannot do the same to its problem domain, its users, or the physical world. Our tacit knowledge of this environment will always inform our designs.This doesn't mean that we can simply ignore our design process. Polanyi tells us that tacit knowledge only suffices until we fail, and the software industry is awash with failure. Our designs may never be provably correct, but we can give voice to the intuition that shaped them. Our process may always be visceral, but it doesn't have to be inarticulate.And so this book does not offer knowledge, it offers clarity. It is aimed at readers who know Clojure, but struggle to articulate the rationale of their designs to themselves and others. Readers who use other languages, but have a passing familiarity with Clojure, may also find this book useful.

Good Services: Decoding the Mystery of What Makes a Good Service


Lou Downe - 2019
    There are a lot of books on how to get started, but this is the first book that describes what a ‘good’ service is, what makes a good service and why.This book lays out the essential principles for building services that work well for users. Demystifying what we mean by a ‘good’ and ‘bad’ service and describing the common elements within all services that mean that it either works for users or doesn’t. A practical book for non-practitioners interested in better service delivery, a book to guide their decision making without the need to first learn how to design a service themselves.

Smashing CSS: Professional Techniques for Modern Layout


Eric A. Meyer - 2010
    Very few in the industry can show you the ins and outs of CSS like Eric Meyer and inside Smashing CSS Eric provides techniques that are thorough, utterly useful, and universally applicable in the real world. From choosing the right tools, to CSS effects and CSS3 techniques with jQuery, Smashing CSS is the practical guide to building modern web layouts.With Smashing CSS you will learn how to:Throw elements offscreen/hide them Create body/HTML backgrounds in XHTML Usemore than 15 layout techniques including clearfix, two/three simple columns, faux columns, One True Layout, Holy Grail, em-based layout, fluid grids, sticky footers, and more Use a variety of CSS effects including CSS popups, boxpunching, rounded corners, CSS sprites, Sliding Doors, Liquid Bleach, ragged floats, and more Apply CSS table styling including using thead, tfoot, and tbody, row headers, column-oriented styling (classes); styling data tables with jQuery, tables to graphs, tables to maps; and more Use CSS3 elements including rounded corners, multiple backgrounds, RGBA, using jQuery to do CSS3 selections and so much more. Eric Meyer is an internationally recognized expert on the subjects of HTML, CSS, and Web standards, and has been working on the Web since 1993. Smashing CSS is for developers who already have some experience with CSS and JavaScript and are ready for more advanced techniques.Smashing Magazine (smashingmagazine.com) is one of the world's most popular web design sites. True to the Smashing mission, the Smashing Magazine book series delivers useful and innovative information to Web designers and developers.

Humans vs Computers


Gojko Adzic - 2017
    You'll read about humans who are invisible to computers, how a default password once caused a zombie apocalypse and why airlines sometimes give away free tickets. This is also a book on how to prevent, avoid and reduce the impact of such problems. Our lives are increasingly tracked, monitored and categorised by software, driving a flood of information into the vast sea of big data. In this brave new world, humans can't cope with information overload. Governments and companies alike rely on computers to automatically detect fraud, predict behaviour and enforce laws. Inflexible automatons, barely smarter than a fridge, now make life-changing decisions. Clever marketing tricks us into believing that phones, TV sets and even cars are somehow smart. Yet all those computer systems were created by people - people who are well-meaning but fallible and biased, clever but forgetful, and who have grand plans but are pressed for time. Digitising a piece of work doesn't mean there will be no mistakes, but instead guarantees that when mistakes happen, they'll run at a massive scale. The next time you bang your head against a digital wall, the stories in this book will help you understand better what's going on and show you where to look for problems. If nothing else, when it seems as if you're under a black-magic spell, these stories will at least allow you to see the lighter side of the binary chaos. For people involved in software delivery, this book will help you find more empathy for people suffering from our mistakes, and discover heuristics to use during analysis, development or testing to make your software less error prone. <