Software War Stories


Book Description

A comprehensive, practical book on software management that dispels real-world issues through relevant case studies Software managers inevitably will meet obstacles while trying to deliver quality products and provide value to customers, often with tight time restrictions. The result: Software War Stories. This book provides readers with practical advice on how to handle the many issues that can arise as a software project unfolds. It utilizes case studies that focus on what can be done to establish and meet reasonable expectations as they occur in government, industrial, and academic settings. The book also offers important discussions on both traditional and agile methods as well as lean development concepts. Software War Stories: Covers the basics of management as applied to situations ranging from agile projects to large IT projects with infrastructure problems Includes coverage of topics ranging from planning, estimating, and organizing to risk and opportunity management Uses twelve case studies to communicate lessons learned by the author in practice Offers end-of-chapter exercises, sample solutions, and a blog for providing updates and answers to readers' questions Software War Stories: Case Studies in Software Management mentors practitioners, software engineers, students and more, providing relevant situational examples encountered when managing software projects and organizations.




The Practice of Programming


Book Description

With the same insight and authority that made their book The Unix Programming Environment a classic, Brian Kernighan and Rob Pike have written The Practice of Programming to help make individual programmers more effective and productive. The practice of programming is more than just writing code. Programmers must also assess tradeoffs, choose among design alternatives, debug and test, improve performance, and maintain software written by themselves and others. At the same time, they must be concerned with issues like compatibility, robustness, and reliability, while meeting specifications. The Practice of Programming covers all these topics, and more. This book is full of practical advice and real-world examples in C, C++, Java, and a variety of special-purpose languages. It includes chapters on: debugging: finding bugs quickly and methodically testing: guaranteeing that software works correctly and reliably performance: making programs faster and more compact portability: ensuring that programs run everywhere without change design: balancing goals and constraints to decide which algorithms and data structures are best interfaces: using abstraction and information hiding to control the interactions between components style: writing code that works well and is a pleasure to read notation: choosing languages and tools that let the machine do more of the work Kernighan and Pike have distilled years of experience writing programs, teaching, and working with other programmers to create this book. Anyone who writes software will profit from the principles and guidance in The Practice of Programming.




Software Runaways


Book Description

Introduction. Software runaway war stories. Software runaway remedies. Conclusions.




The Agile Samurai


Book Description

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: how to create plans and schedules your customer and your team can believe in what characteristics make a good agile team and how to form your own how to gather requirements in a fraction of the time using agile user stories what to do when you discover your schedule is wrong, and how to look like a pro correcting it how to execute fiercely by leveraging the power of agile software engineering practices 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.




More Joel on Software


Book Description

Joel, Apress, Blogs, and Blooks ...I was learning the hard way about how to be a publisher and probably spending way too much time looking at web sites and programming than I should have in response to that. Anyway, one day I came across this web site called , which was run by a guy with strong opinions and an unusual, clever writing style, along with a willingness to take on the conventional wisdom. In particular, he was writing this ongoing series about how bad most user interfaces were—mostly because programmers by and large knew, as Joel and I would say, using the same Yiddish–derived NYC vernacular that we both share, “bupkis” about what users really want. And I, like many, was hooked both by the series and the occasional random essay that Joel wrote. And then I had this epiphany: I'm a publisher, I like reading his stuff, why not turn it into a book?... Read the complete Foreword — Gary Cornell, Cofounder, Apress Since the release of the bestselling title Joel on Software in 2004, requests for a sequel have been relentless. So, we went back to the famed JoelonSoftware.com archives and pulled out a new batch of favorites, many of which have been downloaded over one million times. With Joel's newest book, More Joel on Software, you'll get an even better (not to mention updated) feast of Joel's opinions and impressions on software development, software design, running a software business, and so much more. This is a new selection of essays from the author's web site, http://www.joelonsoftware.com. Joel Spolsky started his weblog in March 2000 in order to offer his insights, based on years of experience, on how to improve the world of programming. This weblog has become infamous among the programming world, and is linked to more than 600 other web sites and translated into 30+ languages! Spolsky's extraordinary writing skills, technical knowledge, and caustic wit have made him a programming guru. With the success of Joel on Software, there has been a strong demand for additional gems and advice, and this book is the answer to those requests. Containing a collection of all–new articles from the original, More Joel on Software has even more of an edge than the original, and the tips for running a business or managing people have far broader application than the software industry. We feel it is safe to say that this is the most useful book you will buy this year.




