Building Green Software


Book Description

How will software development and operations have to change to meet the sustainability and green needs of the planet? And what does that imply for development organizations? In this eye-opening book, sustainable software advocates Anne Currie, Sarah Hsu, and Sara Bergman provide a unique overview of this topic—discussing everything from the likely evolution of national grids to the effect those changes will have on the day-to-day lives of developers. Ideal for everyone from new developers to CTOs, Building Green Software tackles the challenges involved and shows you how to build, host, and operate code in a way that's not only better for the planet but also cheaper and relatively low-risk for your business. Most hyperscale public cloud providers have already committed to net-zero IT operations by 2030. This book shows you how to get on board. You'll explore: How the energy transition is likely to change hosting on prem and in the cloud—and how your company can prepare The fundamental architectural principles of sustainable software development and how to apply them How to determine which parts of your system need to change The concept of extending hardware longevity and the part that software plays




Building Software Teams


Book Description

Why does poor software quality continue to plague enterprises of all sizes in all industries? Part of the problem lies with the process, rather than individual developers. This practical guide provides ten best practices to help team leaders create an effective working environment through key adjustments to their process. As a follow-up to their popular book, Building Maintainable Software, consultants with the Software Improvement Group (SIG) offer critical lessons based on their assessment of development processes used by hundreds of software teams. Each practice includes examples of goalsetting to help you choose the right metrics for your team. Achieve development goals by determining meaningful metrics with the Goal-Question-Metric approach Translate those goals to a verifiable Definition of Done Manage code versions for consistent and predictable modification Control separate environments for each stage in the development pipeline Automate tests as much as possible and steer their guidelines and expectations Let the Continuous Integration server do much of the hard work for you Automate the process of pushing code through the pipeline Define development process standards to improve consistency and simplicity Manage dependencies on third party code to keep your software consistent and up to date Document only the most necessary and current knowledge




Building Maintainable Software, Java Edition


Book Description

Have you ever felt frustrated working with someone else’s code? Difficult-to-maintain source code is a big problem in software development today, leading to costly delays and defects. Be part of the solution. With this practical book, you’ll learn 10 easy-to-follow guidelines for delivering Java software that’s easy to maintain and adapt. These guidelines have been derived from analyzing hundreds of real-world systems. Written by consultants from the Software Improvement Group (SIG), this book provides clear and concise explanations, with advice for turning the guidelines into practice. Examples for this edition are written in Java, while our companion C# book provides workable examples in that language. Write short units of code: limit the length of methods and constructors Write simple units of code: limit the number of branch points per method Write code once, rather than risk copying buggy code Keep unit interfaces small by extracting parameters into objects Separate concerns to avoid building large classes Couple architecture components loosely Balance the number and size of top-level components in your code Keep your codebase as small as possible Automate tests for your codebase Write clean code, avoiding "code smells" that indicate deeper problems




Building Microservices


Book Description

Annotation Over the past 10 years, distributed systems have become more fine-grained. From the large multi-million line long monolithic applications, we are now seeing the benefits of smaller self-contained services. Rather than heavy-weight, hard to change Service Oriented Architectures, we are now seeing systems consisting of collaborating microservices. Easier to change, deploy, and if required retire, organizations which are in the right position to take advantage of them are yielding significant benefits. This book takes an holistic view of the things you need to be cognizant of in order to pull this off. It covers just enough understanding of technology, architecture, operations and organization to show you how to move towards finer-grained systems.




Green Software Engineering


Book Description

Craft sustainable software and reduce digital environmental impact with practical strategies and principles Key Features Discover practical strategies for developing energy-efficient digital solutions across various domains Learn effective strategies to measure and mitigate the environmental impact of digital solutions Explore real-world examples of integrating sustainable design patterns into the software development cycle Purchase of the print or Kindle book includes a free PDF eBook Book Description Embark on a transformative journey toward sustainable software engineering, exploring the vital intersection of technology and environmental responsibility. Authored by Santiago Fontanarrosa, a Green Software Foundation member with 20+ years in software engineering, this book explores practical strategies and use cases to help you assess and mitigate digital product environmental impact. Through real-world examples and hands-on experiences, you’ll gain the skills you need to craft environmentally responsible solutions aligned with green software engineering principles. As you progress, you’ll assess and optimize software architecture for sustainability within a sustainable software delivery framework schema. Beyond technical insights, the book delves into ethical implications and societal impacts, fostering a deeper understanding of the broader implications of technology usage. As you approach the conclusion, you’ll have gained the ability to comprehend, measure, and craft energy-efficient digital solutions aligned with green software engineering principles. What you will learn Optimize software and infrastructure for sustainability Integrate green software principles into the Agile Software Development Life Cycle Explore emerging trends and technologies shaping the future of green software engineering Reflect on tech ethics as well as address societal and environmental concerns Implement industry standards and reporting methodologies for software emissions Measure digital operations' environmental footprint with methodologies Mitigate software's ecological impact with strategic approaches Who this book is for If you’re a software developer, software architect, or IT professional who wants to integrate sustainability into your organization, this book is for you. Whether you're a seasoned professional or a sustainability-focused tech enthusiast, this book provides the knowledge and tools you need to drive positive change in the software industry. A basic understanding of IT concepts and programming is recommended, and familiarity in modern digital technologies like cloud computing will also be helpful.




The Nature of Software Development


Book Description

