Agile development and low tech tools

I just recently started working on large software development project that the management team decided to use SCRUM over some of the existing waterfall process used throughout the rest of the organization. When I first heard the news I thought great now the team can focus on building working software rather than following processes that only make the leadership team feeling like they have control over the project. The problem is that the team is spending large amounts of their time keeping information up to date in VersionOne the tool that was chosen by the management team to manage this project. VersionOne is a very popular tool that many successful companies have standardized on for SCRUM or XP, but from my experience effective agile development teams always choose low tech tools for managing the development.

What do I mean by low tech tools? Low tech tools are tools that do not require the team to sit in front of the computer to use; simple things like big visible charts or information radiator and index cards. Why is this so important? Because the team already spends a large amount of time sitting in front of the computer developing and testing the software, why make them spend all their remaining time updating and managing user stories, burn down charts, and tasks chained to the that same machine.

Low tech tools have a way of connecting people with the ideas and concepts in a much more clear, tangible, and meaningful way. For example, a team can sit down and write all the user stories on index cards then with some large wall space tape the index cards to the wall to create a product backlog. From that the team can do sprint planning by simply moving cards from the backlog section of the wall to the next planned sprint; all with no dual core’s required!

In a large organization or working with some remote team members the low tech way can be difficult and the organization may require that the planning be documented in a more formal project management or tacking tool. To address this have the PM on the team be responsible for keeping the low tech tools in sync with the high tech tools. They are the ones that need to communicate the status of the project to many different types of stakeholders so it makes the most sense for them to manage the communication; and leave the team to focusing on the code…


How to build a product

  1. Developers, product management, and customers brainstorm ideas.

    What problem are we trying to solve?
    What market opportunity are we trying to meet?

  2. Developers & product management write the core user stories.
  3. Developers build an end-to-end web site skeleton with mocks to any external systems.
  4. Developers spec out the core web site API.
  5. Developers and product management iterate over the web site skeleton adding the core user stories.
  6. Partnering with the customer; developers and product management push the product to market as quickly as possible.
  7. From customer feedback developers and product management enhance, rewrite, or create new user stories and apply those stories back into the web site.
  8. Repeat 1-7

Meetings

It seems that in all my years of software development every company I work at seems to feel the need to pull people off of real work to have a meeting. Where they want to discuss some useless topic that just makes managers feel like the team is being productive by communicating status or issues. So what are good guidelines for meetings? Should we be having meetings? Here are my 3 golden rules:

  1. Meetings should never be scheduled; you should strive to create an environment where meetings just happen. How do you do this? Create open development environments where there are no offices or cubicles just groups of desks with lots of couches and whiteboards. In this environments meetings become organic and happen only when people need to talk.
  2. You should never have meetings to communicate status; that is why you use wiki’s and bug tracking tools. People who want status should just pull the status from those tools. It does not matter if you are standing up while you are giving status in a meeting or you call it agile. Status or issues should be an asynchronous activity where the people who need to know should be pulling those from the team, not slowing them down with a synchronous meeting.
  3. You should only have meetings for productive things like brainstorming new ideas, doing use cases, group design, discussing code, or getting the team together for drinking beer.

Erlang

I added another articles section for my other love language Erlang.

The first article is just a quick intro into this cool and powerful language, I will be sharing more soon..

http://carlosgabaldon.com/erlang/hello-erlang/


Why working in a large org sucks

Great quote by Paul Graham which explains why working in a large software development organization sucks.

..we can get a portrait of the “normal” world. It’s populated by people who talk a lot with one another as they work slowly but harmoniously on conservative, expensive projects whose destinations are decided in advance, and who carefully adjust their manner to reflect their position in the hierarchy.

http://www.paulgraham.com/kate.html


My interview by Dmitry Belitsky

I recently did another interview by Dmitry Belitsky on “How to become successful rubyist”. Dmitry is an up an coming web developer who put together a great set of interviews with several top Ruby hackers.

http://belitsky.info/freelance/carlos-gabaldon/


My Interview on RubyLearning blog

I recently had the pleasure of being interviewed by Satish Talim for his RubyLearning Blog on his mini series – “How do I learn and master Sinatra?” – by top Rubyists using Sinatra.

The interview series provides insight and commentary from notable Sinatra developers, with the goal of facilitating and providing answers to the questions Ruby beginners face on how to learn and master Sinatra.

Satish Talim is a programmer, author, trainer, and speaker. A recognized expert in the field of software development with over 30+ years of I.T. experience, Satish has consulted and trained teams at various companies in India and the US.

http://rubylearning.com/blog/2009/07/21/carlos-gabaldon-how-do-i-learn-and-master-sinatra/


Sinatra rake tasks

Since I have been playing around with Sinatra again, I decided that what Sinatra needs is some automation for some of the boring day to day tasks. So I created a GitHub bucket to dump my Rake tasks. I only have 1 task, to create a new project, but I have a lot new projects that I will be doing in Sinatra in the coming months, so I know there will be a cornucopia of tasks.

Sinatra-rake-tasks


More on Sinatra

I wrote another article on the cool Ruby web framework DSL Sinatra.

In my last article I wrote about the cool Ruby DSL web framework called Sinatra which is taking the Ruby world by storm. I decided that another “How to” article on some of Sintra’s other kick ass features was just what Frank would expect.
..

Read More..


Burned out

Over the past few months I have been feeling burned out with my career. I feel like I have lost focus on why I got into software in the first place. I am a hacker and a geek who loves things like learning new languages each year or geeking out with Order theory. But lately, I have been pulled more into the world of project management and endless meetings. I am spread so thin across so many different projects and initiatives that I spend my days planning and telling other people what to do, but very little time doing any real work myself. Of course planning and leading people is very important and if you “get it” you need to help other people “get it”, but for hard core engineers this can wear on you quickly. Every few years I tend to be get pulled out of engineering toward management, which I guess means someone thinks I am doing something right, but I have to find my way back.

So what to do? I need to get back to the basics and do some hard core hacking. What does that mean? I have been actively contributing to several open source projects over the past few years. Open source is very rewarding, but I think doing a large project in my first language (C) will remind me why I love programming.  Maybe write an operating system; my own BSD distro? Or maybe a new language?


Follow

Get every new post delivered to your Inbox.