Software Project Survival Guide


Book Description

How to be sure your first important project isnþt your last.




Software Mistakes and Tradeoffs


Book Description

Optimize the decisions that define your code by exploring the common mistakes and intentional tradeoffs made by expert developers. In Software Mistakes and Tradeoffs you will learn how to: Reason about your systems to make intuitive and better design decisions Understand consequences and how to balance tradeoffs Pick the right library for your problem Thoroughly analyze all of your service’s dependencies Understand delivery semantics and how they influence distributed architecture Design and execute performance tests to detect code hot paths and validate a system’s SLA Detect and optimize hot paths in your code to focus optimization efforts on root causes Decide on a suitable data model for date/time handling to avoid common (but subtle) mistakes Reason about compatibility and versioning to prevent unexpected problems for API clients Understand tight/loose coupling and how it influences coordination of work between teams Clarify requirements until they are precise, easily implemented, and easily tested Optimize your APIs for friendly user experience Code performance versus simplicity. Delivery speed versus duplication. Flexibility versus maintainability—every decision you make in software engineering involves balancing tradeoffs. In Software Mistakes and Tradeoffs you’ll learn from costly mistakes that Tomasz Lelek and Jon Skeet have encountered over their impressive careers. You’ll explore real-world scenarios where poor understanding of tradeoffs lead to major problems down the road, so you can pre-empt your own mistakes with a more thoughtful approach to decision making. Learn how code duplication impacts the coupling and evolution speed of your systems, and how simple-sounding requirements can have hidden nuances with respect to date and time information. Discover how to efficiently narrow your optimization scope according to 80/20 Pareto principles, and ensure consistency in your distributed systems. You’ll soon have built up the kind of knowledge base that only comes from years of experience. About the technology Every step in a software project involves making tradeoffs. When you’re balancing speed, security, cost, delivery time, features, and more, reasonable design choices may prove problematic in production. The expert insights and relatable war stories in this book will help you make good choices as you design and build applications. About the book Software Mistakes and Tradeoffs explores real-world scenarios where the wrong tradeoff decisions were made and illuminates what could have been done differently. In it, authors Tomasz Lelek and Jon Skeet share wisdom based on decades of software engineering experience, including some delightfully instructive mistakes. You’ll appreciate the specific tips and practical techniques that accompany each example, along with evergreen patterns that will change the way you approach your next projects. What's inside How to reason about your software systematically How to pick tools, libraries, and frameworks How tight and loose coupling affect team coordination Requirements that are precise, easy to implement, and easy to test About the reader For mid- and senior-level developers and architects who make decisions about software design and implementation. About the author Tomasz Lelek works daily with a wide range of production services, architectures, and JVM languages. A Google engineer and author of C# in Depth, Jon Skeet is famous for his many practical contributions to Stack Overflow.




The Success of Open Source


Book Description

