Software Engineering at Google
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 maintainin ...
Fundamentals of Software Architecture
Salary surveys worldwide regularly place software architect in the top 10 best jobs, yet no real guide exists to help developers become architects. Until now. This book provides the first comprehensive overview of software architecture's many aspects. Aspiring and existing architects alike will examine architectural characteristics, architectural patterns, component determination, diagramming and presenting architecture, evolutionary architecture, and many other topics.
Mark Richards and Neal Ford - hands-on practitioners who have taught software architecture classes professionally for years - focus on architecture principles that apply across all technology stacks. You'll explore software architecture in a modern light, taking into account all the innovations of the past decade.
This book examines:
Architecture patterns: The technical basis for many architectural decisions;
Components: Identification, coupling, cohesion, partitioning, and granularit ...
Competing with Unicorns
Today's tech unicorns develop software differently. They've developed a way of working that lets them scale like an enterprise while working like a startup. These techniques can be learned. This book takes you behind the scenes and shows you how companies like Google, Facebook, and Spotify do it. Leverage their insights, so your teams can work better together, ship higher-quality product faster, innovate more quickly, and compete with the unicorns.
Massively successful tech companies, or Unicorns, have discovered how to take the techniques that made them successful as a startup and scale them to the enterprise level. Amazon, Facebook, Google, and Spotify all work like startups, despite having workforces numbering in the tens of thousands. Ex-Spotify engineer and coach, Jonathan Rasmusson, takes you behind the scenes and shows you how to develop software the way the best companies do it.
Learn how to give teams purpose through Missions, empower and trust with Squads, ...
Real-World Software Development
Explore the latest Java-based software development techniques and methodologies through the project-based approach in this practical guide. Unlike books that use abstract examples and lots of theory, Real-World Software Development shows you how to develop several relevant projects while learning best practices along the way.
With this engaging approach, junior developers capable of writing basic Java code will learn about state-of-the-art software development practices for building modern, robust and maintainable Java software. You'll work with many different software development topics that are often excluded from software develop how-to references.
Featuring real-world examples, this book teaches you techniques and methodologies for functional programming, automated testing, security, architecture, and distributed systems. ...
Software Estimation Without Guessing
Developers hate estimation, and most managers fear disappointment with the results, but there is hope for both. You'll have to give up some widely held misconceptions: let go of the notion that "an estimate is an estimate", and estimate for your particular need. Realize that estimates have a limited shelf-life, and re-estimate frequently as needed. When reality differs from your estimate, don't lament; mine that disappointment for the gold that can be the longer-term jackpot. We'll show you how.
Estimating software development often produces more angst than value, but it doesn't have to. Identify the needs behind estimate requests and determine how to meet those needs simply and easily. Choose estimation techniques based on current needs and available information, gaining benefit while reducing cost and effort. Detect bad assumptions that might sink your project if you don't adjust your plans.
Learn strategies for effective decomposition of work and aspects of the work tha ...
Designing Elixir Systems with OTP
You know how to code in Elixir; now learn to think in it. Learn to design libraries with intelligent layers that shape the right data structures, flow from one function into the next, and present the right APIs. Embrace the same OTP that's kept our telephone systems reliable and fast for over 30 years. Move beyond understanding the OTP functions to knowing what's happening under the hood, and why that matters. Using that knowledge, instinctively know how to design systems that deliver fast and resilient services to your users, all with an Elixir focus.
Elixir is gaining mindshare as the programming language you can use to keep your software running forever, even in the face of unexpected errors and an ever growing need to use more processors. This power comes from an effective programming language, an excellent foundation for concurrency and its inheritance of a battle-tested framework called the OTP.
If you're using frameworks like Phoenix or Nerves, you're already experi ...
Small, Sharp Software Tools
The command-line interface is making a comeback. That's because developers know that all the best features of your operating system are hidden behind a user interface designed to help average people use the computer. But you're not the average user, and the CLI is the most efficient way to get work done fast. Turn tedious chores into quick tasks: read and write files, manage complex directory hierarchies, perform network diagnostics, download files, work with APIs, and combine individual programs to create your own workflows. Put down that mouse, open the CLI, and take control of your software development environment.
No matter what language or platform you're using, you can use the CLI to create projects, run servers, and manage files. You can even create new tools that fit right in with grep, sed, awk, and xargs. You'll work with the Bash shell and the most common command-line utilities available on macOS, Windows 10, and many flavors of Linux.
Create files without openi ...
The Successful Software Manager
The Successful Software Manager is a comprehensive and practical guide to managing software developers, software customers, and the process of deciding what software needs to be built. It explains in detail how to develop a management mindset, lead a high-performing developer team, and meet all the expectations of a good manager.
The book will help you whether you've chosen to pursue a career in management or have been asked to "act up" as a manager. Whether you're a Development Manager, Product Manager, Team Leader, Solution Architect, or IT Director, this is your indispensable guide to all aspects of running your team and working within an organization and dealing with colleagues, customers, potential customers, and technologists, to ensure you build the product your organization needs.
This book is the must-have authoritative guide to managing projects, managing people, and preparing yourself to be an effective manager. The intuitive real-life examp ...
Design Patterns in .NET
Implement design patterns in .NET using the latest versions of the C# and F# languages. This book provides a comprehensive overview of the field of design patterns as they are used in today's developer toolbox.
Using the C# programming language, Design Patterns in .NET explores the classic design pattern implementation and discusses the applicability and relevance of specific language features for the purpose of implementing patterns. You will learn by example, reviewing scenarios where patterns are applicable. MVP and patterns expert Dmitri Nesteruk demonstrates possible implementations of patterns, discusses alternatives and pattern inter-relationships, and illustrates the way that a dedicated refactoring tool (ReSharper) can be used to implement design patterns with ease.
Know the latest pattern implementations available in C# and F#; Refer to researched and proven variations of patterns; Study complete, self-contained examples including many that cover advanced scenarios; Use ...
Cloud Native Patterns
Cloud Native Patterns is your guide to developing strong applications that thrive in the dynamic, distributed, virtual world of the cloud. This book presents a mental model for cloud-native applications, along with the patterns, practices, and tooling that set them apart.
Cloud platforms promise the holy grail: near-zero downtime, infinite scalability, short feedback cycles, fault-tolerance, and cost control. But how do you get there? By applying cloudnative designs, developers can build resilient, easily adaptable, web-scale distributed applications that handle massive user traffic and data loads. Learn these fundamental patterns and practices, and you'll be ready to thrive in the dynamic, distributed, virtual world of the cloud.
With 25 years of experience under her belt, Cornelia Davis teaches you the practices and patterns that set cloud-native applications apart. With realistic examples and expert advice for working with apps, data, services, routing, and more, she shows you ...
An Executive's Guide to Software Quality in an Agile Organization
Utilize a set of practical guidelines to help your Agile organization elevate software design quality as an important business driver to achieve customer satisfaction and, ultimately, higher revenue for your company. This is the first book to focus on a holistic quality view—what it is and how it links to overall business enhancements.
The real-world examples used in this book allow you to learn and apply similar strategies and guidelines to help create a quality blueprint for your organization. Five pillars of quality are defined that can be used for any industry and, once internalized, can serve as a set of tools to continuously improve and measure the key factors impacting quality.
Be aware of the key elements in any transformation that involves culture; Link quality and business outcomes; Understand quality and its holistic definition and why continuous improvement is still a relevant approach in enhancing quality; Follow guidelines with specific examples that can be ...