How could we have the high performance team for a software development project at getting started? It may take long time to get a team having the same mindset and working together with high performance but with the good setup at the beginning, time would be shorter. Five things below, in my opinion, are simple but very important that every software development team should do.
0. Working method
Very important. Remember that in the first step, we don’t have a team that targets the same goal, we have a group of people that works in the same project even though in a sustainable organization where the working method or process is defined. So what we need to form a team?
Mission & vision: No one works without the vision and objective. A group needs it at least to become a team. It’s a direction for team and also a glue to get people worked together.
Working agreement: What team commit to do? I try my best to complete the day job or I just want to work at most 6 hours daily no matter the result is? It must be agreed in team.
Write down mission & vision and working agreement in a eye-catching place to remind everyone in team. Before all, let’s discussed and agreed in team, and get everyone signed off.
Choose a working method: Everyone in team has to understand how they work together. It’s good to pick a “standard” method or framework to start with such as Scrum, Kanban… in order to help people more easily to understand and follow. In case of people don’t understand it right, make sure they get trained to reach the level of start.
Working method (or process) must be visualized
1. Team collaboration tools
When working method is set, team needs a tool for collaboration. If team chooses Scrum or Kanban, team board is more than important. It can be the physical board or online board such as Jira, Trello, Pivotal Tracker…
Choose a single official toolset. A lot of good communication tools today makes team difficult to decide. Slack or Skype? Google Docs or Zoho?… Then team never feels happy enough with one tool, Slack is good but Skype has better video call quality. Choose both? No. Let choose a single official tool where every main information, decision, solution… are placed there. Extra discussion can be worked over others that the contributors feel comfortable with. It helps people simply find the decision.
Choose a single official tool where every main information, decision, solution… are placed there
2. Source code version control
I don’t need to explain more about the needs of source code version control. Choose one that all team members are familiar with, otherwise it will become the headache by overhead. Git is the best one today. But Git is so uncomfortable without diff tools. Meld, Kdiff3, WinMerge… are the good tools that work for most of Git clients.
Choose which?
3. IDE & team environment settings
IDE / text editor is a sword to kill dragons. Find the best one. It’s so easy to have an agreement in team if the project is working on .NET, iOS… with the vendor tool. There’s a bit harder with the language or technology that can be done by many choices. TextMate or Atom, Sublime or InteliJ for PHP? Which is the best for Android, Eclipse or Android Studio?
Once team chooses a single IDE, set the team environment settings and make sure to manage it in the right place, good one usually is source code repository. Keeping team environment settings reduce the conflict issues that usually be the overhead. It also helps for continuous integration and continuous delivery.
Environment shouldn’t be a place for personal creativity at beginning. Do it later.
4. Continuous delivery pipeline
Agile is becoming standard working method today, then continuous delivery and continuous deployment is crucial. The age of continuous integration was passed by, team needs more powerful toolset that’s near production or staging. That’s why DevOps is becoming important in developing software service.
That’s a pattern for setting up a software project that should be longer than 2 months within more-than-3-persons team. It’s very important with the initial setup with a specific method or toolset the team uses – it becomes material for improvement after each iteration. Lacking of agreement on a single method or toolset get the road harder to success.