/dev/reading
Category

Software Development

143 books, 13 subcategories
Order by
View
by David Nicolette

Software Development Metrics is a handbook for anyone who needs to track and guide software development and delivery at the team level, such as project managers and team leads. New development practices, including "agile" methodologies like Scrum, have redefined which measurements are most meaningful and under what conditions you can benefit from them. This practical book identifies key characteristics of organizational structure, process models, and development methods so that you can select the appropriate metrics for your team. It describes the uses, mechanics, and common abuses of a number of metrics that are useful for steering and for monitoring process improvement. The insights and techniques in this book are based entirely on field experience.

Lessons Learned from Programming Over Time
by Titus Winters, Tom Manshreck and Hyrum Wright

Today, software engineers need to know not only how to program effectively but also how to develop proper engineering practices to make their codebase sustainable and healthy. This book emphasizes this difference between programming and software engineering.

How can software engineers manage a living codebase that evolves and responds to changing requirements and demands over the length of its life? Based on their experience at Google, software engineers Titus Winters and Hyrum Wright, along with technical writer Tom Manshreck, present a candid and insightful look at how some of the world's leading practitioners construct and maintain software. This book covers Google's unique engineering culture, processes, and tools and how these aspects contribute to the effectiveness of an engineering organization.

You'll explore three fundamental principles that software organizations should keep in mind when designing, architecting, writing, and maintaining code:

  • How time affects the sustainability of software and how to make your code resilient over time
  • How scale affects the viability of software practices within an engineering organization
  • What trade-offs a typical engineer needs to make when evaluating design and development decisions
by Karl Wiegers and Joy Beatty

Now in its third edition, this classic guide to software requirements engineering has been fully updated with new topics, examples, and guidance. Two leaders in the requirements community have teamed up to deliver a contemporary set of practices covering the full range of requirements development and management activities on software projects.

  • Describes practical, effective, field-tested techniques for managing the requirements engineering process from end to end.
  • Provides examples demonstrating how requirements "good practices" can lead to fewer change requests, higher customer satisfaction, and lower development costs.
  • Fully updated with contemporary examples and many new practices and techniques.
  • Describes how to apply effective requirements practices to agile projects and numerous other special project situations.
  • Targeted to business analysts, developers, project managers, and other software project stakeholders who have a general understanding of the software development process.
  • Shares the insights gleaned from the authors’ extensive experience delivering hundreds of software-requirements training courses, presentations, and webinars.

New chapters are included on specifying data requirements, writing high-quality functional requirements, and requirements reuse. Considerable depth has been added on business requirements, elicitation techniques, and nonfunctional requirements. In addition, new chapters recommend effective requirements practices for various special project situations, including enhancement and replacement, packaged solutions, outsourced, business process automation, analytics and reporting, and embedded and other real-time systems projects.

Core Practices for Successful Business Analysis
by Karl Wiegers and Candase Hokanson

Software Requirements Essentials presents 20 core practices for successful requirements planning, elicitation, analysis, specification, validation, and management. Leading requirements experts Karl Wiegers and Candase Hokanson focus on the practices most likely to deliver superior value for both traditional and agile projects, in any application domain. These core practices help teams understand business problems, engage the right participants, articulate better solutions, improve communication, implement the most valuable functionality in the right sequence, and adapt to change and growth.

Concise and tightly focused, this book offers just enough pragmatic "how-to" detail for you to apply the core practices with confidence, whether you're a business analyst, requirements engineer, product manager, product owner, or developer. Using it, your entire team can build a shared understanding of key concepts, terminology, techniques, and rationales--and work together more effectively on every project.

Learn how to:

  • Clarify problems, define business objectives, and set solution boundaries
  • Identify stakeholders and decision makers
  • Explore user tasks, events, and responses
  • Assess data concepts and relationships
  • Elicit and evaluate quality attributes
  • Analyze requirements and requirement sets, create models and prototypes, and set priorities
  • Specify requirements in a consistent, structured, and well-documented fashion
  • Review, test, and manage change to requirements
by G. Ann Campbell and Patroklos P. Papapetrou

SonarQube in Action shows developers how to use the SonarQube platform to help them continuously improve their source code. The book presents SonarQube's core Seven Axes of Quality: design/architecture, duplications, comments, unit tests, complexity, potential bugs, coding rules. You'll find simple, easy-to-follow discussion and examples as you learn to integrate SonarQube into your development process.

The rules to break and how to break them
by Sedat Kapanoglu

