MyCareerNetwork
MyCareerNetwork needed a partner to provide guidance on maintaining and expanding their software products for the HR industry.
Featured team member
Jeff is a graduate of Lewis University with an Accounting degree. After finding life in Accounting not as fulfilling as he hoped, he moved on to a position at Arthur Andersen as a software developer using COBOL and VSAM files. Eventually, Jeff advanced to more exciting technology before settling in as a Microsoft .NET developer for the past 10 years. He is certified in Microsoft technologies...
Full bio →Services we offer include…
- Custom software development
- Web applications
- Desktop applications
- Mobile applications
- Database applications
- Data warehouses
Developing as a Team
This post originally appeared on my blog, geekygulati.com. After checking it in with the folks, we agreed that it does represent us, and thus I am posting it here. With possible modifications.
In October, I started on my current project as a solo affair. In November, we went up to 2, and then shortly afterwards 3 developers, and we had to figure out how to work together effectively.
I’ve had some good experiences in the past working as a team, and some bad ones. I was eager to try to craft a good working experience, and with the help of my colleagues, I think we mostly succeeded. We just did an internal presentation on the subject, so now it feels right that I can blog about it.
We started collaborating on Campfire
At two people, I can communicate with my teammate over IM (if they’re in), or yell across the hall. Maybe try to maintain a wiki, and forget to do it. Very often, one person takes primary in client communication, and the other person takes secondary.
At three people, things get a bit different. Multi-person IM can be a pain. One primary and two secondaries leads to a lot more communication overhead for the primary.
Enter Campfire. http://campfirenow.com/
With Campfire, communication can be asynchronous – as long as everybody agrees to check the history of campfire to see what they missed. We can work on different schedules. (Its still more fun when we’re on at the same time).
Note:There are many alternatives to campfire; that’s just what we used. IRC is how we could have done it in the old days, although it would take some setup to get the history to save.
We centralized our communication with the client via Basecamp
This gave us:
I would recommend this even for a single person working on a project, because of the second bullet point.
Once again, I’m sure there are alternatives that could be used here; although I’m not sure which ones would provide a way to log customer responses with such ease, while presenting the questions in a format that they would easily understand: email.
We collaborated on Google Documents for Digesting Requirements
Google Docs is just what we had available to use at my company; One could also edit office documents in SkyDrive in a similar way. As long as you can see what everybody is doing in real time, this works.
We Used Planning Poker and Google Spreadsheets To Estimate
Beware, with multiple people, you will get a higher number. This is because those who are more sure and bid lower, give in to the folks who bid higher.
We started collaborating on Google Documents for Demo Notes
Our process involves a weekly demo to show the client where we are at. These demos were on Friday’s at 11am. Thus, usually on Thursday night (Depending on who got to a stopping point first), or on Friday morning, we would create a “Demo Notes” document
During the demo:
Soon after the demo:
After the demo:
If something was noted that we needed to take care of during the demo, we would add it as a “TODO: xxx” in the demo.When it was done, one could go back to those demo notes, and change it to “DONE: xxx”. (we didn’t all do this; maybe it was just me – but that’s the beauty of a live document, it can represent “now” rather than “at that time”).We started sharing administrative tasks
In a past team environment, I made the mistake of “volunteering” to be the only person who did administrative tasks, like merges, status updates, etc. I was “team lead”, after all, wasn’t I supposed to do this? In doing so, under the guise of “protecting” my teammates, I signed up for all kinds of pain.
In this incarnation, we’re going with the philosophy “Everybody is capable of, and willing to do, everything”.
The first part, “capable”, meaning:
The second part, “willing”, meaning:
So, we’ve ended up at this:
Additionally, we started doing automatic merges from the parent branch into our branch. At first, we tried a “weekly” approach to it – but that ended up being WAY too much pain in a week. So, if we hit that again, we might be doing a “its your turn today” round robin approach instead.
We started using Google Docs for Status Report Documents
The person saddled with the status report, would create the document, and look through our time tracking system / the commit log to see what people did, and take a first stab at the contents of the report.
Then, they would invite the rest of us in to the report. We would update our individual sections, and add a “sign off” at the bottom of the document.
Once the document had everybody’s sign off, it got sent.
There’s More To Learn
Even with all of the above awesomeness, we have room to grow. My teammates will probably either groan or cackle with glee when they read this, but here’s what I’m thinking:
The underlying thing is that we were willing to do what was necessary to have a good team working environment, and we did it. And for that, I am grateful.