Saturday, December 29, 2012

Everything should be everyone's business!

When working with more than 2-3 developers on a big project, you can't always be aware of everything that happens around you... Never the less, you should and even need to!

What am I talking about ?
You should be aware of everything that happens on your project - from open bugs, to the build server status, the site/product performance, to new implemented features, errors in the log, and the list goes on...
Every aspect of YOUR project should interest on a daily basis!

Why is this hard ?
When working with many people, on a big project, you can't really go over all the commits, the new features, always check the performance graphs, search the logs for errors and QA the site for new bugs.

How is this done ?
Sometimes all you need to do, is make things a little easier for everyone. What do I mean by that ? I mean that sometimes you need to give developers the right tools to view the logs, sometimes you need to put up a new monitor in your company hallway and display the performance graphs for people to see each time they go for a coffee break and sometimes you need to build a system that will send automatic emails to each developer that breaks something to get their attention...

A couple of things I am working on in my company to make things more transparent and 'in their face' :
- We have a custom built internal performance profiler that we use a lot. It looks like the mvc-mini-profiler (built by StackOverflow) and is displayed when adding a secret cookie.
This wasn't good enough for me! I wanted everyone to be seeing this all the time. So, I modified it to be displayed for everyone coming from inside our office networks.Numbers are pixelated intentionally

- Performance graphs... We heavily use graphite, and store there TONS of data... The problem is, it's sometimes hard to look for exactly what you need, and it's not that comfortable. This also is unacceptable... What I did was create a really nice looking dashboard with very little information, but just enough to see what's important, and soon we're going to hang it in the hallway for everyone to see all the time!

Numbers are pixelated intentionally

- Bugs... Sometimes people run into them, but it's not that easy taking care of them... I created a button that will be rendered on our site, for everyone within the network, and clicking on it will allow you to report a bug really easily - you just need to enter a title for the bug, and the system will add all other relevant information (a screenshot, what version, which user, errors previously caught, and so on). This will automatically open a bug in our bug system.

- Logs - We have an internal utility that reads the log every day and checks for the top erroneous components. I decided I needed to put this up on another monitor in the hallway, and next to each component I put the name of the person responsible for everyone to see! :) No one wants to be on this monitor, and therefore this is bound to work...

I strongly believe in this whole philosophy, and won't quit until the cleaning lady will be calling me in the morning to tell me that the monitor is red! :)