Creating a Software Engineering Culture


Book Description

This is the digital version of the printed book (Copyright © 1996). Written in a remarkably clear style, Creating a Software Engineering Culture presents a comprehensive approach to improving the quality and effectiveness of the software development process. In twenty chapters spread over six parts, Wiegers promotes the tactical changes required to support process improvement and high-quality software development. Throughout the text, Wiegers identifies scores of culture builders and culture killers, and he offers a wealth of references to resources for the software engineer, including seminars, conferences, publications, videos, and on-line information. With case studies on process improvement and software metrics programs and an entire part on action planning (called “What to Do on Monday”), this practical book guides the reader in applying the concepts to real life. Topics include software culture concepts, team behaviors, the five dimensions of a software project, recognizing achievements, optimizing customer involvement, the project champion model, tools for sharing the vision, requirements traceability matrices, the capability maturity model, action planning, testing, inspections, metrics-based project estimation, the cost of quality, and much more! Principles from Part 1 Never let your boss or your customer talk you into doing a bad job. People need to feel the work they do is appreciated. Ongoing education is every team member’s responsibility. Customer involvement is the most critical factor in software quality. Your greatest challenge is sharing the vision of the final product with the customer. Continual improvement of your software development process is both possible and essential. Written software development procedures can help build a shared culture of best practices. Quality is the top priority; long-term productivity is a natural consequence of high quality. Strive to have a peer, rather than a customer, find a defect. A key to software quality is to iterate many times on all development steps except coding: Do this once. Managing bug reports and change requests is essential to controlling quality and maintenance. If you measure what you do, you can learn to do it better. You can’t change everything at once. Identify those changes that will yield the greatest benefits, and begin to implement them next Monday. Do what makes sense; don’t resort to dogma.




Software Engineering at Google


Book Description

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




Creating a Software Engineering Culture Paperback


Book Description

This is the digital version of the printed book (Copyright (c) 1996). Written in a remarkably clear style, " Creating a Software Engineering Culture " presents a comprehensive approach to improving the quality and effectiveness of the software development process. In twenty chapters spread over six parts, Wiegers promotes the tactical changes required to support process improvement and high-quality software development. Throughout the text, Wiegers identifies scores of culture builders and culture killers, and he offers a wealth of references to resources for the software engineer, including seminars, conferences, publications, videos, and on-line information. With case studies on process improvement and software metrics programs and an entire part on action planning (called "What to Do on Monday"), this practical book guides the reader in applying the concepts to real life. Topics include software culture concepts, team behaviors, the five dimensions of a software project, recognizing achievements, optimizing customer involvement, the project champion model, tools for sharing the vision, requirements traceability matrices, the capability maturity model, action planning, testing, inspections, metrics-based project estimation, the cost of quality, and much more Principles from Part 1 Never let your boss or your customer talk you into doing a bad job. People need to feel the work they do is appreciated. Ongoing education is every team member's responsibility. Customer involvement is the most critical factor in software quality. Your greatest challenge is sharing the vision of the final product with the customer. Continual improvement of your software development process is both possible and essential. Written software development procedures can help build a shared culture of best practices. Quality is the top priority; long-term productivity is a natural consequence of high quality. Strive to have a peer, rather than a customer, find a defect. A key to software quality is to iterate many times on all development steps except coding: Do this once. Managing bug reports and change requests is essential to controlling quality and maintenance. If you measure what you do, you can learn to do it better. You can't change everything at once. Identify those changes that will yield the greatest benefits, and begin to implement them next Monday. Do what makes sense; don't resort to dogma.




Software Development Pearls


Book Description

Accelerate Your Pursuit of Software Excellence by Learning from Others' Hard-Won Experience "Karl is one of the most thoughtful software people I know. He has reflected deeply on the software development irritants he has encountered over his career, and this book contains 60 of his most valuable responses." -- From the Foreword by Steve McConnell, Construx Software and author of Code Complete "Wouldn't it be great to gain a lifetime's experience without having to pay for the inevitable errors of your own experience? Karl Wiegers is well versed in the best techniques of business analysis, software engineering, and project management. You'll gain concise but important insights into how to recover from setbacks as well as how to avoid them in the first place." --Meilir Page-Jones, Senior Business Analyst, Wayland Systems Inc. Experience is a powerful teacher, but it's also slow and painful. You can't afford to make every mistake yourself! Software Development Pearls helps you improve faster and bypass much of the pain by learning from others who already climbed the learning curves. Drawing on 25+ years helping software teams succeed, Karl Wiegers has crystallized 60 concise, practical lessons for all your projects, regardless of your role, industry, technology, or methodology. Wiegers's insights and specific recommendations cover six crucial elements of success: requirements, design, project management, culture and teamwork, quality, and process improvement. For each, Wiegers offers First Steps for reflecting on your own experiences before you start; detailed Lessons with core insights, real case studies, and actionable solutions; and Next Steps for planning adoption in your project, team, or organization. This is knowledge you weren't taught in college or boot camp. It can boost your performance as a developer, business analyst, quality professional, or manager. Clarify requirements to gain a shared vision and understanding of your real problem Create robust designs that implement the right functionality and quality attributes and can evolve Anticipate and avoid ubiquitous project management pitfalls Grow a culture in which behaviors actually align with what people claim to value Plan realistically for quality and build it in from the outset Use process improvement to achieve desired business results, not as an end in itself Choose your next steps to get full value from all these lessons Register your book for convenient access to downloads, updates, and/or corrections as they become available. See inside book for details.




Become an Effective Software Engineering Manager


Book Description

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.




Engineering Culture


Book Description

