background preloader

Managing software debt

Facebook Twitter

Engineering Blog: Push it! At Yelp, we push new code live every day.

Engineering Blog: Push it!

Pushing daily allows us to quickly prototype new features and squash bugs in a proactive manner. Because we aim to deploy new code so often, we're always looking for ways to make the process efficient and painless. There are four main stages to the Yelp push process: code review, integration, testing, and finally, live deployment. Each step is important, and there are ways to maximize the efficiency of all of them. Code Review This first stage of the push process happens before a push request is even made: all code destined for the live site is subject to a full review by at least one other developer. We use the excellent open-source Review Board to simplify the process. Forrester on Managing Technical Debt « The Agile Executive. Untitled. Merciless Refactoring. Home → Blog → Merciless-Refactoring Let's Code: Test-Driven JavaScript, my new screencast series on rigorous, professional JavaScript development, is now available!

Merciless Refactoring

Check out the demo video here. Print by James Shore 02 Sep, 2005 Ron Jeffries started an interesting topic on the XP mailing list. I thought this was a great topic. Here are the most common refactoring problems I see with XP teams: Teams that don't refactor enough. These three issues aren't mutually exclusive and may reinforce each other. So what I would like to see is teams that do intraclass micro-refactorings every hour, do interclass refactorings multiple times per pair-week, and identify big-picture "architectural" refactorings every 2-12 months.

I'd like to see teams identify one or two (max) architectural refactorings that are based on (a) reflecting on problems in the existing design and (b) how to improve the existing design; and use that architectural direction to guide their intra- and inter-class refactorings. Continuous Integration. I vividly remember one of my first sightings of a large software project.

Continuous Integration

I was taking a summer internship at a large English electronics company. My manager, part of the QA group, gave me a tour of a site and we entered a huge depressing warehouse stacked full with cubes. I was told that this project had been in development for a couple of years and was currently integrating, and had been integrating for several months. My guide told me that nobody really knew how long it would take to finish integrating. From this I learned a common story of software projects: integration is a long and unpredictable process. But this needn't be the way. This contrast isn't the result of an expensive and complex tool. When I've described this practice to people, I commonly find two reactions: "it can't work (here)" and "doing it won't make much difference".

The term 'Continuous Integration' originated with the Extreme Programming development process, as one of its original twelve practices. Clean Code: A Handbook of Agile Software Craftsmanship (9780132350884): Robert C. Martin. Refactoring to Patterns. Refactoring Home. Spock - Project Hosting on Google Code. Home - pyccuracy - GitHub. Main Page - STIQ. Continuous Integration with Hudson - the book. Jenkins: The Definitive Guide Continuous Integration, or CI, is a cornerstone of modern software development best practices.

Continuous Integration with Hudson - the book

Jenkins, an Open Source Continuous Integration tool, is by far the most popular Continuous Integration tool on the market, and for good reason! It's intuitive user interface and powerful features make setting up a Continuous Integration service a real breeze. This book will teach you how to build a powerful and robust CI infrastructure using Jenkins. It is both a tutorial-style introduction and a comprehensive reference to implementing Continuous Integration and automating the build process with Jenkins. Jenkins: The Definitive Guide is an open source book, and is freely available online and in PDF form. Platinum Sponsors Gold Sponsors Also helping out... Become a Sponsor! About the author John Ferguson Smart is a consultant specializing in Enterprise Java, Web Development, and Open Source technologies, currently based in Wellington, New Zealand.

Continuous Integration: Improving Software Quality and Reducing Risk (9780321336385): Paul M. Duvall, Steve… Fit for Developing Software: Framework for Integrated Tests. "The unique thing about Fit for Developing Software is the way it addresses the interface between customers/testers/analysts and programmers.

Fit for Developing Software: Framework for Integrated Tests

All will find something in the book about how others wish to be effectively communicated with. A Fit book for programmers wouldn't make sense because the goal is to create a language for business-oriented team members. A Fit book just for businesspeople wouldn't make sense because the programmers have to be involved in creating that language. The result is a book that should appeal to a wide range of people whose shared goal is improving team communications.

" --Kent Beck, Three Rivers Institute "Even with the best approaches, there always seemed to be a gap between the software that was written and the software the user wanted. --Dave Thomas, coauthor of The Pragmatic Programmer --Andy Hunt, coauthor of The Pragmatic Programmer "Florida Tech requires software engineering students to take a course in programmer testing, which I teach. --Michael C. 1. FrontPage.