Computer science theory quickly collides with the harsh reality of professional software development. This wickedly smart and devilishly funny beginner's guide shows you how to get the job done by prioritizing tasks, making quick decisions, and knowing which rules to break.

In Street Coder you will learn:

  • Data types, algorithms, and data structures for speedy software development
  • Putting "bad" practices to good use
  • Learn to love testing
  • Embrace code breaks and become friends with failure
  • Beginner-friendly insight on code optimization, asynchronous programming, parallelization, and refactoring

Street Coder: Rules to break and how to break them is a programmer's survival guide, full of tips, tricks, and hacks that will make you a more efficient programmer. It takes the best practices you learn in a computer science class and deconstructs them to show when they’re beneficial—and when they aren't!

This book's rebel mindset challenges status quo thinking and exposes the important skills you need on the job. You'll learn the crucial importance of algorithms and data structures, turn programming chores into programming pleasures, and shatter dogmatic principles keeping you from your full potential. Welcome to the streets!

by Alan Dennis, Barbara Haley Wixom and Roberta M. Roth

Alan Dennis' 5th Edition of Systems Analysis and Design continues to build upon previous issues with it hands-on approach to systems analysis and design with an even more in-depth focus on the core set of skills that all analysts must possess. Dennis continues to capture the experience of developing and analyzing systems in a way that readers can understand and apply and develop a rich foundation of skills as a systems analyst.

Enterprise and the Cloud
by Brendan Gregg

Systems Performance, Second Edition, covers concepts, strategy, tools, and tuning for operating systems and applications, using Linux-based operating systems as the primary example. A deep understanding of these tools and techniques is critical for developers today. Implementing the strategies described in this thoroughly revised and updated edition can lead to a better end-user experience and lower costs, especially for cloud computing environments that charge by the OS instance.

Systems performance expert and best-selling author Brendan Gregg summarizes relevant operating system, hardware, and application theory to quickly get professionals up to speed even if theyve never analyzed performance before. Gregg then provides in-depth explanations of the latest tools and techniques, including extended BPF, and shows how to get the most out of cloud, web, and large-scale enterprise systems. Key topics covered include

  • Hardware, kernel, and application internals, and how they perform
  • Methodologies for rapid performance analysis of complex systems
  • Optimizing CPU, memory, file system, disk, and networking usage
  • Sophisticated profiling and tracing with perf, Ftrace, and BPF (BCC and bpftrace)
  • Performance challenges associated with cloud computing hypervisors
  • Benchmarking more effectively

Featuring up-to-date coverage of Linux operating systems and environments, Systems Performance, Second Edition, also addresses issues that apply to any computer system. The book will be a go-to reference for many years to come and, like the first edition, required reading at leading tech companies.

How to Find, Organize, and Manipulate It
by Grant S. Ingersoll, Thomas S. Morton and Andrew L. Farris

Taming Text is a hands-on, example-driven guide to working with unstructured text in the context of real-world applications. This book explores how to automatically organize text using approaches such as full-text search, proper name recognition, clustering, tagging, information extraction, and summarization. The book guides you through examples illustrating each of these topics, as well as the foundations upon which they are built.

Organizing Business and Technology Teams for Fast Flow
by Matthew Skelton and Manuel Pais

Effective software teams are essential for any organization to deliver value continuously and sustainably. But how do you build the best team organization for your specific goals, culture, and needs?

Team Topologies is a practical, step-by-step, adaptive model for organizational design and team interaction based on four fundamental team types and three team interaction patterns. It is a model that treats teams as the fundamental means of delivery, where team structures and communication pathways are able to evolve with technological and organizational maturity.

In Team Topologies, IT consultants Matthew Skelton and Manuel Pais share secrets of successful team patterns and interactions to help readers choose and evolve the right team patterns for their organization, making sure to keep the software healthy and optimize value streams.

Team Topologies is a major step forward in organizational design for software, presenting a well-defined way for teams to interact and interrelate that helps make the resulting software architecture clearer and more sustainable, turning inter-team problems into valuable signals for the self-steering organization.

Practical TDD and Acceptance TDD for Java Developers
by Lasse Koskela

In test-driven development, you first write an executable test of what your application code must do. Only then do you write the code itself and, with the test spurring you on, improve your design. In acceptance test-driven development (ATDD), you use the same technique to implement product features, benefiting from iterative development, rapid feedback cycles, and better-defined requirements. TDD and its supporting tools and techniques lead to better software faster.

