Think Like a Programmer: An Introduction to Creative Problem Solving


V. Anton Spraul - 2012
    In this one-of-a-kind text, author V. Anton Spraul breaks down the ways that programmers solve problems and teaches you what other introductory books often ignore: how to Think Like a Programmer. Each chapter tackles a single programming concept, like classes, pointers, and recursion, and open-ended exercises throughout challenge you to apply your knowledge. You'll also learn how to:Split problems into discrete components to make them easier to solve Make the most of code reuse with functions, classes, and libraries Pick the perfect data structure for a particular job Master more advanced programming tools like recursion and dynamic memory Organize your thoughts and develop strategies to tackle particular types of problems Although the book's examples are written in C++, the creative problem-solving concepts they illustrate go beyond any particular language; in fact, they often reach outside the realm of computer science. As the most skillful programmers know, writing great code is a creative art—and the first step in creating your masterpiece is learning to Think Like a Programmer.

Learning Agile: Understanding Scrum, XP, Lean, and Kanban


Andrew Stellman - 2013
    This book demystifies agile methodologies: why they’re designed the way they are, what problems they address, and the values, principles, and ideas they embody.Learning Agile helps you recognize the principles that apply to development problems specific to your team, company, and projects. You’ll discover how to use that information to guide your choice of methodologies and practices.With this book you’ll learn:Values that effective software teams possessThe methodologies that embody those valuesThe practices that make up those methodologiesAnd principles that help you bring those values, methodologies, and practices to your team and your company

Smartcuts: How Hackers, Innovators, and Icons Accelerate Success


Shane Snow - 2014
    They employ what psychologists call "lateral thinking: to rethink convention and break "rules" that aren't rules.These are not shortcuts, which produce often dubious short-term gains, but ethical "smartcuts" that eliminate unnecessary effort and yield sustainable momentum. In Smartcuts, Snow shatters common wisdom about success, revealing how conventions like "paying dues" prevent progress, why kids shouldn't learn times tables, and how, paradoxically, it's easier to build a huge business than a small one.From SpaceX to The Cuban Revolution, from Ferrari to Skrillex, Smartcuts is a narrative adventure that busts old myths about success and shows how innovators and icons do the incredible by working smarter—and how perhaps the rest of us can, too.

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.

The Making of a Manager: What to Do When Everyone Looks to You


Julie Zhuo - 2019
    She stared at a long list of logistics--from hiring to firing, from meeting to messaging, from planning to pitching--and faced a thousand questions and uncertainties. How was she supposed to spin teamwork into value? How could she be a good steward of her reports' careers? What was the secret to leading with confidence in new and unexpected situations?Now, having managed dozens of teams spanning tens to hundreds of people, Julie knows the most important lesson of all: great managers are made, not born. If you care enough to be reading this, then you care enough to be a great manager.The Making of a Manager is a modern field guide packed everyday examples and transformative insights, including:* How to tell a great manager from an average manager (illustrations included) * When you should look past an awkward interview and hire someone anyway * How to build trust with your reports through not being a boss * Where to look when you lose faith and lack the answersWhether you're new to the job, a veteran leader, or looking to be promoted, this is the handbook you need to be the kind of manager you wish you had.

The Art of Agile Development


