Archives for Java

Managing Software Debt presentation @ Agile Vancouver

On November 6th I presented an updated version of the Managing Software Debt talk at Agile Vancouver “Much Ado About Agile” conference. This is a link to the presentation deck: Managing Software Debt – Agile Vancouver (PDF) I was honored to present at this local conference and had a great time meeting up with old [...]

Defining the "Unit" in Unit Testing

“Hey, Ben. We just figured out a great way to manage test-driven development and good database design.”, said an enthusiastic developer using Extreme Programming (XP) practices on their project. “Our application is highly data-centric. Therefore, in the first iteration we design the database schema modifications and create tests to validate all of it’s implementation characteristics. [...]

Beat Cross-site Scripting Issue with StoryTestIQ

A few years ago I was privileged to be on a team with some excellent developers where I currently work, SolutionsIQ. One of whom saw the need to stabilize development on an incredibly unstable codebase with no tests. He came to the team with a proposed tool that he slapped together in his free time. [...]

Technical Debt Workshop – A Perspective

Last week I was invited to participate in a LAWST-style workshop on Technical Debt. I was honored to be there with such a great group of people from diverse industries and experiences. Preface: I am writing this blog entry for myself and therefore it may not be as useful to those reading. Also, the perspective [...]

The "Wright Model" for Describing Incremental Architecture

One of the most common questions in teaching and coaching agile processes to groups is: “How do we design our software while delivering iterations of potentially shippable product increments?” Scrum, an agile process that I teach about and coach organizations on implementation of, asks that each Sprint, analogous to an iteration, delivers a potentially shippable [...]

Running All Unit Tests When Saving a File in Eclipse

Introduction I am a strong proponent of Test-Driven Development (TDD) which has the mantra “write test, write code, refactor”. One of the most important parts of TDD is the ability to gain immediate feedback regarding the state of the code. After using TDD in many projects I have found that there are some potential areas [...]

Inferior Tracks Lead to Superior Locomotives

Larry L. Peterson, professor and Chair of Computer Science, Princeton University, gave a great talk on PlanetLab: Evolution vs. Intelligent Design which I believe is interesting to people involved in emerging architecture. One of the Agile Manifesto for Software Development’s principles is: The best architectures, requirements, and designs emerge from self-organizing teams. Remember this principle [...]

Managing Unit and Acceptance Tests Effectively

In my experience, the use of Test-Driven Development (TDD) and automated acceptance testing on software projects makes for a powerful tool for flexible code and architectural management. When coaching teams on the use of TDD and acceptance testing there are some foundational test management techniques which I believe are essential for successful adoption. As a [...]

Test-Driven Development on Legacy Code

After working on many projects in which I was not the original developer, configurator, tester, or whipping boy, I have come to some realizations regarding legacy system maintenance. Since this is merely a blog entry, I am not feeling inclined as of yet to map out legacy system maintenance techniques for a large set of [...]

Role of the Bit Flipper

What is the role of the “bit flipper” nowadays? We all have friends who seem to be the best programmer you have ever seen. You may even be that person who everybody says is a great programmer. It‘s the programmer who can come up with elegant algorithms to solve any issue. Squeezes out the most [...]