Test Driven brings under one cover practical TDD techniques distilled from several years of community experience. With examples in Java and the Java EE environment, it explores both the techniques and the mindset of TDD and ATDD. It uses carefully chosen examples to illustrate TDD tools and design patterns, not in the abstract but concretely in the context of the technologies you face at work. It is accessible to TDD beginners, and it offers effective and less-well-known techniques to older TDD hands.

By Example
by Kent Beck

Quite simply, test-driven development is meant to eliminate fear in application development. While some fear is healthy (often viewed as a conscience that tells programmers to "be careful!"), the author believes that byproducts of fear include tentative, grumpy, and uncommunicative programmers who are unable to absorb constructive criticism. When programming teams buy into TDD, they immediately see positive results. They eliminate the fear involved in their jobs, and are better equipped to tackle the difficult challenges that face them. TDD eliminates tentative traits, it teaches programmers to communicate, and it encourages team members to seek out criticism However, even the author admits that grumpiness must be worked out individually! In short, the premise behind TDD is that code should be continually tested and refactored. Kent Beck teaches programmers by example, so they can painlessly and dramatically increase the quality of their work.

Best Practices to Eliminate Complexity and Simplify Your Life
by Christian Mayer

Most software developers waste thousands of hours working with overly complex code. The eight core principles in The Art of Clean Code will teach you how to write clear, maintainable code without compromising functionality. The book’s guiding principle is simplicity: reduce and simplify, then reinvest energy in the important parts to save you countless hours and ease the often onerous task of code maintenance.

Bestselling author Christian Mayer leverages his experience helping thousands perfect their coding skills in this new book. With expert advice and real-world examples, he’ll show you how to:

  • Concentrate on the important stuff with the 80/20 principle — focus on the 20% of your code that matters most
  • Avoid coding in isolation: create a minimum viable product to get early feedback
  • Write code cleanly and simply to eliminate clutter
  • Avoid premature optimization that risks over-complicating code
  • Balance your goals, capacity, and feedback to achieve the productive state of Flow
  • Apply the Do One Thing Well philosophy to vastly improve functionality
  • Design efficient user interfaces with the Less is More principle
  • Tie your new skills together into one unifying principle: Focus

This Python-based guide is suitable for programmers at any level, with ideas presented in a language-agnostic manner.

by Donald E. Knuth

This first volume in the series begins with basic programming concepts and techniques, then focuses more particularly on information structures–the representation of information inside a computer, the structural relationships between data elements and how to deal with them efficiently. Elementary applications are given to simulation, numerical methods, symbolic computing, software and system design. Dozens of simple and important algorithms and techniques have been added to those of the previous edition. The section on mathematical preliminaries has been extensively revised to match present trends in research.

by Wouter Groeneveld

Programming is a creative act. These techniques will help you maximize the power of creativity to improve your software and your satisfaction in creating it.

Inside The Creative Programmer you’ll discover:

  • The seven dimensions of creativity in software engineering
  • The scientific understanding of creativity and how it translates to programming
  • Actionable advice and thinking exercises that will make you a better programmer
  • Innovative communication skills for working more efficiently on a team
  • Creative problem-solving techniques for tackling complex challenges

In The Creative Programmer you’ll learn the processes and habits of highly creative individuals and discover how you can build creativity into your programming practice. This fascinating new book introduces the seven domains of creative problem solving and teaches practical techniques that apply those principles to software development.

Hand-drawn illustrations, reflective thought experiments, and brain-tickling example problems help you get your creative juices flowing—you’ll even be able to track your progress against a scientifically validated Creative Programming Problem Solving Test. Before you know it, you’ll be thinking up new and novel ways to tackle the big challenges of your projects.

An Algorithmic Tale of Crime, Conspiracy, and Computation
by Jeremy Kubica

Meet Frank Runtime. Disgraced ex-detective. Hard-boiled private eye. Search expert.

When a robbery hits police headquarters, it’s up to Frank Runtime and his extensive search skills to catch the culprits. In this detective story, you’ll learn how to use algorithmic tools to solve the case. Runtime scours smugglers’ boats with binary search, tails spies with a search tree, escapes a prison with depth-first search, and picks locks with priority queues. Joined by know-it-all rookie Officer Notation and inept tag-along Socks, he follows a series of leads in a best-first search that unravels a deep conspiracy. Each chapter introduces a thrilling twist matched with a new algorithmic concept, ending with a technical recap.

Perfect for computer science students and amateur sleuths alike, The CS Detective adds an entertaining twist to learning algorithms.

Follow Frank’s mission and learn:

  • The algorithms behind best-first and depth-first search, iterative deepening, parallelizing, binary search, and more
  • Basic computational concepts like strings, arrays, stacks, and queues
  • How to adapt search algorithms to unusual data structures
  • The most efficient algorithms to use in a given situation, and when to apply common-sense heuristic methods
