background preloader

Managing software debt

Facebook Twitter

Engineering Blog: Push it! At Yelp, we push new code live every day. 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. Integration Yelp now uses Git for version control - we transitioned from Subversion a few months ago, but that’s a story for another blog post.

When we were smaller, coordinating requests for pushing changes was handled via email. Testing Yelp doesn’t employ a dedicated QA team. 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! Check out the demo video here. Print by James Shore 02 Sep, 2005 Ron Jeffries started an interesting topic on the XP mailing list. He said, "I think sometimes there's too much refactoring, and refactoring in the wrong places. ... 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 all of this to happen constantly, as naturally as typing, talking to your pair, writing tests, and running the build. Home → Blog | Permanent Link. Continuous Integration. I vividly remember one of my first sightings of a large software project. 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. Most projects done by my colleagues at ThoughtWorks, and by many others around the world, treat integration as a non-event.

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". Automate the Build. 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.

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.

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. With Fit we can finally close the loop. --Dave Thomas, coauthor of The Pragmatic Programmer --Andy Hunt, coauthor of The Pragmatic Programmer --Cem Kaner, Professor of Software Engineering, Florida Institute of Technology 1. FrontPage.