The term "technical debt" was coined by Ward Cunningham. It describes the obligation that a development team incurs when it chooses a design or construction approach that is easy to implement in the short run but has a larger negative impact in the long run. Agilists provide their view point on what should be considered a technical debt and how it could be classified.
In a recent article entitled “Continued Delivery of High Values as Systems Age”, Chris Sterling discusses the concept of Software Debt – “Software debt accumulates when focus remains on immediate completion while neglecting changeability of the system over time.” Software Debt goes beyond technical debt an encompases a variety of aspects that impact on the ability to deliver value.
Ruby on Rails has been around for about 5 years and in those years developers have created a lot of applications. Many of those applications were created while learning Ruby and Ruby on Rails and may not have used the best practices but yet made it into production web sites. These web applications can be problematical but a new book focused on the solution is available.
Jaibeer Malik has posted an introduction of how to address and introduce code quality within a team. His series of posts may suite you if you are in a situation where you have to either learn more yourself or introduce these ideas to others. The series provides a brief overview of the topic and gives pointers in different directions of where to go to study more.
"Why in the world would we use two people to do the job of one?" This is often the initial reaction to people when first introduced to the idea of pair programming. In essence, they perceive pair programming as doubling the cost of writing any segment of code. Dave Nicollete offers some quantitive ideas to help show how pair programming can save money, not waste it.
Kent Beck suggests that on very short term projects, when you're trying to figure out if there is a viable concept, you might do less (even no) automated testing to help get off the ground quickly. This goes against all of the conventional wisdom surrounding TDD.
"Test-driven Development" and "Pair Programming" are two of the most widely known of agile practices, yet are still largely not being practiced by many agile teams. Often, people will cite being "too busy" to adopt such practices as TDD and pairing; in essence, implying that striving for high code quality will reduce productivity. Mike Hill explains how this logic is seriously flawed.
In this video recorded during QCon London 2008, Pete Goodliffe presents two Linux-based audio products with a complete different outcome, software design making the difference.
Is quality supposed to mean a lack of defects that are holding us back? Mike Bria, Lisa Crispin, James Bach and JB Rainsberger debate the meaning of quality and the limitations our current definition is placing on us.
Well-known agilist and TDD expert J.B. Rainsberger has begun a series of posts to explain why his experience has led him to the thought-provoking conclusion that "integration tests are a scam".
Elisabeth Hendrickson, A.K.A "testObsessed", presents a thought-provoking stance on triaging bugs in an agile project. She discusses her feelings that problems found during the iteration are not "bugs", that only the Product Owner has the right to call something "bug", and that a healthy agile team might likely have no need for a bug tracking system.
In this interview filmed during RubyFringe 2008, Luke Francl explains his position towards testing. While supporting unit testing, he thinks testing is not going to reveal all application defects. Development teams should practice code reviews and usability tests which are likely to discover bugs not visible though other methods.
In this talk from RubyFringe, Luke Francl asks: is developer-driven testing really the best way to find software defects? Or is the emphasis on testing and test coverage barking up the wrong tree?
Kent Beck, renowned co-father of XP, TDD, and JUnit itself, tells a story about tracking down a defect in a new JUnit feature, JUnitMax, with unit tests instead of a debugger. He explains a method shown to him by current JUnit lead developer, David Saff, where a high level unit test is recursively inlined until a super concise test is created down at the very root of the defect.
In this presentation held during Agile 2008, Alan Shalloway, CEO and founder of Net Objectives, presents the Lean software development principles and practices and how they can benefit to Agile practitioners.