Wow, I just looked at the latest post and it dates back from June 24th! That’s what I get from slacking up on writing this blog. Anyway, on to the post’s subject.
I’ve spent the last week renovating my household. Had a makeover done at my lil boy’s bedroom, gave him one of the pieces that comprised my home office cabinet, painted both the office and his bedroom, and changed everything light related.
What does have to do with agile you may be asking yourself. Well, we’ve done this in two phases, one using agile methods and one not. Yes, my wife thinks I’m nuts for applying agile to a home rebuild, but still it has worked. And also it has exposed how bad non-iterative work can be.
Phase 1 consisted of moving the closet into the boy’s room. The original closet is made of 3 pieces, a 2 door cabinet, a corner cabinet with 1 door, and a 3 door cabinet. It was all custom made by a woodworker for us, so they were intended to be together from day 1. The part we wanted to move was the 3 door cabinet.
We went with a non iterative aproach and moved everything that was inside the closet to the living room inside of boxes, and unassembled the closet. Yes, we had our roadblocks, the lower part of the closed was attached by a glued piece of wood to the corner cabinet, and we only figured how it was done after we moved a 200 pound closet a bit further from the wall, which took us 1 hour to accomplish. It also took another huge amount of time to saw it off cos I don’t have an automatic saw. Also the left side of the closet was a sheet of wood shared with the corner closet, and I had to buy some replacement wood board to fill in.
After one day worth of work, we had the closet reassembled, but we intended on painting it too, so the ceiling part was left off, as it was too close to the room’s ceiling and would “lock” the cabinet to the room.
So far so good, but what’s wrong with all that? We were NOT done. Yes, the closet was in place, the main task was done, but we didn’t do anything about whatever stuff we took out of the closet. That’s work in progress for you. According to lean/agile, work in progress is worse than no work, as you’ve already spent effort on it, but didn’t get any value.
Needless to say that stuff stayed in the living room for a week before we even touched it, and hell was installed. We had to send over the boy to my in-laws as there was too much of a mess, and our morale was down all the way because we could barely walk inside the house.
That’s when changing requirements set in. Wife decided we should also paint the home office, and the boy’s room, along with the closet moving. Instead of focusing of finishing the task we had already began, we started a brand new task, thinking the previous one was complete. That’s what I’m saying we did the non-agile way. We moved everything out of our son’s room and into the living room. TA-DA twice as much mess, but now we could paint it. We even moved and deassembled the closet, that was already assembled from the previous task, so we even had our previous work undone.
So we painted the room and, once again, didn’t move the stuff back in. The excuse for that was we had to paint the closet too, and paint would spill on his furniture. Obviously, that could’ve been avoided by just covering up his furniture, but we needed an excuse since getting the stuff back in was hard. Work in progress #2.
Then we went on and assembled the closet. Turns out it was harder this time, cos we had the new wood board, and also because it was unassembled twice already. We spent twice as much time assembling it than we previously had. And the painting session went on, and while we waited for the paint to dry, we didn’t catch up the slack, instead we focused on the current task. No refactoring.
Once it was all painted and dry, we moved the closet to its proper place and assembled the ceiling. Doors were also a pain, and it took us 4 hours, twice as much than expected. After everything was set into place, we once more didn’t move stuff back in. So we had 2 unfinished tasks, and one finished.
We still hadn’t realized the work in progress we had in hands, since we considered those tasks done, so we moved on to the next one, painting our home office. That’s when agile kicked in. Since we were on such a stress from all the mess we had created ourselves, I decided to hit the brakes and plan a bit at a time. No what-ifs, we just went with YAGNI (You Aren’t Gonna Need It).
What have we done different this time? Well a lot of stuff. We shifted from BDUF when for example taping walls. Instead of taping the whole room we just taped the wall we were painting at the moment. We also did first the task that required most of preparation (taping, scraping etc), painting the 3 walls that were gonna be white, and the floor-ceiling joint, and the ceiling. It also allowed us not to tape the other wall that was gonna be painted red, since it was gonna be painted anyway.
We also didn’t move ANY furniture out this way cos we could just mangle it out of the way, one wall at a time. It was only covered by a plastic sheet. So not only we had an easier job in hands, we also created less of an integration mess. The painting was done in half the time it took us to paint the bedroom, since we didn’t have to be as careful with the other colour wall, and since we didn’t spend any time unassembling and moving around furniture.
After it was all said and done we had one big task ahead of us, get stuff out of the living room, and make it fit into the corner closet alone. Intead of just planning a lot ahead, we went one box at a time and started putting stuff into place iteratively. With every box that went down, another 2 were filled with stuff to donate or sell, and so we went with most of the boxes. An unexpected activity showed up, which would be selling and donating stuff.
I had my brother in-law assist my wife with the boxes while I went down to the stores and sold all the stuff, and to places where we donated toys, clothes and shoes. It was done in no time, and belive me, that was one tough job, to put everything back into place.
After spending 8 days with the house turned into one big mess, we finally had everything into place. We had a lot of fights out of the blue due to the stress our work in progress had generated, but we managed to solve it all through refactoring one box at a time.
Wife didn’t like the paint job too much, since she didn’t help with it, just let me and brother in-law do it. We had her check every coat of paint we did, but still she didn’t like the end result. Serves to show that if the project owner works along with the team, the sense of accomplishment will increase, and the results are more likely to please.
So to wrap it all up, here’s the lessons I learned:
- Work in Progress is worse than no work at all. It only generates stress and doesn’t deliver value
- Don’t plan too much, it’s gonna change anyway.
- Don’t do anything ahead of time, It’s gonna change anyway.
- Break up big tasks into small ones, and get them actually done
- Don’t try to cover yourself up with excuses, face it.
- When you have a big problem, iterate over it and solve it one piece at a time.
- Have your customer involved and working on the project as much as possible, or you can end up with a sub-par piece of work.
That’s all for today, thanks for reading.