"Engineering Culture" is an award-winning ethnography of the engineering division of a large American high-tech corporation. Now, this influential book - which has been translated into Japanese, Italian and Hebrew - has been revised to bring it up to date. In "Engineering Culture", Gideon Kunda offers a critical analysis of an American company's well-known and widely emulated "corporate culture." Kunda uses detailed descriptions of everyday interactions and rituals in which the culture is brought to life, excerpts from in-depth interviews and a wide variety of corporate texts to vividly portray managerial attempts to design and impose the culture and the ways in which it is experienced by members of the organization. The company's management, Kunda reveals, uses a variety of methods to promulgate what it claims is a non-authoritarian, informal, and flexible work environment that enhances and rewards individual commitment, initiative, and creativity while promoting personal growth. The author demonstrates, however, that these pervasive efforts mask an elaborate and subtle form of normative control in which the members' minds and hearts become the target of corporate influence. Kunda carefully dissects the impact this form of control has on employees' work behavior and on their sense of self. In the conclusion written especially for this edition, Kunda reviews the company's fortunes in the years that followed publication of the first edition, reevaluates the arguments in the book, and explores the relevance of corporate culture and its management today




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.




Creating Softwre Eng Cul


Book Description




Effective Software Development for Enterprise: Beyond DDD, Software Architecture, and XP


Book Description

A book about building high-quality software solutions via engineering excellence, software architecture, and leadership best practices. * * * "This book is a must-read for both technical and non-technical readers: software engineers, architects, managers and even top-level executives. It will give you the tools you need to become an effective technology leader. The tools provided will apply whether your organization is focused on delivering software to external customers or has the need for internal solutions. The book has a no nonsense approach and provides concrete solutions to common obstacles to delivering a cost-effective and long-lived software solution." -- Dave Black, Solutions & Performance Architect, Black Box Solutions, Inc. * * * "I have been developing software for over 30 years, and based on that experience, I am confident that the modern comprehensive approach laid out in this book will work better than that in any environment I have seen to date. This is the book many of us have been waiting for. It is mostly based on Domain-Driven Design, which may seem counterintuitive to many at first, but the author astutely explains how it saves so much pain in the longer term, which thus maximizes ROI. It is highly relevant that the approach in this book is the product of the author's first-hand experience. There is nothing theoretical about it. It is entirely pragmatic. For example, it recognizes the purpose of profit. In fact, I found it to be more pragmatic than many other industry luminaries. All roles are covered, and in a way that is respectful to all of them. The first three sections are a must-read for non-technical team members, such as product owners. Its style and size make it a quick read with reference links to any deeper dives one may wish to make." -- Jim Hammond, Lead Developer, Kantar * * * "I have found this book to be an all-encompassing eye-opener about all-things software development, starting from requirements analysis through successful releases. As a technology leader, I think it is worth considering techniques demonstrated in the "Effective Software Development for Enterprise" in organizations that want to change and run engineering processes and teams in a more efficient manner that delivers business value and improves morale." -- Lasha Kochoradze, CTO at Nugios Technology * * * "I enjoyed reading the "Effective Software Development for Enterprise" because this is a unique book. Besides presenting techniques to implement Effective Software, the author tries to defeat the status quo and shift our mindset into a "what if" mode. This engraved passion and belief make the book a special one, which I would recommend to executives, architects, and other engineering leaders. I have seen and heard Tengiz succeed with the approaches he presents in this book. If he could do this, why can't anybody else?" -- Nugzar Nebieridze, Entrepreneur, Expert of Cybersecurity, Ex-CIO at Liberty Bank Georgia * * * "This book uncovers fundamental issues that are inherent to many large organizations. Take Agile teams as an example - they need to adapt to changes fast, but a confusing graph of dependencies makes it impossible to deliver features independently; how are they supposed to be agile then? Departments and groups are formed based on managerial preferences rather than the business problems that the company solves. Systems are built based on what is easy to develop rather than what is right to deliver. The "Effective Software Development for Enterprise" fearlessly exposes gaps in organizational structures, processes, and technical systems. Being an Agile practitioner for years, I think this publication is up-and-coming, and I look forward to seeing companies adopting these suggestions and forming more scalable teams, processes, and applications." -- Romana Stasiv, Agile Fellow




Building Great Software Engineering Teams


Book Description

WINNER of Computing Reviews 20th Annual Best Review in the category Management “Tyler’s book is concise, reasonable, and full of interesting practices, including some curious ones you might consider adopting yourself if you become a software engineering manager.” —Fernando Berzal, CR, 10/23/2015 “Josh Tyler crafts a concise, no-nonsense, intensely focused guide for building the workhouse of Silicon Valley—the high-functioning software team.” —Gordon Rios, Summer Book Recommendations from the Smartest People We Know—Summer 2016 Building Great Software Engineering Teams provides engineering leaders, startup founders, and CTOs concrete, industry-proven guidance and techniques for recruiting, hiring, and managing software engineers in a fast-paced, competitive environment. With so much at stake, the challenge of scaling up a team can be intimidating. Engineering leaders in growing companies of all sizes need to know how to find great candidates, create effective interviewing and hiring processes, bring out the best in people and their work, provide meaningful career development, learn to spot warning signs in their team, and manage their people for long-term success. Author Josh Tyler has spent nearly a decade building teams in high-growth startups, experimenting with every aspect of the task to see what works best. He draws on this experience to outline specific, detailed solutions augmented by instructive stories from his own experience. In this book you’ll learn how to build your team, starting with your first hire and continuing through the stages of development as you manage your team for growth and success. Organized to cover each step of the process in the order you’ll likely face them, and highlighted by stories of success and failure, it provides an easy-to-understand recipe for creating your high-powered engineering team.