You need to get value from your software project. You need it "free, now, and perfect." We can't get you there, but we can help you get to "cheaper, sooner, and better." This book leads you from the desire for value down to the specific activities that help good Agile projects deliver better software sooner, and at a lower cost. Using simple sketches and a few words, the author invites you to follow his path of learning and understanding from a half century of software development and from his engagement with Agile methods from their very beginning. The book describes software development, starting from our natural desire to get something of value. Each topic is described with a picture and a few paragraphs. You're invited to think about each topic; to take it in. You'll think about how each step into the process leads to the next. You'll begin to see why Agile methods ask for what they do, and you'll learn why a shallow implementation of Agile can lead to only limited improvement. This is not a detailed map, nor a step-by-step set of instructions for building the perfect project. There is no map or instructions that will do that for you. You need to build your own project, making it a bit more perfect every day. To do that effectively, you need to build up an understanding of the whole process. This book points out the milestones on your journey of understanding the nature of software development done well. It takes you to a location, describes it briefly, and leaves you to explore and fill in your own understanding. What You Need: You'll need your Standard Issue Brain, a bit of curiosity, and a desire to build your own understanding rather than have someone else's detailed ideas poured into your head.




Release It!


Book Description

A single dramatic software failure can cost a company millions of dollars - but can be avoided with simple changes to design and architecture. This new edition of the best-selling industry standard shows you how to create systems that run longer, with fewer failures, and recover better when bad things happen. New coverage includes DevOps, microservices, and cloud-native architecture. Stability antipatterns have grown to include systemic problems in large-scale systems. This is a must-have pragmatic guide to engineering for production systems. If you're a software developer, and you don't want to get alerts every night for the rest of your life, help is here. With a combination of case studies about huge losses - lost revenue, lost reputation, lost time, lost opportunity - and practical, down-to-earth advice that was all gained through painful experience, this book helps you avoid the pitfalls that cost companies millions of dollars in downtime and reputation. Eighty percent of project life-cycle cost is in production, yet few books address this topic. This updated edition deals with the production of today's systems - larger, more complex, and heavily virtualized - and includes information on chaos engineering, the discipline of applying randomness and deliberate stress to reveal systematic problems. Build systems that survive the real world, avoid downtime, implement zero-downtime upgrades and continuous delivery, and make cloud-native applications resilient. Examine ways to architect, design, and build software - particularly distributed systems - that stands up to the typhoon winds of a flash mob, a Slashdotting, or a link on Reddit. Take a hard look at software that failed the test and find ways to make sure your software survives. To skip the pain and get the experience...get this book.




Designing for Sustainability


Book Description

Pixels use electricity, and a lot of it. If the Internet were a country, it would be the sixth largest in terms of electricity use. That’s because today’s average web page has surpassed two megabytes in size, leading to slow load times, frustrated users, and a lot of wasted energy. With this practical guide, your web design team will learn how to apply sustainability principles for creating speedy, user-friendly, and energy-efficient digital products and services. Author Tim Frick introduces a web design framework that focuses on four key areas where these principles can make a difference: content strategy, performance optimization, design and user experience, and green hosting. You’ll discover how to provide users with a streamlined experience, while reducing the environmental impact of your products and services. Learn why 90% of the data that ever existed was created in the last year Use sustainability principles to innovate, reduce waste, and function more efficiently Explore green hosting, sustainable business practices, and lean/agile workflows Put the right things in front of users at precisely the moment they need them—and nothing more Increase site search engine visibility, streamline user experience, and make streaming video more efficient Use Action Items to explore concepts outlined in each chapter




Handbook of Green Building Design and Construction


Book Description

Handbook of Green Building Design and Construction: LEED, BREEAM, and Green Globes, Second Edition directly addresses the needs of building professionals interested in the evolving principles, strategies, and concepts of green/sustainable design. Written in an easy to understand style, the book is updated to reflect new standards to LEED. In addition, readers will find sections that cover the new standards to BREEAM that involve new construction Infrastructure, data centers, warehouses, and existing buildings. - Provides vital information and penetrating insights into three of the top Green Building Codes and Standards applied Internationally - Includes the latest updates for complying with LEED v4 Practices and BREEAM - Presents case studies that draws on over 35 years of personal experience from across the world




Modern Software Engineering


Book Description

Improve Your Creativity, Effectiveness, and Ultimately, Your Code In Modern Software Engineering, continuous delivery pioneer David Farley helps software professionals think about their work more effectively, manage it more successfully, and genuinely improve the quality of their applications, their lives, and the lives of their colleagues. Writing for programmers, managers, and technical leads at all levels of experience, Farley illuminates durable principles at the heart of effective software development. He distills the discipline into two core exercises: learning and exploration and managing complexity. For each, he defines principles that can help you improve everything from your mindset to the quality of your code, and describes approaches proven to promote success. Farley's ideas and techniques cohere into a unified, scientific, and foundational approach to solving practical software development problems within realistic economic constraints. This general, durable, and pervasive approach to software engineering can help you solve problems you haven't encountered yet, using today's technologies and tomorrow's. It offers you deeper insight into what you do every day, helping you create better software, faster, with more pleasure and personal fulfillment. Clarify what you're trying to accomplish Choose your tools based on sensible criteria Organize work and systems to facilitate continuing incremental progress Evaluate your progress toward thriving systems, not just more "legacy code" Gain more value from experimentation and empiricism Stay in control as systems grow more complex Achieve rigor without too much rigidity Learn from history and experience Distinguish "good" new software development ideas from "bad" ones Register your book for convenient access to downloads, updates, and/or corrections as they become available. See inside book for details.