James Shore - 2007
    Plenty of books describe what agile development is or why it helps software projects succeed, but very few combine information for developers, managers, testers, and customers into a single package that they can apply directly. This book provides no-nonsense advice on agile planning, development, delivery, and management taken from the authors' many years of experience with Extreme Programming (XP). You get a gestalt view of the agile development process, including comprehensive guidance for non-technical readers and hands-on technical practices for developers and testers. The Art of Agile Development gives you clear answers to questions such as:How can we adopt agile development? Do we really need to pair program? What metrics should we report? What if I can't get my customer to participate? How much documentation should we write? When do we design and architect? As a non-developer, how should I work with my agile team? Where is my product roadmap? How does QA fit in? The book teaches you how to adopt XP practices, describes each practice in detail, then discusses principles that will allow you to modify XP and create your own agile method. In particular, this book tackles the difficult aspects of agile development: the need for cooperation and trust among team members. Whether you're currently part of an agile team, working with an agile team, or interested in agile development, this book provides the practical tips you need to start practicing agile development. As your experience grows, the book will grow with you, providing exercises and information that will teach you first to understand the rules of agile development, break them, and ultimately abandon rules altogether as you master the art of agile development. "Jim Shore and Shane Warden expertly explain the practices and benefits of Extreme Programming. They offer advice from their real-world experiences in leading teams. They answer questions about the practices and show contraindications - ways that a practice may be mis-applied. They offer alternatives you can try if there are impediments to applying a practice, such as the lack of an on-site customer. --Ken Pugh, Author of Jolt Award Winner, Prefactoring "I will leave a copy of this book with every team I visit." --Brian Marick, Exampler Consulting

Where Good Ideas Come from: The Natural History of Innovation


Steven Johnson - 2010
    But where do they come from? What kind of environment breeds them? What sparks the flash of brilliance? How do we generate the breakthrough technologies that push forward our lives, our society, our culture? Steven Johnson's answers are revelatory as he identifies the seven key patterns behind genuine innovation, and traces them across time and disciplines. From Darwin and Freud to the halls of Google and Apple, Johnson investigates the innovation hubs throughout modern time and pulls out the approaches and commonalities that seem to appear at moments of originality.

Effective Programming: More Than Writing Code


Jeff Atwood - 2012
    He needed a way to keep track of software development over time – whatever he was thinking about or working on. He researched subjects he found interesting, then documented his research with a public blog post, which he could easily find and refer to later. Over time, increasing numbers of blog visitors found the posts helpful, relevant and interesting. Now, approximately 100,000 readers visit the blog per day and nearly as many comment and interact on the site.Effective Programming: More Than Writing Code is your one-stop shop for all things programming. Jeff writes with humor and understanding, allowing for both seasoned programmers and newbies to appreciate the depth of his research. From such posts as“The Programmer’s Bill of Rights” and “Why Cant Programmers... Program?” to “Working With the Chaos Monkey,” this book introduces the importance of writing responsible code, the logistics involved, and how people should view it more as a lifestyle than a career.

Working Effectively with Legacy Code


Michael C. Feathers - 2004
    This book draws on material Michael created for his renowned Object Mentor seminars, techniques Michael has used in mentoring to help hundreds of developers, technical managers, and testers bring their legacy systems under control. The topics covered include: Understanding the mechanics of software change, adding features, fixing bugs, improving design, optimizing performance Getting legacy code into a test harness Writing tests that protect you against introducing new problems Techniques that can be used with any language or platform, with examples in Java, C++, C, and C# Accurately identifying where code changes need to be made Coping with legacy systems that aren't object-oriented Handling applications that don't seem to have any structureThis book also includes a catalog of twenty-four dependency-breaking techniques that help you work with program elements in isolation and make safer changes.

Outcomes Over Output: Why customer behavior is the key metric for business success


Josh Seiden - 2019
    But in today’s service- and software-driven world, “done” is less obvious. When is Amazon done? When is Google done? Or Facebook? In reality, services powered by digital systems are never done. So then how do we give teams a goal that they can work on?Mostly, we simply ask teams to build features—but features are the wrong way to go. We often build features that create no value. Instead, we need to give teams an outcome to achieve. Using outcomes creates focus and alignment. It eliminates needless work. And it puts the customer at the center of everything you do.Setting goals as outcomes sounds simple, but it can be hard to do in practice. This book is a practical guide to using outcomes to guide the work of your team. "Josh’s crisp volume brims with insight about how to fly at just the right level - the level of outcomes. If you’ve ever wondered how M your MVP should be, or how to get more R in your OKRs, this book will help." --Nick Rockwell, CTO, NY Times

Software Engineering at Google: Lessons Learned from Programming Over Time


