Design Patterns: Elements of Reusable Object-Oriented Software


Erich Gamma - 1994
    Previously undocumented, these 23 patterns allow designers to create more flexible, elegant, and ultimately reusable designs without having to rediscover the design solutions themselves.The authors begin by describing what patterns are and how they can help you design object-oriented software. They then go on to systematically name, explain, evaluate, and catalog recurring designs in object-oriented systems. With Design Patterns as your guide, you will learn how these important patterns fit into the software development process, and how you can leverage them to solve your own design problems most efficiently. Each pattern describes the circumstances in which it is applicable, when it can be applied in view of other design constraints, and the consequences and trade-offs of using the pattern within a larger design. All patterns are compiled from real systems and are based on real-world examples. Each pattern also includes code that demonstrates how it may be implemented in object-oriented programming languages like C++ or Smalltalk.

A Whole New Mind: Why Right-Brainers Will Rule the Future


Daniel H. Pink - 2004
    A Whole New Mind takes readers to a daring new place, and a provocative and necessary new way of thinking about a future that's already here.

You Are Not So Smart: Why You Have Too Many Friends on Facebook, Why Your Memory Is Mostly Fiction, and 46 Other Ways You're Deluding Yourself


David McRaney - 2011
    Whether you’re deciding which smart phone to purchase or which politician to believe, you think you are a rational being whose every decision is based on cool, detached logic, but here’s the truth: You are not so smart. You’re just as deluded as the rest of us--but that’s okay, because being deluded is part of being human. Growing out of David McRaney’s popular blog, You Are Not So Smart reveals that every decision we make, every thought we contemplate, and every emotion we feel comes with a story we tell ourselves to explain them, but often these stories aren’t true. Each short chapter--covering topics such as Learned Helplessness, Selling Out, and the Illusion of Transparency--is like a psychology course with all the boring parts taken out.Bringing together popular science and psychology with humor and wit, You Are Not So Smart is a celebration of our irrational, thoroughly human behavior.

The Art of Learning: A Journey in the Pursuit of Excellence


Josh Waitzkin - 2007
    A public figure since winning his first National Chess Championship at the age of nine, Waitzkin was catapulted into a media whirlwind as a teenager when his father's book "Searching for Bobby Fischer" was made into a major motion picture. After dominating the scholastic chess world for ten years, Waitzkin expanded his horizons, taking on the martial art Tai Chi Chuan and ultimately earning the title of World Champion. How was he able to reach the pinnacle of two disciplines that on the surface seem so different? "I've come to realize that what I am best at is not Tai Chi, and it is not chess," he says. "What I am best at is the art of learning."In his riveting new book, "The Art of Learning," Waitzkin tells his remarkable story of personal achievement and shares the principles of learning and performance that have propelled him to the top -- twice.With a narrative that combines heart-stopping martial arts wars and tense chess face-offs with life lessons that speak to all of us, "The Art of Learning" takes readers through Waitzkin's unique journey to excellence. He explains in clear detail how a well-thought-out, principled approach to learning is what separates success from failure. Waitzkin believes that achievement, even at the championship level, is a function of a lifestyle that fuels a creative, resilient growth process. Rather than focusing on climactic wins, Waitzkin reveals the inner workings of his everyday method, from systematically triggering intuitive breakthroughs, to honing techniques into states of remarkable potency, to mastering the art of performance psychology.Through his own example, Waitzkin explains how to embrace defeat and make mistakes work for you. Does your opponent make you angry? Waitzkin describes how to channel emotions into creative fuel. As he explains it, obstacles are not obstacles but challenges to overcome, to spur the growth process by turning weaknesses into strengths. He illustrates the exact routines that he has used in all of his competitions, whether mental or physical, so that you too can achieve your peak performance zone in any competitive or professional circumstance.In stories ranging from his early years taking on chess hustlers as a seven year old in New York City's Washington Square Park, to dealing with the pressures of having a film made about his life, to International Chess Championships in India, Hungary, and Brazil, to gripping battles against powerhouse fighters in Taiwan in the Push Hands World Championships, "The Art of Learning" encapsulates an extraordinary competitor's life lessons in a page-turning narrative.

Nonviolent Communication: A Language of Life


Marshall B. Rosenberg - 1999
    Nonviolent Communication partners practical skills with a powerful consciousness and vocabulary to help you get what you want peacefully.In this internationally acclaimed text, Marshall Rosenberg offers insightful stories, anecdotes, practical exercises and role-plays that will dramatically change your approach to communication for the better. Discover how the language you use can strengthen your relationships, build trust, prevent conflicts and heal pain. Revolutionary, yet simple, NVC offers you the most effective tools to reduce violence and create peace in your life—one interaction at a time.Over 150,000 copies sold and now available in 20 languages around the world. More than 250,000 people each year from all walks of life are learning these life-changing skills.