Much of the innovative programming that powers the Internet, creates operating systems, and produces software is the result of "open source" code, that is, code that is freely distributed--as opposed to being kept secret--by those who write it. Leaving source code open has generated some of the most sophisticated developments in computer technology, including, most notably, Linux and Apache, which pose a significant challenge to Microsoft in the marketplace. As Steven Weber discusses, open source's success in a highly competitive industry has subverted many assumptions about how businesses are run, and how intellectual products are created and protected. Traditionally, intellectual property law has allowed companies to control knowledge and has guarded the rights of the innovator, at the expense of industry-wide cooperation. In turn, engineers of new software code are richly rewarded; but, as Weber shows, in spite of the conventional wisdom that innovation is driven by the promise of individual and corporate wealth, ensuring the free distribution of code among computer programmers can empower a more effective process for building intellectual products. In the case of Open Source, independent programmers--sometimes hundreds or thousands of them--make unpaid contributions to software that develops organically, through trial and error. Weber argues that the success of open source is not a freakish exception to economic principles. The open source community is guided by standards, rules, decisionmaking procedures, and sanctioning mechanisms. Weber explains the political and economic dynamics of this mysterious but important market development. Table of Contents: Preface 1. Property and the Problem of Software 2. The Early History of Open Source 3. What Is Open Source and How Does It Work? 4. A Maturing Model of Production 5. Explaining Open Source: Microfoundations 6. Explaining Open Source: Macro-Organization 7. Business Models and the Law 8. The Code That Changed the World? Notes Index Reviews of this book: In the world of open-source software, true believers can be a fervent bunch. Linux, for example, may act as a credo as well as an operating system. But there is much substance beyond zealotry, says Steven Weber, the author of The Success of Open Source...An open-source operating system offers its source code up to be played with, extended, debugged, and otherwise tweaked in an orgy of user collaboration. The author traces the roots of that ethos and process in the early years of computers...He also analyzes the interface between open source and the worlds of business and law, as well as wider issues in the clash between hierarchical structures and networks, a subject with relevance beyond the software industry to the war on terrorism. --Nina C. Ayoub, Chronicle of Higher Education Reviews of this book: A valuable new account of the [open-source software] movement. --Edward Rothstein, New York Times We can blindly continue to develop, reward, protect, and organize around knowledge assets on the comfortable assumption that their traditional property rights remain inviolate. Or we can listen to Steven Weber and begin to make our peace with the uncomfortable fact that the very foundations of our familiar "knowledge as property" world have irrevocably shifted. --Alan Kantrow, Chief Knowledge Officer, Monitor Group Ever since the invention of agriculture, human beings have had only three social-engineering tools for organizing any large-scale division of labor: markets (and the carrots of material benefits they offer), hierarchies (and the sticks of punishment they impose), and charisma (and the promises of rapture they offer). Now there is the possibility of a fourth mode of effective social organization--one that we perhaps see in embryo in the creation and maintenance of open-source software. My Berkeley colleague Steven Weber's book is a brilliant exploration of this fascinating topic. --J. Bradford DeLong, Department of Economics, University of California at Berkeley Steven Weber has produced a significant, insightful book that is both smart and important. The most impressive achievement of this volume is that Weber has spent the time to learn and think about the technological, sociological, business, and legal perspectives related to open source. The Success of Open Source is timely and more thought provoking than almost anything I've come across in the past several years. It deserves careful reading by a wide audience. --Jonathan Aronson, Annenberg School for Communication, University of Southern California




Coders at Work


Book Description

Peter Seibel interviews 15 of the most interesting computer programmers alive today in Coders at Work, offering a companion volume to Apress’s highly acclaimed best-seller Founders at Work by Jessica Livingston. As the words “at work” suggest, Peter Seibel focuses on how his interviewees tackle the day-to-day work of programming, while revealing much more, like how they became great programmers, how they recognize programming talent in others, and what kinds of problems they find most interesting. Hundreds of people have suggested names of programmers to interview on the Coders at Work web site: www.codersatwork.com. The complete list was 284 names. Having digested everyone’s feedback, we selected 15 folks who’ve been kind enough to agree to be interviewed: Frances Allen: Pioneer in optimizing compilers, first woman to win the Turing Award (2006) and first female IBM fellow Joe Armstrong: Inventor of Erlang Joshua Bloch: Author of the Java collections framework, now at Google Bernie Cosell: One of the main software guys behind the original ARPANET IMPs and a master debugger Douglas Crockford: JSON founder, JavaScript architect at Yahoo! L. Peter Deutsch: Author of Ghostscript, implementer of Smalltalk-80 at Xerox PARC and Lisp 1.5 on PDP-1 Brendan Eich: Inventor of JavaScript, CTO of the Mozilla Corporation Brad Fitzpatrick: Writer of LiveJournal, OpenID, memcached, and Perlbal Dan Ingalls: Smalltalk implementor and designer Simon Peyton Jones: Coinventor of Haskell and lead designer of Glasgow Haskell Compiler Donald Knuth: Author of The Art of Computer Programming and creator of TeX Peter Norvig: Director of Research at Google and author of the standard text on AI Guy Steele: Coinventor of Scheme and part of the Common Lisp Gang of Five, currently working on Fortress Ken Thompson: Inventor of UNIX Jamie Zawinski: Author of XEmacs and early Netscape/Mozilla hacker




Geek and Hacker Stories


Book Description

Geeks, hackers and gamers share a common ‘geek culture’, whose members are defined and define themselves mainly in terms of technology and rationality. The members of geek culture produce and circulate stories to express who they are and to explain and justify what they do. Geek storytelling draws on plots and themes from the wider social and cultural context in which geeks live. The author surveys many stories of heated exchanges and techno-tribal conflicts that date back to the earliest days of personal computing, which construct the “self” and the “enemy”, and express and debate a range of political positions. Geek and Hacker Stories will be of interest to students of digital social science and media studies. Both geeky and non-technical readers will find something of value in this account.