The Comprehensive, Easy-to-Read Handbook for Beginners and Pros
by Eric Verzuh

The Fast Forward MBA in Project Management_: The Comprehensive, Easy to Read Handbook for Beginners and Pros, 6th Edition_ is a comprehensive guide to real-world project management methods, tools, and techniques. Practical, easy-to-use, and deeply thorough, this book gives you the answers you need now. You'll find cutting-edge ideas and hard-won wisdom of one of the field's leading experts, delivered in short, lively segments that address common management issues. Brief descriptions of important concepts, tips on real-world applications, and compact case studies illustrate the most sought-after skills and pitfalls you should watch out for. This sixth edition now includes:

  • A brand-new chapter on project quality
  • A new chapter on managing media, entertainment, and creative projects
  • A new chapter on the project manager’s #1 priority: leadership
  • A new chapter with the most current practices in Change Management
  • Current PMP certification study tips

Readers of The Fast Forward MBA in Project Management also receive access to new video resources available at the author’s website.

The book teaches readers how to manage and deliver projects on-time and on-budget by applying the practical strategies and concrete solutions found within. Whether the challenge is finding the right project sponsor, clarifying project objectives, or setting realistic schedules and budget projections, The Fast Forward MBA in Project Management shows you what you need to know, the best way to do it, and what to watch out for along the way.

A Leadership Fable
by Patrick M. Lencioni

In The Five Dysfunctions of a Team Patrick Lencioni once again offers a leadership fable that is as enthralling and instructive as his first two best-selling books, The Five Temptations of a CEO and The Four Obsessions of an Extraordinary Executive. This time, he turns his keen intellect and storytelling power to the fascinating, complex world of teams.

Kathryn Petersen, Decision Tech's CEO, faces the ultimate leadership crisis: Uniting a team in such disarray that it threatens to bring down the entire company. Will she succeed? Will she be fired? Will the company fail? Lencioni's utterly gripping tale serves as a timeless reminder that leadership requires as much courage as it does insight.

Throughout the story, Lencioni reveals the five dysfunctions which go to the very heart of why teams even the best ones-often struggle. He outlines a powerful model and actionable steps that can be used to overcome these common hurdles and build a cohesive, effective team. Just as with his other books, Lencioni has written a compelling fable with a powerful yet deceptively simple message for all those who strive to be exceptional team leaders.

How One Company Is Revolutionizing Management As We Know It
by Bernard Girard

Shortly after World War I, Ford and GM created the large modern corporation, with its financial and statistical controls, mass production, and assembly lines. In the 1980s, Toyota stood out for combining quality with continuous refinement. Today, Google is reinventing business yet again—the way we work, how organizations are controlled, and how employees are managed.

Management consultant Bernard Girard has been analyzing Google since its founding in 1998, and now in The Google Way, he explores Google's innovations in depth—many of which are far removed from the best practices taught at the top business schools.

As you read, you'll see how much of Google's success is due to its focus on users and automation. You'll also learn how eCommerce has profoundly changed the relationship between businesses and their customers, for the first time giving customers an important role to play in a major corporation's growth. Finally, Girard speculates about the limits of Google's business model and discusses the challenges it will face as it continues to grow.

Google's culture is one of innovation. Why not make that spirit of innovation your own?

A Guide for Tech Leaders Navigating Growth & Change
by Camille Fournier

Managing people is difficult wherever you work. But in the tech industry, where management is also a technical discipline, the learning curve can be brutal—especially when there are few tools, texts, and frameworks to help you. In this practical guide, author Camille Fournier (tech lead turned CTO) takes you through each stage in the journey from engineer to technical manager.

From mentoring interns to working with senior staff, you’ll get actionable advice for approaching various obstacles in your path. This book is ideal whether you’re a new manager, a mentor, or a more experienced leader looking for fresh advice. Pick up this book and learn how to become a better manager and leader in your organization.

  • Begin by exploring what you expect from a manager
  • Understand what it takes to be a good mentor, and a good tech lead
  • Learn how to manage individual members while remaining focused on the entire team
  • Understand how to manage yourself and avoid common pitfalls that challenge many leaders
  • Manage multiple teams and learn how to manage managers
  • Learn how to build and bootstrap a unifying culture in teams
by Ola Ellnestam and Daniel Brolund