The Inmates Are Running the Asylum: Why High Tech Products Drive Us Crazy and How to Restore the Sanity


Alan Cooper - 1999
    Cooper details many of these meta functions to explain his central thesis: programmers need to seriously re-evaluate the many user-hostile concepts deeply embedded within the software development process. Rather than provide users with a straightforward set of options, programmers often pile on the bells and whistles and ignore or de-prioritise lingering bugs. For the average user, increased functionality is a great burden, adding to the recurrent chorus that plays: "computers are hard, mysterious, unwieldy things." (An average user, Cooper asserts, who doesn't think that way or who has memorised all the esoteric commands and now lords it over others, has simply been desensitised by too many years of badly designed software.) Cooper's writing style is often overblown, with a pantheon of cutesy terminology (i.e. "dancing bearware") and insider back-patting. (When presenting software to Bill Gates, he reports that Gates replied: "How did you do that?" to which he writes: "I love stumping Bill!") More seriously, he is also unable to see beyond software development's importance--a sin he accuses programmers of throughout the book. Even with that in mind, the central questions Cooper asks are too important to ignore: Are we making users happier? Are we improving the process by which they get work done? Are we making their work hours more effective? Cooper looks to programmers, business managers and what he calls "interaction designers" to question current assumptions and mindsets. Plainly, he asserts that the goal of computer usage should be "not to make anyone feel stupid." Our distance from that goal reinforces the need to rethink entrenched priorities in software planning. -- Jennifer Buckendorff, Amazon.com

Introduction to Algorithms


Thomas H. Cormen - 1989
    Each chapter is relatively self-contained and can be used as a unit of study. The algorithms are described in English and in a pseudocode designed to be readable by anyone who has done a little programming. The explanations have been kept elementary without sacrificing depth of coverage or mathematical rigor.

Learn You a Haskell for Great Good!


Miran Lipovača - 2011
    Learn You a Haskell for Great Good! introduces programmers familiar with imperative languages (such as C++, Java, or Python) to the unique aspects of functional programming. Packed with jokes, pop culture references, and the author's own hilarious artwork, Learn You a Haskell for Great Good! eases the learning curve of this complex language, and is a perfect starting point for any programmer looking to expand his or her horizons. The well-known web tutorial on which this book is based is widely regarded as the best way for beginners to learn Haskell, and receives over 30,000 unique visitors monthly.

Eloquent JavaScript: A Modern Introduction to Programming


Marijn Haverbeke - 2010
    I loved the tutorial-style game-like program development. This book rekindled my earliest joys of programming. Plus, JavaScript!" —Brendan Eich, creator of JavaScriptJavaScript is the language of the Web, and it's at the heart of every modern website from the lowliest personal blog to the mighty Google Apps. Though it's simple for beginners to pick up and play with, JavaScript is not a toy—it's a flexible and complex language, capable of much more than the showy tricks most programmers use it for.Eloquent JavaScript goes beyond the cut-and-paste scripts of the recipe books and teaches you to write code that's elegant and effective. You'll start with the basics of programming, and learn to use variables, control structures, functions, and data structures. Then you'll dive into the real JavaScript artistry: higher-order functions, closures, and object-oriented programming.Along the way you'll learn to:Master basic programming techniques and best practices Harness the power of functional and object-oriented programming Use regular expressions to quickly parse and manipulate strings Gracefully deal with errors and browser incompatibilities Handle browser events and alter the DOM structure Most importantly, Eloquent JavaScript will teach you to express yourself in code with precision and beauty. After all, great programming is an art, not a science—so why settle for a killer app when you can create a masterpiece?

How to Solve It: A New Aspect of Mathematical Method


George Pólya - 1944
    Polya, How to Solve It will show anyone in any field how to think straight. In lucid and appealing prose, Polya reveals how the mathematical method of demonstrating a proof or finding an unknown can be of help in attacking any problem that can be reasoned out--from building a bridge to winning a game of anagrams. Generations of readers have relished Polya's deft--indeed, brilliant--instructions on stripping away irrelevancies and going straight to the heart of the problem.

Grit: The Power of Passion and Perseverance


Angela Duckworth - 2016
    Rather, other factors can be even more crucial such as identifying our passions and following through on our commitments.Drawing on her own powerful story as the daughter of a scientist who frequently bemoaned her lack of smarts, Duckworth describes her winding path through teaching, business consulting, and neuroscience, which led to the hypothesis that what really drives success is not genius, but a special blend of passion and long-term perseverance. As a professor at the University of Pennsylvania, Duckworth created her own character lab and set out to test her theory.Here, she takes readers into the field to visit teachers working in some of the toughest schools, cadets struggling through their first days at West Point, and young finalists in the National Spelling Bee. She also mines fascinating insights from history and shows what can be gleaned from modern experiments in peak performance. Finally, she shares what she's learned from interviewing dozens of high achievers; from JP Morgan CEO Jamie Dimon to the cartoon editor of The New Yorker to Seattle Seahawks Coach Pete Carroll.Winningly personal, insightful, and even life-changing, Grit is a book about what goes through your head when you fall down, and how that not talent or luck makes all the difference.

Never Eat Alone: And Other Secrets to Success, One Relationship at a Time


Keith Ferrazzi - 2005
    As Ferrazzi discovered early in life, what distinguishes highly successful people from everyone else is the way they use the power of relationships--so that everyone wins. In "Never Eat Alone," Ferrazzi lays out the specific steps--and inner mindset--he uses to reach out to connect with the thousands of colleagues, friends, and associates on his Rolodex, people he has helped and who have helped him. The son of a small-town steelworker and a cleaning lady, Ferrazzi first used his remarkable ability to connect with others to pave the way to a scholarship at Yale, a Harvard MBA, and several top executive posts. Not yet out of his thirties, he developed a network of relationships that stretched from Washington's corridors of power to Hollywood's A-list, leading to him being named one of Crain's 40 Under 40 and selected as a Global Leader for Tomorrow by the Davos World Economic Forum. Ferrazzi's form of connecting to the world around him is based on generosity, helping friends connect with other friends. Ferrazzi distinguishes genuine relationship-building from the crude, desperate glad-handling usually associated with "networking." He then distills his system of reaching out to people into practical, proven principles. Among them: Don't keep score: It's never simply about getting what you want. It's about getting what you want and making sure that the people who are important to you get what they want, too. "Ping" constantly: The Ins and Outs of reaching out to those in your circle of contacts all the time--not just when you need something. Never eat alone: The dynamics of status are the same whether you're working at a corporation or attending a society event-- "invisibility" is a fate worse than failure. In the course of the book, Ferrazzi outlines the timeless strategies shared by the world's most connected individuals, from Katherine Graham to Bill Clinton, Vernon Jordan to the Dalai Lama. Chock full of specific advice on handling rejection, getting past gatekeepers, becoming a "conference commando," and more, "Never Eat Alone" is destined to take its place alongside "How to Win Friends and Influence People" as an inspirational classic.

Tribe of Mentors: Short Life Advice from the Best in the World


Timothy Ferriss - 2017
    From iconic entrepreneurs to elite athletes, from artists to billionaire investors, their short profiles can help you answer life's most challenging questions, achieve extraordinary results, and transform your life.From the author: In 2017, several of my close friends died in rapid succession. It was a very hard year, as it was for many people. It was also a stark reminder that time is our scarcest, non-renewable resource. With a renewed sense of urgency, I began asking myself many questions: Were my goals my own, or simply what I thought I should want? How much of life had I missed from underplanning or overplanning? How could I be kinder to myself? How could I better say “no” to the trivial many to better say “yes” to the critical few? How could I best reassess my priorities and my purpose in this world? To find answers, I reached out to the most impressive world-class performers in the world, ranging from wunderkinds in their 20s to icons in their 70s and 80s. No stone was left unturned. This book contains their answers—practical and tactical advice from mentors who have found solutions. Whether you want to 10x your results, get unstuck, or reinvent yourself, someone else has traveled a similar path and taken notes. This book, Tribe of Mentors, includes many of the people I grew up viewing as idols or demi-gods. Less than 10% have been on my podcast (The Tim Ferriss Show, more than 200 million downloads), making this a brand-new playbook of playbooks. No matter your challenge or opportunity, something in these pages can help. Among other things, you will learn: • More than 50 morning routines—both for the early riser and those who struggle to get out of bed. • How TED curator Chris Anderson realized that the best way to get things done is to let go. • The best purchases of $100 or less (you'll never have to think about the right gift again). • How to overcome failure and bounce back towards success. • Why Humans of New York creator Brandon Stanton believes that the best art will always be the riskiest. • How to meditate and be more mindful (and not just for those that find it easy). • Why tennis champion Maria Sharapova believe that “losing makes you think in ways victories can’t.” • How to truly achieve work-life balance (and why most people tell you it isn’t realistic). • How billionaire Facebook co-founder Dustin Moskovitz transformed the way he engages with difficult situations to reduce suffering. • Ways to thrive (and survive) the overwhelming amount of information you process every day. • How to achieve clarity on your purpose and assess your priorities. • And much more. This reference book, which I wrote for myself, has already changed my life. I certainly hope the same for you. I wish you luck as you forge your own path. All the best, Tim Ferriss

Fundamentals of Software Architecture: An Engineering Approach


Mark Richards - 2020
    Until now. This practical guide provides the first comprehensive overview of software architecture's many aspects. You'll examine architectural characteristics, architectural patterns, component determination, diagramming and presenting architecture, evolutionary architecture, and many other topics.Authors Neal Ford and Mark Richards help you learn through examples in a variety of popular programming languages, such as Java, C#, JavaScript, and others. You'll focus on architecture principles with examples that apply across all technology stacks.

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