Dealing with technical debt

codeartisan: Jon Moore: Cracking down on technical debt:

Generally, as the folks with the technical ability to recognize it, it is the development team’s responsibility to try to avoid accruing technical debt while producing product. Failing that, it is their responsibility to recognize/document existing debt and to advocate for its removal. However, note that there are often symptoms of technical debt, such as those I’ve listed above for architectural debt, that can be recognized by non-technical folks too.

On the flip side, business folks / product owners need to be able to trade off short term wins that accrue technical debt vs. taking longer to produce a product with less debt. Communication with the tech team is of vital importance here; undoubtedly there will be times when a short-term win will be important (especially with a first-to-market situation), but it needs to be accompanied by a plan to eliminate the accrued debt. i.e. Treat your technical debt like credit card debt that should be paid down ASAP, and not as a long-term mortgage.

The interest on your technical debt is probably not tax-deductible.

Very much related to my earlier post about Agile gone wrong.

Michael Davis’s Inspirational Story and Turbo Pascal

Sip from the Firehose: Michael Davis: Memories of Turbo Pascal version 1.0:

At the time, I was an 18 year old high school dropout that had recently been incarcerated in the Lebanon Correctional Institute outside of Cincinnati, OH. The one saving grace of this facility was that the Quaker originated Wilmington College had a branch located within the walls of the prison.

Facing the possibility of a long sentence, I made probably the best decision of my life to that point. That decision was to get my GED and quickly get enrolled in college. It only took a few days of incarceration to realize that something in my life needed to change and getting an education seemed to be the best way to do it. In addition to the Burroughs B1990 system, there was a lab of several Apple II computers that were capable of running Turbo Pascal. After taking the prerequisite courses, my introduction to computer programming was Turbo Pascal.

Thinlet GUI Toolkit

Mat Schaffer pointed to this library earlier, and I experimented with it a while back for a personal project, building a desktop version of the Myers Briggs Temperament Sorter (I need to dig up the source code). The Thinlet library made it ridiculously easy to wire in a nice looking GUI to my app so I was able to concentrate on the quiz logic. I’d use it in projects if I was doing lightweight desktop Java applications.

I’m looking forward to Mat’s X-Plat strategy to take hold.

“Rescuing Scrum teams keeps me in business”

Oh boy, does this sound familiar.

James Shore, consultant, lays down just how bad it gets when you ‘go Agile’ and don’t do so correctly: The Decline and Fall of Agile:

Without continuous, incremental design, Scrum teams quickly dig themselves a gigantic hole of technical debt. Two or three years later, I get a call–or one of my colleagues does. “Changes take too long and cost too much!” I hear. “Teach us about test-driven development, or pairing, or acceptance testing!” By that time, fixing the real problems requires paying back a lot of technical debt, and could take years.

What frustrates me the most is that this situation is entirely avoidable.

…There are a lot of teams right now failing with Agile. These teams are working in short cycles. The increased planning frequency has given them more control over their work and they’re discovering and fixing some problems. They feel good, and they really are seeing more success than they were before.

But they aren’t working in shared workspaces or emphasizing high-bandwidth communication. They’re don’t have on-site customers or work in cross-functional teams. They don’t even finish all of their stories by the end of each Sprint, let alone deliver releasable software, and they certainly don’t use good engineering practices.

These teams say they’re Agile, but they’re just planning (and replanning) frequently. Short cycles and the ability to re-plan are the benefit that Agile gives you. It’s the reward, not the method. These psuedo-Agile teams are having dessert every night and skipping their vegetables. By leaving out all the other stuff–the stuff that’s really Agile–they’re setting themselves up for rotten teeth, an oversized waistline, and ultimate failure. They feel good now, but it won’t last.

Election Result Maps

Data visualizations can sometimes spur us into contemplative directions. Sometimes they can put us to sleep. These are some of the more interesting election visualizations I’ve come across:

Mark Newman, Department of Physics and Center for the Study of Complex Systems, University of Michigan: Election Maps

Robert J. Vanderbei, Professor and Chair, Operations Research and Financial Engineering, Princeton: Purple America

What the electoral map would look like if decided by 18-29 year olds

NYTimes: Election Results 2008

Interesting Analysis

David Kuhn: Politico: That huge voter turnout? Didn’t happen: “Between 60.7 percent and 61.7 percent of the 208.3 million eligible voters cast ballots this year, compared with 60.6 percent of those eligible in 2004”

Andrew Sullivan: He Saw It Coming: McCain/Palin ran a post-modern campaign (unlike Sullivan, I think it almost worked).

CNN: Number of votes cast set record, but voter turnout percentage didn’t

Associated Press: No hidden white bias seen in presidential race

CSMonitor: Obama made inroads with religious vote

NYTimes: This American Moment – The Surprises: Guess who Joe the Plumber voted for?

Salon.com: How Obama won, by the numbers: “The 18-to-29-year-old cohort supported Obama by a 2-to-1 margin (66-32), and while it is too soon to gauge precise turnout measures, their numbers clearly grew.”

Salon.com: Obama and the dawn of the Fourth Republic

NYTimes: Dissecting the Changing Electorate

Vote swings in rich and poor countries

Red State, Blue State, Rich State, Poor State: Election 2008: what really happened

Interesting Tools:

A Beautiful WWW: 20 Useful Visualization Libraries

igraph Python library

physorg.com: Visualizing election polls

IBM’s Many Eyes