The Mikado Method is a book written by the creators of this process. It describes a pragmatic, straightforward, and empirical method to plan and perform non-trivial technical improvements on an existing software system. The method has simple rules, but the applicability is vast. As you read, you'll practice a step-by-step system for identifying the scope and nature of your technical debt, mapping the key dependencies, and determining the safest way to approach the "Mikado" — your goal.

A Guide for the New Software Engineer
by Chris Riccomini and Dmitriy Ryaboy

For new software engineers, knowing how to program is only half the battle. You’ll quickly find that many of the skills and processes key to your success are not taught in any school or bootcamp. The Missing README fills in that gap—a distillation of workplace lessons, best practices, and engineering fundamentals that the authors have taught rookie developers at top companies for more than a decade.

Early chapters explain what to expect when you begin your career at a company. The book’s middle section expands your technical education, teaching you how to work with existing codebases, address and prevent technical debt, write production-grade software, manage dependencies, test effectively, do code reviews, safely deploy software, design evolvable architectures, and handle incidents when you’re on-call. Additional chapters cover planning and interpersonal skills such as Agile planning, working effectively with your manager, and growing to senior levels and beyond.

You’ll learn:

  • How to use the legacy code change algorithm, and leave code cleaner than you found it
  • How to write operable code with logging, metrics, configuration, and defensive programming
  • How to write deterministic tests, submit code reviews, and give feedback on other people’s code
  • The technical design process, including experiments, problem definition, documentation, and collaboration
  • What to do when you are on-call, and how to navigate production incidents
  • Architectural techniques that make code change easier
  • Agile development practices like sprint planning, stand-ups, and retrospectives

This is the book your tech lead wishes every new engineer would read before they start. By the end, you’ll know what it takes to transition into the workplace–from CS classes or bootcamps to professional software engineering.

Essays on Software Engineering
by Frederick Brooks Jr.

Few books on software project management have been as influential and timeless as The Mythical Man-Month. With a blend of software engineering facts and thought-provoking opinions, Fred Brooks offers insight for anyone managing complex projects. These essays draw from his experience as project manager for the IBM System/360 computer family and then for OS/360, its massive software system. Now, 20 years after the initial publication of his book, Brooks has revisited his original ideas and added new thoughts and advice, both for readers already familiar with his work and for readers discovering it for the first time.

The added chapters contain (1) a crisp condensation of all the propositions asserted in the original book, including Brooks' central argument in The Mythical Man-Month: that large programming projects suffer management problems different from small ones due to the division of labor; that the conceptual integrity of the product is therefore critical; and that it is difficult but possible to achieve this unity; (2) Brooks' view of these propositions a generation later; (3) a reprint of his classic 1986 paper "No Silver Bullet"; and (4) today's thoughts on the 1986 assertion, "There will be no silver bullet within ten years."

by Matt Weisfeld

Object-oriented programming (OOP) is the foundation of modern programming languages, including C++, Java, C#, Visual Basic .NET, Ruby, Objective-C, and Swift. Objects also form the basis for many web technologies such as JavaScript, Python, and PHP.

It is of vital importance to learn the fundamental concepts of object orientation before starting to use object-oriented development environments. OOP promotes good design practices, code portability, and reuse–but it requires a shift in thinking to be fully understood. Programmers new to OOP should resist the temptation to jump directly into a particular programming language or a modeling language, and instead first take the time to learn what author Matt Weisfeld calls “the object-oriented thought process.”

Written by a developer for developers who want to improve their understanding of object-oriented technologies, The Object-Oriented Thought Process provides a solutions-oriented approach to object-oriented programming. Readers will learn to understand the proper uses of inheritance and composition, the difference between aggregation and association, and the important distinction between interfaces and implementations.

While programming technologies have been changing and evolving over the years, object-oriented concepts remain a constant–no matter what the platform. This revised edition focuses on the OOP technologies that have survived the past 20 years and remain at its core, with new and expanded coverage of design patterns, avoiding dependencies, and the SOLID principles to help make software designs understandable, flexible, and maintainable.

Your Journey to Mastery
by David Thomas and Andrew Hunt

The Pragmatic Programmer is one of those rare tech books you’ll read, re-read, and read again over the years. Whether you’re new to the field or an experienced practitioner, you’ll come away with fresh insights each and every time.

Dave Thomas and Andy Hunt wrote the first edition of this influential book in 1999 to help their clients create better software and rediscover the joy of coding. These lessons have helped a generation of programmers examine the very essence of software development, independent of any particular language, framework, or methodology, and the Pragmatic philosophy has spawned hundreds of books, screencasts, and audio books, as well as thousands of careers and success stories.

