Agile Home Improvement – Part 3

A Little More Planning

First, a little more planning…

As far as the length of the brackets, I wasn’t sure if my ceiling joists would line up with where I needed my shelves to be. Rather than take the time to figure it out, and potentially end up with smaller shelves due to where the joists were relative to the garage doors, I decided to be less efficient in my use of materials.

I decided to use larger brackets and hang them across several joists. This would allow me to position the shelf wherever I needed, rather than locking me into the location of the ceiling joists. In programming terms, I created loose coupling between the ceiling joists and the location of the shelf.

This would be more expensive. I would have to buy longer pieces of angle iron to bridge the gap between the joists, but it gave me two key advantages. First, I didn’t have to determine up front exactly where the shelves would hang. It reduced up front planning and allowed me to defer key decisions. Second, I didn’t have to reassess the size of the shelves relative to where I could hang the ceiling brackets.

I had to remind myself that my goal was a set of 2 foot by 4 foot shelves over each garage door. That was the only goal that mattered. Optimizing to use less materials (optimizing to reduce cost) was going to take me away from my goal. I also realized a secondary goal: To finish the project quickly. Because I was doing this on my own time and I highly value my time, I was willing to make some concessions on cost.

In terms of the iron triangle, I fixed my scope, wanted to control my schedule and was willing to give a bit on cost. Which, now that I think about it is not the way most software projects run…

Continue reading “Agile Home Improvement – Part 3”

Agile Home Improvement – Part 2

Do Your Homework (Research Spike)

Ok, so I was inspired, but wasn’t ready to build anything just yet. I started where most research starts these days–the internet. Specifically Google and Amazon. I was looking for a Commercial Off-The-Shelf (COTS) solution to my problem. Basically, something I could buy and it would just work. This is almost always a great place to start, but a difficult one for some software teams to embrace.

Continue reading “Agile Home Improvement – Part 2”

Agile Home Improvement – Part 1

Begin with a clear goal

I started the project with a simple goal: Clean out the garage

Now that I’m done, I realize there is a better word for it than ‘clean’. I refactored my garage. From Wikipedia:

Code refactoring is the process of restructuring existing computer code — changing the factoring — without changing its external behavior. Refactoring improves nonfunctional attributes of the software. Advantages include improved code readability and reduced complexity to improve source code maintainability, and create a more expressive internal architecture or object model to improve extensibility.

I didn’t change its external behavior or its key ability-tos (storing things including 2 cars), but I reduced complexity, improved maintainability and made it more extensible (freed up or created more storage space).

The why

Over the years the garage had become disorganized, marginally usable and the cruft was visible wherever you looked. I’m sure you’ll find no relationship whatsoever to any applications or code you’ve worked on.

There were bugs. Literal bugs and a healthy ecosystem of black-widow spiders to eat the bugs. While I’m all in support of the circle of life, I prefer it to be on the outside, rather than the inside of my house.

Continue reading “Agile Home Improvement – Part 1”

Agile Home Improvement

Last week I built some hanging shelves in my garage. Midway through the process, I realized that it was an excellent opportunity to view the project through the lens of agile software development.

There were things I did that benefitted from what I’ve learned about agile development, and mistakes I made that could have been prevented if I’d been following agile principles properly. This article is an exploration of those ideas… and instructions for building shelves.

Bottom line up front (BLUF). If you want instructions for building hanging garage shelves, they are here. They are completely devoid of any discussion of agile development.

If you want to hear the story of building the shelves and how it relates to agile software development, read on.

Continue reading “Agile Home Improvement”