Debug It!: Find, Repair, and Prevent Bugs in Your Code


Paul Butcher - 2009
    Others have the knack of unerringly zeroing in on the root cause of a bug. Are they geniuses? Just lucky? No, they've learned the secrets of professional debugging. This book will equip you with the tools, techniques and approaches-proven in the crucible of professional software development-to ensure that you can tackle any bug with confidence. You'll learn how to handle every stage of the bug life-cycle, from constructing software that makes debugging easy, through detection, reproduction, diagnosis and rolling out your eventual fix. If you develop software, sooner or later you're going to discover that it doesn't always behave as you intended. Working out why it's misbehaving can be hard. Sometimes very hard. Debug It! is here to help! All bugs are different: there is no silver bullet. You've got to rely upon your intellect, intuition, detective skills and yes, even a little luck. But that doesn't mean that you're completely on your own-there is much you can learn from those who have gone before. This book distills decades of hard-won experience gained in the trenches of professional software development, giving you a head-start and arming you with the tools you need to get to the bottom of the problem, whatever you're faced with. Whether you're writing Java or assembly language, targeting servers or embedded micro-controllers, using agile or traditional approaches, the same basic bug-fixing principles apply. From constructing software that is easy to debug (and incidentally less likely to contain bugs in the first place), through handling bug reports to rolling out your ultimate fix, we'll cover the entire life-cycle of a bug. You'll learn about the empirical approach, which leverages your software's unique ability to show you what's really happening, the importance of finding a reliable and convenient means of reproducing a bug, and common pitfalls so you can avoid them. You'll see how to use commonly available tools to automatically detect problems before they're reported by customers and how to construct "transparent software" that provides access to critical information and internal state.

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

The God Formula: A simple scientifically proven blueprint that has transformed millions of lives (The Path of Freedom Series)


Jeffery A. Martin - 2011
     The research (conducted by the Center for the Study of Intent) uncovered a new dimension of human development and has revolutionized the way personal growth, meaning, happiness, and ultimately advanced spiritual topics such as ‘enlightenment’ are understood. The results, if you let them, will transform the quality of your life in ways you currently cannot even imagine as possible. During the research a formula was uncovered that is so effective at producing what seems like miracles in people’s lives it began to be referred to as the “God Formula” among participants and researchers. This book outlines that formula, and is the final version of the highly successful training material that was used with research participants. These researchers became the first scientists to successfully experiment with this new developmental continuum. The result has been the discovery of a series of techniques that lead from everyday consciousness to increased daily happiness and satisfaction, and finally to enlightenment and beyond (yes, there is a beyond!). This book covers the first stages of this process. You can view a summary of the results from the research phase that related to it, and later ones at: CenterForIntent.org/freedom. This book covers three primary components that combine to form a complete system of person growth, and an assortment of techniques for each component. While it provides the components, how they need to come together for maximum effectiveness will be unique to you. You’ll need to experiment with various combinations of these techniques until you find the one that works best for you. This may sound unusual. You’re probably used to reading books where the authors assert they have the one answer for everyone. The researchers at the Center tested an enormous number of techniques but didn’t find a single one that was helpful to more than a handful of individuals…when it was beneficial for anyone at all. However, they learned that there are a relatively small number of techniques that can be combined in ways that are incredibly effective. You just have to find the unique combination of these techniques that works for you right now. This book provides the distilled down wisdom from all of that testing. They were able to successfully identify core components from the methods that proved themselves. However, no one can tell you how to combine those components to get them to work best for you. People are simply too different for that to be possible. So, you’ll have to join the team, be your own scientist, and experiment! The good news is that the researchers spent an enormous amount of time and money narrowing down the possibilities for you. Most of the research participants were able to use this book to find the combination that worked for them quite quickly. It is likely the same will be true for you.It’s important that you not take the information this book contains lightly. Unlike other personal growth and self help books, this one is driven by a vast amount of actual research into what works. It was revised continually based on research participant feedback, so it’s very simple and easy to understand and use. But don’t let this simplicity fool you. Every line is there for a reason. This material has changed a lot of lives, if you’ll let it…yours can be next.

Patterns Principles and Practices of Domain Driven Design


Scott Millett - 2014
    A focus is placed on the principles and practices of decomposing a complex problem space as well as the implementation patterns and best practices for shaping a maintainable solution space.

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.

The Phoenix Project: A Novel About IT, DevOps, and Helping Your Business Win


Gene Kim - 2013
    It's Tuesday morning and on his drive into the office, Bill gets a call from the CEO. The company's new IT initiative, code named Phoenix Project, is critical to the future of Parts Unlimited, but the project is massively over budget and very late. The CEO wants Bill to report directly to him and fix the mess in ninety days or else Bill's entire department will be outsourced. With the help of a prospective board member and his mysterious philosophy of The Three Ways, Bill starts to see that IT work has more in common with manufacturing plant work than he ever imagined. With the clock ticking, Bill must organize work flow streamline interdepartmental communications, and effectively serve the other business functions at Parts Unlimited. In a fast-paced and entertaining style, three luminaries of the DevOps movement deliver a story that anyone who works in IT will recognize. Readers will not only learn how to improve their own IT organizations, they'll never view IT the same way again.

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.

JavaScript Bible


Danny Goodman - 1996
    Part tutorial and part reference, the book serves as a learning tool for building new JavaScript skills and a detailed reference for seasoned JavaScript developers. Danny Goodman's exclusive interactive workbench, The Evaluator, makes it easy to master JavaScript and DOM concepts. Offers deployment strategies that best suit the user's content goals and target audience.Bonus CD-ROM is packed with advanced content for the reader who wants to go an extra step.

Taming Toxic People: The Science of Identifying and Dealing with Psychopaths at Work & at Home