Now, twenty years later, this new edition re-examines what it means to be a modern programmer. Topics range from personal responsibility and career development to architectural techniques for keeping your code flexible and easy to adapt and reuse. Read this book, and you’ll learn how to:

  • Fight software rot
  • Learn continuously
  • Avoid the trap of duplicating knowledge
  • Write flexible, dynamic, and adaptable code
  • Harness the power of basic tools
  • Avoid programming by coincidence
  • Learn real requirements
  • Solve the underlying problems of concurrent code
  • Guard against security vulnerabilities
  • Build teams of Pragmatic Programmers
  • Take responsibility for your work and career
  • Test ruthlessly and effectively, including property-based testing
  • Implement the Pragmatic Starter Kit
  • Delight your users

Written as a series of self-contained sections and filled with classic and fresh anecdotes, thoughtful examples, and interesting analogies, The Pragmatic Programmer illustrates the best approaches and major pitfalls of many different aspects of software development. Whether you’re a new coder, an experienced programmer, or a manager responsible for software projects, use these lessons daily, and you’ll quickly see improvements in personal productivity, accuracy, and job satisfaction. You’ll learn skills and develop habits and attitudes that form the foundation for long-term success in your career.

You’ll become a Pragmatic Programmer.

What every programmer needs to know about cognition
by Felienne Hermans

Your brain responds in a predictable way when it encounters new or difficult tasks. This unique book teaches you concrete techniques rooted in cognitive science that will improve the way you learn and think about code.

In The Programmer’s Brain: What every programmer needs to know about cognition you will learn:

  • Fast and effective ways to master new programming languages
  • Speed reading skills to quickly comprehend new code
  • Techniques to unravel the meaning of complex code
  • Ways to learn new syntax and keep it memorized
  • Writing code that is easy for others to read
  • Picking the right names for your variables
  • Making your codebase more understandable to newcomers
  • Onboarding new developers to your team

Learn how to optimize your brain’s natural cognitive processes to read code more easily, write code faster, and pick up new languages in much less time. This book will help you through the confusion you feel when faced with strange and complex code, and explain a codebase in ways that can make a new team member productive in days!

Understand Computers — Craft Better Code
by Jonathan E. Steinhart

Many coders are unfamiliar with the underlying technologies that make their programs run. But why should you care when your code appears to work? Because you want it to run well and not be riddled with hard-to-find bugs. You don’t want to be in the news because your code had a security problem.

Lots of technical detail is available online but it’s not organized or collected into a convenient place. In The Secret Life of Programs, veteran engineer Jonathan E. Steinhart explores—in depth—the foundational concepts that underlie the machine. Subjects like computer hardware, how software behaves on hardware, as well as how people have solved problems using technology over time.

You’ll learn:

  • How the real world is converted into a form that computers understand, like bits, logic, numbers, text, and colors
  • The fundamental building blocks that make up a computer including logic gates, adders, decoders, registers, and memory
  • Why designing programs to match computer hardware, especially memory, improves performance
  • How programs are converted into machine language that computers understand
  • How software building blocks are combined to create programs like web browsers
  • Clever tricks for making programs more efficient, like loop invariance, strength reduction, and recursive subdivision
  • The fundamentals of computer security and machine intelligence
  • Project design, documentation, scheduling, portability, maintenance, and other practical programming realities.

Learn what really happens when your code runs on the machine and you’ll learn to craft better, more efficient code.

by Alan Williamson

An effective Chief Technology Officer shapes almost every aspect of a modern business. This book shares the experience and advice of veteran CTOs and industry experts for handling IT crises, leading tech teams, and creating an inspiring vision for your company.

In Think Like a CTO you will learn:

  • Effective interaction and relationship-building with other C-level executives
  • Creating long term visions and executing on short term goals
  • Interviewing, hiring, and terminating team members
  • Negotiating salaries and managing promotions
  • Architecting future-proofed systems
  • Handling security breaches and ransomware attacks
  • Putting together budgets and working with your CFO
  • Identifying and managing outsourced vendor opportunities
  • Managing and communicating bad news by leading with data, not passion
  • Being the kind of leader that employees want to follow and emulate

Becoming a CTO is an incredible accomplishment. It’s also one of the hardest transitions a technologist can make. This high-power and high-pressure role demands skills that are rarely developed as a software engineer.

Think Like a CTO shines a light on all the areas an aspiring CTO needs to master to succeed. You’ll learn how to build incredible working relationships with the rest of the C-suite, transform a company with private equity, and recruit and manage your development team. With this book as your guide, you’ll quickly become a trusted leader figure with an inspiring vision for your company.

