Retrospective on Freelancing/Consulting

Being a consultant is great, being a consultant working exclusively with Ruby is awesome, being a Ruby consultant using Agile methods on great projects with cool clients is just super-awesome. The English language doesn’t seem to have a word/expression defining this feeling without using the “f-word” (at least, there’s nothing I can think of right now) I have to say that I owe a lot to the Ruby community and especially the Rails core team. Without you/them, I wouldn’t be able to do what I do and I would certainly not have so much fun.

Enough blahblah, a retrospective wouldn’t be a retrospective if I wouldn’t look at ways to improve the process.

Looking at back on 2007, I’ll look at what I did good and where I could have done better.

communication wise, I think things worked out quite well.

Daily stand up

The daily stand up/scrum proved to be very efficient on all projects. it usually takes a short adaptation time on the clients side, but once everybody is on the same page, meetings are short and efficient.

Iterations

Clients adapted more or less well to the whole Iteration process. On some occasions, I ended up being in charge of managing iterations, confirming my suggestions with the client during our iteration planning. I wish I was able to get all my clients to fully understand and enjoy the process, but oh well, the reality is that some clients just want the work done and don’t care too much how you do it. In general iteration planning sessions went quite well, they really helped us defining priorities and manage the budget. However, I feel the need to bring more structure into these meetings.

Weekly Retrospectives

Retrospectives/demos could really be improved. I have to admit that I was not able to organize a single great retrospective with my clients. That’s one major draw back of working remotely and being a contractor. Since I would deploy few times a week, the weekly demo didn’t always made sense. I therefore decided to use Jing and create a weekly screencast of the iteration changes. This way my clients know exactly what was done and can test whenever they want. We still have our demos from time to time especially when major new features are implemented. In 2008, I really want to improve clients’ retrospective.

Tools

While lighthouse helped me keeping track of my iteration user stories, unfortunately, I noticed that clients got confused when using the same tool to report bugs and to manage iterations. I’ll still be using lighthouse for bug reports but or I will have to finish my agile project manager or I’ll use Josh Knowles’ of he finally releases his software ;)

Bdd/Rspec was a big winner in ‘07. People might argue about the real benefit of RSpec vs test unit. Well, I can only talk about my own experience, after using RSpec for a year, the way I write my applications totally changed. TDD certainly became a reality. Even my relationship with my clients changed. I now get my clients to write my tests, well, not exactly but almost. I get them to define the expected behaviors using the usual it..should..do syntax. I then just need to transpose my clients expectations in contextualized specs. once the iteration is over, I output a spec report that i give to my client. I never had so much fun writing tests!

One thing I need to focus on in 08: ajax & js tests!

Talking about JavaScript, I finally found a way to write Js and have fun. Lowpro totally changed my view of Js and I can’t wait to push things further.(my December talk on Unobtrusive Javascript should be online sometimes soon)

Talking about pushing things further, I need to see if I can totally dish svn and only use git + gitosis. if you didn’t check Git yet, go check on the awesome peepcode put together by topfunky.

Misc things that didn’t work that well:

  • unreliable subcontractors

  • hard to find designers

  • having to say no to so many cool projects (always a good problem to have though)

Various things that I enjoyed:

Major changes planned for 08:

  • pairing with another local developer complementing my skills.

  • better weekly retrospectives

  • tech lunch at least once a month

  • learn Erlang or another programming language

By Matt Aimonetti