David Gillespie - 2017
    This book is what I found."Bestselling author David Gillespie turns his attention to a phenomenon that damages businesses, seeds mental disease and discomfort and can bring civilisations to the brink of implosion- the psychopath.Psychopaths are often thought of as killers and criminals, but actually five to ten per cent of people are probably psychopathic without ever indulging in a single criminal act. These everyday psychopaths may be charming in the early stages of relationships or employment but, Gillespie argues, their presence in your life is at best disruptive, and at worst highly dangerous: they will leave you feeling cheated and humiliated, dominating and manipulating you to the point where you question your sanity. Worse, he caution, at a societal level their tendency to gravitate towards positions of power can be disastrous. Taming Toxic People is a practical guide to restraining that difficult person in your life, be it your boss, your spouse or a parent. But it is also a serious and meticulously researched warning: if we value a free and well-functioning society, we need to rebuild the sense of community that has historically kept the everyday psychopath in check, and we must understand and act to manage the psychopathic behaviour in our midst.

The Master Algorithm: How the Quest for the Ultimate Learning Machine Will Remake Our World


Pedro Domingos - 2015
    In The Master Algorithm, Pedro Domingos lifts the veil to give us a peek inside the learning machines that power Google, Amazon, and your smartphone. He assembles a blueprint for the future universal learner--the Master Algorithm--and discusses what it will mean for business, science, and society. If data-ism is today's philosophy, this book is its bible.

Getting Results the Agile Way: A Personal Results System for Work and Life


J.D. Meier - 2010
    Meier introduces Agile Results(R)-a simple system for meaningful results! It's a systematic way to achieve both short- and long-term results in all aspects of your life-from work to fun. It offers just enough planning to get you going, but makes it easy to change your course as needed. It also provides fresh starts for your day, week, month, and year. Even if you already use another time management system, Agile Results can supplement it to increase your impact and sense of fulfillment. In today's world, change happens quickly; learn how to be flexible and responsive to new opportunities. Don't just check off tons of stuff from your to-do list; do the things that make a difference. Stop trudging your way through life; bolster your energy with habits that will carry you forward each day. Quit sacrificing your personal life for your work life (or vice versa); give each facet of your life its due and find balance. In other words, learn the skills to go the distance in an ever-changing world. The beauty of Agile Results is that you don't have to adopt the entire system to see the benefits; just start with the following three basic tenets. First, adopt The Rule of 3 and you avoid being overwhelmed and become mindful of your results. Second, adopt the Monday Vision, Daily Outcomes, Friday Refection pattern and you set the wheels in motion for weekly results while giving yourself a fresh start each day and each week. Third, set up boundaries for your Hot Spots and begin to experience work-life balance. When you're ready for more, flip through the chapters to learn how to use stories to design your day, week, month, and year; how to find your motivation; how to improve your productivity; and many more. Agile Results is a time-tested system that J.D. Meier has honed through his years at Microsoft: learning from some of the best minds, leading virtual teams, and mentoring people around the world. It is a system he can bet on time and again. This guide is the playbook for getting results that he wishes somebody had given to him so many years ago. Now, he's sharing it with you.

The Little Schemer


Daniel P. Friedman - 1974
    The authors' enthusiasm for their subject is compelling as they present abstract concepts in a humorous and easy-to-grasp fashion. Together, these books will open new doors of thought to anyone who wants to find out what computing is really about. The Little Schemer introduces computing as an extension of arithmetic and algebra; things that everyone studies in grade school and high school. It introduces programs as recursive functions and briefly discusses the limits of what computers can do. The authors use the programming language Scheme, and interesting foods to illustrate these abstract ideas. The Seasoned Schemer informs the reader about additional dimensions of computing: functions as values, change of state, and exceptional cases. The Little LISPer has been a popular introduction to LISP for many years. It had appeared in French and Japanese. The Little Schemer and The Seasoned Schemer are worthy successors and will prove equally popular as textbooks for Scheme courses as well as companion texts for any complete introductory course in Computer Science.

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

Software Testing


Ron Patton - 2000
    Everyone has heard of computer programmers but few people realize there are nearly as many people behind the scenes with job titles such as Software Tester, Software Quality Assurance Engineer, Software Test Engineer, and Software Test Technician. Microsoft alone hires hundreds of people for these positions each year. There are also many companies whose sole purpose is providing software test consulting and software testing services. The first edition of Software Testing was published in November 2000. Although the processes and techniques used in testing computer software are timeless, this title will be brought up-to-date by adding a chapter that specifically deals with testing software for security bugs and revisiting the rest of the book to update examples and references.

Structures: Or Why Things Don't Fall Down


J.E. Gordon - 1978
    Gordon strips engineering of its confusing technical terms, communicating its founding principles in accessible, witty prose.For anyone who has ever wondered why suspension bridges don't collapse under eight lanes of traffic, how dams hold back--or give way under--thousands of gallons of water, or what principles guide the design of a skyscraper, a bias-cut dress, or a kangaroo, this book will ease your anxiety and answer your questions.Structures: Or Why Things Don't Fall Down is an informal explanation of the basic forces that hold together the ordinary and essential things of this world--from buildings and bodies to flying aircraft and eggshells. In a style that combines wit, a masterful command of his subject, and an encyclopedic range of reference, Gordon includes such chapters as "How to Design a Worm" and "The Advantage of Being a Beam," offering humorous insights in human and natural creation.Architects and engineers will appreciate the clear and cogent explanations of the concepts of stress, shear, torsion, fracture, and compression. If you're building a house, a sailboat, or a catapult, here is a handy tool for understanding the mechanics of joinery, floors, ceilings, hulls, masts--or flying buttresses.Without jargon or oversimplification, Structures opens up the marvels of technology to anyone interested in the foundations of our everyday lives.