An Introduction to Creative Problem Solving
by V. Anton Spraul

The real challenge of programming isn't learning a language's syntax—it's learning to creatively solve problems so you can build something great. 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.

A Personal Exercise in Empirical Software Design
by Kent Beck

Messy code is a nuisance. "Tidying" code, to make it more readable, requires breaking it up into manageable sections. In this practical guide, author Kent Beck, creator of Extreme Programming and pioneer of software patterns, suggests when and where you might apply tidyings to improve your code while keeping the overall structure of the system in mind.

Instead of trying to master tidying all at once, this book lets you try out a few examples that make sense for your problem. If you have a big function containing many lines of code, you'll learn how to logically divide it into smaller chunks. Along the way, you'll learn the theory behind software design: coupling, cohesion, discounted cash flows, and optionality.

This book helps you:

  • Understand the basic theory of how software design works and the forces that act on it
  • Explore the difference between changes to a system's behavior and changes to its structure
  • Improve your programming experience by sometimes tidying first and sometimes tidying after
  • Learn how to make large changes in small, safe steps
  • Approach software design as an exercise in human relationships
A Brief Guide to the Standard Object Modeling Language
by Martin Fowler

More than 300,000 developers have benefited from past editions of UML Distilled. This third edition is the best resource for quick, no-nonsense insights into understanding and using UML 2.0 and prior versions of the UML.

Some readers will want to quickly get up to speed with the UML 2.0 and learn the essentials of the UML. Others will use this book as a handy, quick reference to the most common parts of the UML. The author delivers on both of these promises in a short, concise, and focused presentation.

This book describes all the major UML diagram types, what they're used for, and the basic notation involved in creating and deciphering them. These diagrams include class, sequence, object, package, deployment, use case, state machine, activity, communication, composite structure, component, interaction overview, and timing diagrams. The examples are clear and the explanations cut to the fundamental design logic.

If you are like most developers, you don't have time to keep up with all the new innovations in software engineering. This new edition of Fowler's classic work gets you acquainted with some of the best thinking about efficient object-oriented software design using the UML--in a convenient format that will be essential to anyone who designs software professionally.

  • Would you like to understand the most important elements of Class diagrams? (See page 35.)
  • Do you want to see the new UML 2.0 interaction frame notation for adding control flow to sequence diagrams (see page 58) and the unofficial notation that many prefer? (See page 60.)
  • Do you want to know what changes have been made to all versions of the UML? (See page 151.)
  • Do you want a quick reference to the most useful parts of the UML notation? (See the inside covers.)
  • Do you want to find out what diagram types were added to the UML 2.0 without wading through the spec? (See page 11.)
For Agile Software Development
by Mike Cohn

Thoroughly reviewed and eagerly anticipated by the agile community, User Stories Applied offers a requirements process that saves time, eliminates rework, and leads directly to better software.

The best way to build software that meets users' needs is to begin with "user stories": simple, clear, brief descriptions of functionality that will be valuable to real users. In User Stories Applied, Mike Cohn provides you with a front-to-back blueprint for writing these user stories and weaving them into your development lifecycle.

You'll learn what makes a great user story, and what makes a bad one. You'll discover practical ways to gather user stories, even when you can't speak with your users. Then, once you've compiled your user stories, Cohn shows how to organize them, prioritize them, and use them for planning, management, and testing.

  • User role modeling: understanding what users have in common, and where they differ
  • Gathering stories: user interviewing, questionnaires, observation, and workshops
  • Working with managers, trainers, salespeople and other "proxies"
  • Writing user stories for acceptance testing
  • Using stories to prioritize, set schedules, and estimate release costs
  • Includes end-of-chapter practice questions and exercises

User Stories Applied will be invaluable to every software developer, tester, analyst, and manager working with any agile method: XP, Scrum... or even your own home-grown approach.

Discover the Whole Story, Build the Right Product
by Jeff Patton and Peter Economy

User story mapping is a valuable tool for software development, once you understand why and how to use it. This insightful book examines how this often misunderstood technique can help your team stay focused on users and their needs without getting lost in the enthusiasm for individual product features.

Author Jeff Patton shows you how changeable story maps enable your team to hold better conversations about the project throughout the development process. Your team will learn to come away with a shared understanding of what you’re attempting to build and why.

  • Get a high-level view of story mapping, with an exercise to learn key concepts quickly
  • Understand how stories really work, and how they come to life in Agile and Lean projects
  • Dive into a story’s lifecycle, starting with opportunities and moving deeper into discovery
  • Prepare your stories, pay attention while they’re built, and learn from those you convert to working software