Titus Winters - 2020
    With this book, you'll get a candid and insightful look at how software is constructed and maintained by some of the world's leading practitioners.Titus Winters, Tom Manshreck, and Hyrum K. Wright, software engineers and a technical writer at Google, reframe how software engineering is practiced and taught: from an emphasis on programming to an emphasis on software engineering, which roughly translates to programming over time.You'll learn:Fundamental differences between software engineering and programmingHow an organization effectively manages a living codebase and efficiently responds to inevitable changeWhy culture (and recognizing it) is important, and how processes, practices, and tools come into play

Chaos Monkeys: Obscene Fortune and Random Failure in Silicon Valley


Antonio García Martínez - 2016
    Infrastructure engineers use a software version of this “chaos monkey” to test online services’ robustness—their ability to survive random failure and correct mistakes before they actually occur. Tech entrepreneurs are society’s chaos monkeys, disruptors testing and transforming every aspect of our lives, from transportation (Uber) and lodging (AirBnB) to television (Netflix) and dating (Tinder). One of Silicon Valley’s most audacious chaos monkeys is Antonio García Martínez.After stints on Wall Street and as CEO of his own startup, García Martínez joined Facebook’s nascent advertising team, turning its users’ data into profit for COO Sheryl Sandberg and chairman and CEO Mark “Zuck” Zuckerberg. Forced out in the wake of an internal product war over the future of the company’s monetization strategy, García Martínez eventually landed at rival Twitter. He also fathered two children with a woman he barely knew, committed lewd acts and brewed illegal beer on the Facebook campus (accidentally flooding Zuckerberg's desk), lived on a sailboat, raced sport cars on the 101, and enthusiastically pursued the life of an overpaid Silicon Valley wastrel.Now, this gleeful contrarian unravels the chaotic evolution of social media and online marketing and reveals how it is invading our lives and shaping our future. Weighing in on everything from startups and credit derivatives to Big Brother and data tracking, social media monetization and digital “privacy,” García Martínez shares his scathing observations and outrageous antics, taking us on a humorous, subversive tour of the fascinatingly insular tech industry. Chaos Monkeys lays bare the hijinks, trade secrets, and power plays of the visionaries, grunts, sociopaths, opportunists, accidental tourists, and money cowboys who are revolutionizing our world. The question is, will we survive?

Playing to Win: How Strategy Really Works


A.G. Lafley - 2013
    But it is hard. It’s hard because it forces people and organizations to make specific choices about their future—something that doesn’t happen in most companies.Now two of today’s best-known business thinkers get to the heart of strategy—explaining what it’s for, how to think about it, why you need it, and how to get it done. And they use one of the most successful corporate turnarounds of the past century, which they achieved together, to prove their point.A.G. Lafley, former CEO of Procter & Gamble, in close partnership with strategic adviser Roger Martin, doubled P&G’s sales, quadrupled its profits, and increased its market value by more than $100 billion in just ten years. Now, drawn from their years of experience at P&G and the Rotman School of Management, where Martin is dean, this book shows how leaders in organizations of all sizes can guide everyday actions with larger strategic goals built around the clear, essential elements that determine business success—where to play and how to win.The result is a playbook for winning. Lafley and Martin have created a set of five essential strategic choices that, when addressed in an integrated way, will move you ahead of your competitors. They are:• What is our winning aspiration?• Where will we play?• How will we win?• What capabilities must we have in place to win?• What management systems are required to support our choices?The stories of how P&G repeatedly won by applying this method to iconic brands such as Olay, Bounty, Gillette, Swiffer, and Febreze clearly illustrate how deciding on a strategic approach—and then making the right choices to support it—makes the difference between just playing the game and actually winning.

Pro Git


Scott Chacon - 2009
    It took the open source world by storm since its inception in 2005, and is used by small development shops and giants like Google, Red Hat, and IBM, and of course many open source projects.A book by Git experts to turn you into a Git expert. Introduces the world of distributed version control Shows how to build a Git development workflow.

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