Printed in full color.
Faced with a software project of epic proportions? Tired of over-committing and under-delivering? Enter the dojo of the agile samurai, where agile expert Jonathan Rasmusson shows you how to kick-start, execute, and deliver your agile projects. Combining cutting-edge tools with classic agile practices, The Agile Samurai gives you everything you need to deliver something of value every week and make rolling your software into production a non-event.
Get ready to kick some software project butt. By learning the ways of the agile samurai you will discover:
By the end of this book you will know everything you need to set up, execute, and successfully deliver agile projects, and have fun along the way. If you're a project lead, this book gives you the tools to set up and lead your agile project from start to finish. If you are an analyst, programmer, tester, usability designer, or project manager, this book gives you the insight and foundation necessary to become a valuable agile team member.
The Agile Samurai slices away the fluff and theory that make other books less-than-agile. It's packed with best practices, war stories, plenty of humor and hands-on tutorial exercises that will get you doing the right things, the right way.
This book will make a difference.
Businesses own more data than ever before, but it's of no value if you don't know how to use it. Data governance manages the people, processes, and strategy needed for deploying data projects to production. But doing it well is far from easy: Less than one fourth of business leaders say their organizations are data driven. In Designing Data Governance from the Ground Up, you'll build a cross-functional strategy to create roadmaps and stewardship for data-focused projects, embed data governance into your engineering practice, and put processes in place to monitor data after deployment.
In the last decade, the amount of data people produced grew 3,000 percent. Most organizations lack the strategy to clean, collect, organize, and automate data for production-ready projects. Without effective data governance, most businesses will keep failing to gain value from the mountain of data that's available to them.
There's a plethora of content intended to help DataOps and DevOps teams reach production, but 90 percent of projects trained with big data fail to reach production because they lack governance.
This book shares six steps you can take to build a data governance strategy from scratch. You'll find a data framework, pull together a team of data stewards, build a data governance team, define your roadmap, weave data governance into your development process, and monitor your data in production
Whether you're a chief data officer or individual contributor, this book will show you how to manage up, get the buy-in you need to build data governance, find the right colleagues to co-create data governance, and keep them engaged for the long haul.
In an uncertain and complex world, learning is more important than ever before. In fact, it can be a competitive advantage. Teams and organizations that learn rapidly deliver greater customer value faster and more reliably. Furthermore, those teams are more engaged, more productive, and more satisfied. The most effective way to enable teams to learn is by holding regular retrospectives. Unfortunately, many teams only get shallow results from their retrospectives. This book is filled with practical advice, techniques, and real-life examples that will take retrospectives to the next level--whether your team is co-located, hybrid, or remote. This book will help team leads, scrum masters, and coaches engage their teams to learn, improve, and deliver greater results.
For nearly two decades, scrum masters, team leads, and coaches have relied on the first edition of Agile Retrospectivesas an essential resource to facilitate better retrospectives.
This edition builds on recent research, reflects the authors' experiences over two decades, and shares wisdom gleaned from the global retrospective community. Find practical advice to level up retrospective skills. Address the challenges of remote and hybrid retrospectives head on. Take advantage of expanded guidance on designing and facilitating retrospectives--based on the questions and concerns of practitioners worldwide. Gain insight into choosing a broad or narrow focus for retrospectives. Explore how to use both objective and subjective data to enable more effective conversations. Learn how to make decisions that stick.
Understand the importance of psychological safety and how to foster it in retrospectives. Elevate issues and engage managers in systemic change.
Learn from many real-life stories that demonstrate how our advice has impacted retrospectives at organizations around the globe. Finally, find a set of recommended flows that reveal the authors' thought process in designing retrospectives for scenarios teams faced in real life.
Jack the Ripper and legacy codebases have more in common than you'd think. Inspired by forensic psychology methods, you can apply strategies to identify problems in your existing code, assess refactoring direction, and understand how your team influences the software architecture. With its unique blend of criminal psychology and code analysis, Your Code as a Crime Scene arms you with the techniques you need to take on any codebase, no matter what programming language you use.
Software development might well be the most challenging task humanity ever attempted. As systems scale up, they also become increasingly complex, expensive to maintain, and difficult to reason about. We can always write more tests, try to refactor, and even fire up a debugger to understand complex coding constructs. That's a great starting point, but you can do so much better.
Take inspiration from forensic psychology techniques to understand and improve existing code. Visualize codebases via a geographic profile from commit data to find development hotspots, prioritize technical debt, and uncover hidden dependencies. Get data and develop strategies to make the business case for larger refactorings. Detect and fix organizational problems from the vantage point of the software architecture to remove bottlenecks for the teams.
The original Your Code as a Crime Scene from 2014 pioneered techniques for understanding the intersection of people and code. This new edition reflects a decade of additional experience from hundreds of projects. Updated techniques, novel case studies, and extensive new material adds to the strengths of this cult classic.
Change how you view software development and join the hunt for better code!
What You Need:
You need to be comfortable reading code. You also need to use Git (or Subversion, Mercurial or similar version-control tool).
Build faster, more reliable Rails apps by taking the best advanced PostgreSQL and Active Record capabilities, and using them to solve your application scale and growth challenges. Gain the skills needed to comfortably work with multi-terabyte databases, and with complex Active Record, SQL, and specialized Indexes. Develop your skills with PostgreSQL on your laptop, then take them into production, while keeping everything in sync. Make slow queries fast, perform any schema or data migration without errors, use scaling techniques like read/write splitting, partitioning, and sharding, to meet demanding workload requirements from Internet scale consumer apps to enterprise SaaS.
Deepen your firsthand knowledge of high-scale PostgreSQL databases and Ruby on Rails applications with dozens of practical and hands-on exercises. Unlock the mysteries surrounding complex Active Record. Make any schema or data migration change confidently, without downtime. Grow your experience with modern and exclusive PostgreSQL features like SQL Merge, Returning, and Exclusion constraints. Put advanced capabilities like Full Text Search and Publish Subscribe mechanisms built into PostgreSQL to work in your Rails apps. Improve the quality of the data in your database, using the advanced and extensible system of types and constraints to reduce and eliminate application bugs. Tackle complex topics like how to improve query performance using specialized indexes. Discover how to effectively use built-in database functions and write your own, administer replication, and make the most of partitioning and foreign data wrappers. Use more than 40 well-supported open source tools to extend and enhance PostgreSQL and Ruby on Rails. Gain invaluable insights into database administration by conducting advanced optimizations - including high-impact database maintenance - all while solving real-world operational challenges.
Take your new skills into production today and then take your PostgreSQL and Rails applications to a whole new level of reliability and performance.
What You Need:
You want increased customer satisfaction, faster development cycles, and less wasted work. Domain-driven design (DDD) combined with functional programming is the innovative combo that will get you there. In this pragmatic, down-to-earth guide, you'll see how applying the core principles of functional programming can result in software designs that model real-world requirements both elegantly and concisely - often more so than an object-oriented approach. Practical examples in the open-source F# functional language, and examples from familiar business domains, show you how to apply these techniques to build software that is business-focused, flexible, and high quality.
Domain-driven design is a well-established approach to designing software that ensures that domain experts and developers work together effectively to create high-quality software. This book is the first to combine DDD with techniques from statically typed functional programming. This book is perfect for newcomers to DDD or functional programming - all the techniques you need will be introduced and explained.
Model a complex domain accurately using the F# type system, creating compilable code that is also readable documentation---ensuring that the code and design never get out of sync. Encode business rules in the design so that you have compile-time unit tests, and eliminate many potential bugs by making illegal states unrepresentable. Assemble a series of small, testable functions into a complete use case, and compose these individual scenarios into a large-scale design. Discover why the combination of functional programming and DDD leads naturally to service-oriented and hexagonal architectures. Finally, create a functional domain model that works with traditional databases, NoSQL, and event stores, and safely expose your domain via a website or API.
Solve real problems by focusing on real-world requirements for your software.
What You Need:
The code in this book is designed to be run interactively on Windows, Mac and Linux. You will need a recent version of F# (4.0 or greater), and the appropriate .NET runtime for your platform. Full installation instructions for all platforms at fsharp.org. In this book you'll learn how to:
C++ is famous for getting all the default behaviors wrong and for sometimes making demons fly out of your nose. Through 25 puzzles, from the useful to the outright weird, we explore some of C++'s most interesting quirks. How does initialization actually work? Do temporaries even exist? Why is +!! a valid expression in C++? As you work through each puzzle, you will peel off some of the layers of complexity of C++, getting a fundamental understanding of how the language works. This will help you write better code and recognize issues more easily while debugging.
Each puzzle in the book is a complete, seemingly simple C++ program, but can you figure out the output for each, or will the answers stump you? Most of the programs compile and have deterministic, though sometimes surprising, output. Some might, however, have undefined behavior, where anything can happen, including making demons fly out of your nose! Yet others might have unspecified behavior with output that is not completely deterministic; we just know nothing as bad as nasal demons will happen.
All puzzles are accompanied by detailed discussions, taking a look under the hood at what exactly is going on to help you understand more about C++'s unexpected behaviors, as well as fundamental concepts like initialization, overload resolution, and implicit conversions. For the non-deterministic cases, we'll explore some typical behaviors one can expect to see in practice, what causes them, and why they shouldn't be relied on.
After working through the book, you'll have tools and techniques to help you write better and safer code, and a better understanding of the fundamentals of the language, the background for some of C++'s apparent weirdness, and a better feel for identifying bugs and unsafe code in your own programs.
What You Need:
The book assumes basic knowledge of C++. If you want to run the programs yourself, you can use either a local C++ compiler or the online compilers at https: //godbolt.org.
Use serverless technologies to build applications that scale, more quickly and easily, and without worrying about deployment. Whether you're writing an API, a full-stack app, or real-time code, harness the power of serverless on Cloudflare's platform so you can focus on what you do best: delivering solutions. With hands-on instruction and code samples throughout, you'll go from building a simple API to analyzing images with AI. And, when it's time to launch, you'll learn how to deploy your applications and websites automatically, and how to optimize their performance for production.
For decades, applications have been built and deployed in a similar way: you write code, provision a server, and upload your code. Over the years, you've graduated from FTP or SSH to Docker and Kubernetes, but fundamentally you've just switched from owning to renting; you're paying 24/7 for the server hosting your app. Serverless technologies change that model.
With serverless, you focus on writing code, and not how it's deployed. You only pay for when your application code is executed, rather than paying for idle servers. In this book we'll use Cloudflare, which was built from the ground up to be a serverless platform, but the same concepts apply to every serverless provider.
With this book, you'll learn a better way to build applications, and you'll see improved productivity and ease of deployment. From secrets to dependencies, such as databases and caches, Cloudflare has revolutionized how to build applications, and has made building applications easier and more fun. As you go through the book, you'll learn in detail what serverless is, how it functions behind the scenes, and how to build serverless applications on Cloudflare. When you finish this book, you'll understand how to think in terms of serverless functions, and you'll have the experience of deploying and extending these apps as you work through the examples.
What You Need:
Algorithms and data structures are much more than abstract concepts. Mastering them enables you to write code that runs faster and more efficiently, which is particularly important for today's web and mobile apps. Take a practical approach to data structures and algorithms, with techniques and real-world scenarios that you can use in your daily production code, with examples in JavaScript, Python, and Ruby. This new and revised second edition features new chapters on recursion, dynamic programming, and using Big O in your daily work.
Use Big O notation to measure and articulate the efficiency of your code, and modify your algorithm to make it faster. Find out how your choice of arrays, linked lists, and hash tables can dramatically affect the code you write. Use recursion to solve tricky problems and create algorithms that run exponentially faster than the alternatives. Dig into advanced data structures such as binary trees and graphs to help scale specialized applications such as social networks and mapping software. You'll even encounter a single keyword that can give your code a turbo boost. Practice your new skills with exercises in every chapter, along with detailed solutions.
Use these techniques today to make your code faster and more scalable.
Ruby is one of the most important programming languages in use for web development. It powers the Rails framework, which is the backing of some of the most important sites on the web. The Pickaxe Book, named for the tool on the cover, is the definitive reference on Ruby, a highly-regarded, fully object-oriented programming language. This updated edition is a comprehensive reference on the language itself, with a tutorial on the most important features of Ruby - including pattern matching and Ractors - and describes the language through Ruby 3.3.
Would you like to go from first idea to working code much, much faster? Do you currently spend more time satisfying the compiler instead of your clients or end users? Are you frustrated with demanding languages that seem to get in your way instead of helping you get the work done? Are you using Rails and want to dig deeper into the underlying Ruby language? If so, then we've got a language and book for you!
Ruby is a fully object-oriented language. The combination of the power of a pure object-oriented language with the convenience of a scripting language makes Ruby a favorite tool of programmers that want to get things done quickly and cleanly.
This comprehensive reference manual for Ruby includes a description of the most important standard library modules, built-in classes, and modules. It also includes all the new and changed syntax and semantics introduced through Ruby 3.3, including pattern matching and Ractors, and describes the language through Ruby 3.3.
What You Need:
Software startups make global headlines every day. As technology companies succeed and grow, so do their engineering departments. In your career, you'll may suddenly get the opportunity to lead teams: to become a manager. But this is often uncharted territory. How can you decide whether this career move is right for you? And if you do, what do you need to learn to succeed? Where do you start? How do you know that you're doing it right? What does it even mean? And isn't management a dirty word? This book will share the secrets you need to know to manage engineers successfully.
Going from engineer to manager doesn't have to be intimidating. Engineers can be managers, and fantastic ones at that. Cast aside the rhetoric and focus on practical, hands-on techniques and tools. You'll become an effective and supportive team leader that your staff will look up to.
Start with your transition to being a manager and see how that compares to being an engineer. Learn how to better organize information, feel productive, and delegate, but not micromanage. Discover how to manage your own boss, hire and fire, do performance and salary reviews, and build a great team. You'll also learn the psychology: how to ship while keeping staff happy, coach and mentor, deal with deadline pressure, handle sensitive information, and navigate workplace politics.
Consider your whole department. How can you work with other teams to ensure best practice? How do you help form guilds and committees and communicate effectively? How can you create career tracks for individual contributors and managers? How can you support flexible and remote working? How can you improve diversity in the industry through your own actions? This book will show you how.
Great managers can make the world a better place. Join us.
htmx is a library that adds logic and server interaction to HTML; you get the effect of using a front-end SPA framework without writing front-end code. Use any server-side programming language and framework to build server applications with endpoints that simply return snippets of HTML. Dynamically update portions of the current web page from HTTP responses. Add interactivity with JavaScript and libraries such Alpine and _hyperscript. Make your apps more secure by escaping user-supplied content and specifying a Content Security Policy. Go beyond basic HTTP requests with WebSockets and server-sent events.
The htmx JavaScript library gives you a new way to craft web applications. The htmx approach differs significantly from that of the currently popular single-page application (SPA) frameworks; rather than write a bunch of JavaScript, you simply annotate HTML elements before you send them to the browser. The resulting code is easier to understand and modify, and because it downloads less to the browser and doesn't need JSON creation and parsing, you'll find it performs better, too.
Discover a simpler way to implement web applications that emphasizes web fundamentals.
What You Need:
The days of separate dev and ops teams are over - knowledge silos and the throw it over the fence culture they create are the enemy of progress. As an engineer or developer, you need to confidently own each stage of the software delivery process. This book introduces a new paradigm, BEAMOps, that helps you build, test, deploy, and debug BEAM applications. Create effective development and deployment strategies; leverage continuous improvement pipelines; and ensure environment integrity. Combine operational orchestrators such as Docker Swarm with the distribution, fault tolerance, and scalability of the BEAM, to create robust and reliable applications.
BEAMOps starts by building a solid foundation for your project. On the infrastructure side, see how to use Terraform before you even start coding to automate your deployment and operations. On the project management side, we show you how to use issues and milestones to simplify tracking; you'll use this foundation as you go through the book, implementing each of the steps required to deploy a scalable Elixir application.
Now that you have a foundation, you can start building. Create a Phoenix LiveView application and explore mix releases. Make your deployments reliable with Docker. Continuously improve your codebase by implementing an efficient continuous deployment/integration pipeline with GitHub Actions. Scale the Phoenix LiveView application and operate a distributed BEAM system in production using AWS EC2 nodes, AWS load balancers, and a remote Docker swarm. Recognize which application metrics should be collected and monitored, and set alerts when certain thresholds are met to ensure that your application auto-scales. Ship less code more often, and ensure it works!
The pragmatic BEAMOps approach that we teach in this book - an extension of the well-known DevOps paradigm - will help you become a multidisciplinary developer who is empowered to own each stage of the software delivery process. After reading this book, you'll understand how to apply the BEAMOps principles in your daily work, creating reliable, scalable, and easy to understand applications in a cooperative team environment.
What You Need:
Algorithms and data structures are much more than abstract concepts. Mastering them enables you to write code that runs faster and more efficiently, which is particularly important for today's web and mobile apps. Take a practical approach to data structures and algorithms, with techniques and real-world scenarios that you can use in your daily production code. The Python edition uses Python exclusively for all code examples, exercise, and solutions.
Use Big O notation to measure and articulate the efficiency of your code, and modify your algorithm to make it faster. Find out how your choice of arrays, linked lists, and hash tables can dramatically affect the code you write. Use recursion to solve tricky problems and create algorithms that run exponentially faster than the alternatives. Dig into advanced data structures such as binary trees and graphs to help scale specialized applications such as social networks and mapping software. You'll even encounter a single keyword that can give your code a turbo boost. Practice your new skills with exercises in every chapter, along with detailed solutions.
Use these techniques today to make your Python code faster and more scalable.
As you step into senior engineering leadership roles, you need to make an impact, and you need to make it fast. This book will uncover the secrets of what it means to be a successful director of engineering, VP of engineering, or CTO. With a hands-on, practical approach, it will help you understand and develop the skills that you need, ranging from how to manage other managers, to how to define and execute strategy, how to manage yourself and your limited time, and how to navigate your own career journey to your desired destination.
You can become a great engineering leader, the kind that runs a healthy, ambitious, and efficient organization that builds quality products, and this practical guide will provide you with the skills to get there. With this book you'll uncover the tools, techniques, and secrets to being a successful and effective engineering executive.
Starting with the roles and responsibilities of directors, VPs, and CTOs, explore their positions in the org chart and understand how they engage on tactical, operational, and strategic levels to deliver great products at scale. Dive into the tools and techniques that you need to be successful. Understand how to frame and allocate your time, how to play finite and infinite games, how to position and manage senior individual contributors, and how to get the best from your peers, your manager, and your counterparts that you collaborate with in other disciplines. Understand how to communicate at scale and then raise the bar through effective performance management.
Get strategic: define, create, and execute your vision for your organization that stands the test of time. Understand the typical monthly, quarterly, and yearly cycles that companies go through and how to use them to your advantage. Tackle planning and budgets and understand how to make both work for you. Navigate wartime and peacetime successfully by adapting your priorities and leadership style. Plan out your career journey by understanding that it's never, ever a straight line to get to where you want to go.
It's time for us to lift the lid on effective senior leadership.
What You Need:
There are no prerequisites for this book. However, it is aimed at engineering managers, so some experience or interest in management is useful.