Asynchronous and Reactive Java
by Julien Ponge

As enterprise applications become larger and more distributed, new architectural approaches like reactive designs, microservices, and event streams are required knowledge. The Vert.x framework provides a mature, rock-solid toolkit for building reactive applications using Java, Kotlin, or Scala.

Vert.x in Action teaches you to build responsive, resilient, and scalable JVM applications with Vert.x using well-established reactive design patterns.

by Dustin A. Coates

Voice Applications for Alexa and Google Assistant is your guide to designing, building, and implementing voice-based applications for Alexa and Google Assistant. Inside, you'll learn how to build your own "skills"—the voice app term for actions the device can perform—from scratch.

by Michael Feathers

This book provides programmers with the ability to cost effectively handlecommon legacy code problems without having to go through the hugelyexpensive task of rewriting all existing code. It describes a series of practicalstrategies that developers can employ to bring their existing softwareapplications under control. The author provides useful guidance about how touse these strategies when refactoring or making functional changes to codebases. One of the book's key points is that it teaches developers to write teststhat can be used to make sure they are not unintentionally changing theapplication as they optimize it. Examples are provided in Java, C++, and Csharp,and the book assumes that the reader has some knowledge of UMLnotation. Strategies using UML and code in C++ and Java primarily whilelanguage independent advice will be delivered in side bars and appendices forlanguage specific users.

Understanding the Machine
by Randall Hyde

This, the first volume in Randall Hyde’s Write Great Code series, dives into machine organization without the extra overhead of learning assembly language programming. Written for high-level language programmers, Understanding the Machine fills in the low-level details of machine organization that are often left out of computer science and engineering courses.

Learn:

  • How the machine represents numbers, strings, and high-level data structures, so you’ll know the inherent cost of using them.
  • How to organize your data, so the machine can access it efficiently.
  • How the CPU operates, so you can write code that works the way the machine does.
  • How I/O devices operate, so you can maximize your application’s performance when accessing those devices.
  • How to best use the memory hierarchy to produce the fastest possible programs.

Great code is efficient code. But before you can write truly efficient code, you must understand how computer systems execute programs and how abstractions in programming languages map to the machine’s low-level hardware. After all, compilers don’t write the best machine code; programmers do. This book gives you the foundation upon which all great software is built.

NEW IN THIS EDITION, COVERAGE OF:

  • Programming languages like Swift and Java
  • Code generation on modern 64-bit CPUs
  • ARM processors on mobile phones and tablets
  • Newer peripheral devices
  • Larger memory systems and large-scale SSDs
Thinking Low-Level, Writing High-Level
by Randall Hyde

Today’s programming languages offer productivity and portability, but also make it easy to write sloppy code that isn’t optimized for a compiler. Thinking Low-Level, Writing High-Level will teach you to craft source code that results in good machine code once it’s run through a compiler.

You'll learn:

  • How to analyze the output of a compiler to verify that your code generates good machine code
  • The types of machine code statements that compilers generate for common control structures, so you can choose the best statements when writing HLL code
  • Enough assembly language to read compiler output
  • How compilers convert various constant and variable objects into machine data

With an understanding of how compilers work, you’ll be able to write source code that they can translate into elegant machine code.

NEW TO THIS EDITION, COVERAGE OF:

  • Programming languages like Swift and Java
  • Code generation on modern 64-bit CPUs
  • ARM processors on mobile phones and tablets
  • Stack-based architectures like the Java Virtual Machine
  • Modern language systems like the Microsoft Common Language Runtime
Engineering Software
by Randall Hyde

The field of software engineering may value team productivity over individual growth, but legendary computer scientist Randall Hyde wants to make promising programmers into masters of their craft. To that end, Engineering Software—the latest volume in Hyde’s highly regarded Write Great Code series—offers his signature in-depth coverage of everything from development methodologies and strategic productivity to object-oriented design requirements and system documentation.

You’ll learn:

  • Why following the software craftsmanship model can lead you to do your best work
  • How to utilize traceability to enforce consistency within your documentation
  • The steps for creating your own UML requirements with use-case analysis
  • How to leverage the IEEE documentation standards to create better software

This advanced apprenticeship in the skills, attitudes, and ethics of quality software development reveals the right way to apply engineering principles to programming. Hyde will teach you the rules, and show you when to break them. Along the way, he offers illuminating insights into best practices while empowering you to invent new ones.

Brimming with resources and packed with examples, Engineering Software is your go-to guide for writing code that will set you apart from your peers.