It might sound trite, but the importance of communication in the success of a software project cannot be overemphasised. If given the choice between over communicating and under communicating, I'll choose going overboard every time.
There are many tools and processes to help communication levels remain high, both within the project team and with clients. This post I will talk about three of the most important:
- Regular quick, project meetings;
- Pivotal Tracker and;
- Real Time Chat.
Regular Quick Meetings
At reInteractive we use Agile Methodologies. The Agile concepts can be interpreted and applied in many ways, but a lot of it relates to shortening the feedback loop - formalising the processes that facilitate communication and enact the appropriate response. An important part of this is regular, to-the-point meetings. It is good practice to have a daily stand-up and a weekly Sprint Planning meeting:
- Stand-ups are kept quick (ideally 5min or less) and to the point. Each member of the team reports on what they achieved the day before and what they hope to achieve during the upcoming day. It is also an opportunity to report issues that are blocking progress, ask quick questions etc.
- Sprint Planning is a longer meeting (15-30mins) were we can review the week past, demonstrate any deliverables from the sprint (if appropriate) and talk about what we hope to achieve during the week (Sprint) ahead and like the Stand-up discuss blockers, questions etc.
By meeting regularly with the whole team (client stakeholders included), each team member is given awareness of what the rest of the team is up to, increasing trust and accountability within the team. It also increases the likelihood that blocking issues will be raised in a timely manner, leading to less time wasted.
It is preferable to hold these meetings at the start of the day, giving the team a chance to “reset”. Then the team can operate for the rest of the day with a common grounding. Having the meetings at the start of the day also allows developers to get into the “zone”, and not be distracted by thoughts of impending meetings. Sprint meetings should be held at the start of the week for the same reasons.
Standups should be kept short and sweet so as not to become a huge time-sink. If anything requires in-depth discussions, involved team members can agree to meet to discuss things after the standup.
Centralised Project/Story tracking tools
When building complex software systems, it is important to have a “single point of truth” for a project's requirements. It is important to recognise that project requirements can change over time. This will happen through conversations, emails and chat. As they change, if you do not have a definitive source of information on the requirements, confusion will reign.
Centralised project/story tracking tools are designed to solve this problem. There are many good tools available for this, at reInteractive we have settled on Pivotal Tracker.
Pivotal Tracker is a place to store as much of the project knowledge as possible. It allows for recording of granular features, bugs and tasks (stories) that need to be completed for the project to be completed. Ideally, when each Pivotal Tracker story is delivered/accepted, the project is finished.
Each item/story in Pivotal Tracker can be commented upon to ask questions or make clarifications. When comments are made, users that are watching an item will be notified via email, keeping them informed and allowing them to respond. By communicating about features/bugs within the tracking tool, it makes it much easier to find the information all in one place, instead of having to refer to a spaghetti of email threads, text documents, spreadsheets and chat logs.
Pivotal Tracker also communicates the state of the project. As stories are started, finished and delivered, their status will change. This will allow anyone involved in the project to log in and see what has been delivered, what is currently being worked on and what work remains. Pivotal Tracker allows stakeholders to mark stories as accepted or rejected*, depending on whether delivered functionality meets the agreed upon requirements.
*It is worth noting that people should be encouraged to reject stories that don't meet the requirements. Whilst "rejection" sounds harsh, it is in fact simply an indication that something is not ready to be delivered or needs some rework and not a judgement on the quality of someone's skills/efforts.
Real Time Chat
At reInteractive, we all work remotely, this brings many benefits like quieter, less interruptive working environments which are so important for knowledge work. However, being remotely located does mean that real time communication is not simply a matter of turning to the person next to you.
A good (if not better) substitute for this type of communication is real-time chatroom software. This tool allows quick, impromptu conversations with colleagues even when thousands of kilometers apart. There are many different tools available for real time chat rooms, after trying the most popular of these we have found FlowDock meets our needs the best* as it supports threaded conversations, and 1:1 discussions and all the standard features like @mentions, file attachments. By supporting these features it allows us to keep all discussion in the one tool, instead of having to switch to something like Skype for 1:1 conversations. This helps to limit the scattering of project information.
When starting a new project, it is easy to create a couple of chat-rooms specifically for a project. One for internal conversations and one for client conversations is a good option. At the start of each day, each project team member will join the project rooms, and any discussions about the project can take place. Having dedicated chat rooms for each project cuts down on cross chatter and makes it easier to find discussions about a particular project. It can also be good for company culture to have a "lounge" room where people can chat about non project topics and posting of funny cat pictures. Having a lounge also helps to keep project rooms clear of non-project discussions.
Keeping the majority of “back and forth” communication in the one spot has the benefit of allowing other team get up to speed on discussions by reading through a single chat log. For this reason, real time chat can be beneficial to in-office teams as well as remote teams. It can also reduce distracting cubicle conversations, leading to greater developer productivity.
Individual team members can be alerted by @mentioning them. This will highlight the message to the user in the chat log, display a notification and sound a “ding” to get their attention. It is worth noting that even when everyone keeps a close eye on their chatrooms, it is good practice to get confirmation that your comments were received by the intended recipient, as the nature of these chatrooms is for comments to flow up the page and out of sight when busy. Comments can also get lost amongst the noise of other comments, so be sure to follow up on important communications.
These tools covers the 3 important aspects of managing complex software projects
- Informing each other about progress,
- Centralised tracking in information
- Efficient real-time communication
This trifecta can be used to great effect, but remember that when working on a client project it is important to be flexible. Many a time clients are happy users of other processes and tools and it is important to work closely with clients to ensure their needs are met. It is also important to use the best tools for the job and be ready to change if/when better options are found.
While the tools and techniques discussed above won't guarantee good communication, they will give it the best chance to flourish. Regular (brief) meetings, centralised story tracking and real time chat are the cornerstones of good project communication on a software project. If you are starting a new software project or in the middle of one, give your team the best chance of success by placing an importance on communication and back it up with the right tools and processes.
How do your tools and processes compare? Leave a comment below!
The Axioms of Software Development - Part 2
Type less when using Git on the command line with gitsh
The Axioms of Software Development - 1 of 4
reinteractive is Australia’s largest dedicated Ruby on Rails development company. We don’t cut corners and we know what we are doing.
We are an organisation made up of amazing individuals and we take pride in our team. We are 100% remote work enabling us to choose the best talent no matter which part of the country they live in. reinteractive is dedicated to making it a great place for any developer to work.
Webinars are our online portal for tips, tricks and lessons learned in everything we do. Make the most of this free resource to help you become a better developer.
The Ruby on Rails Installfest includes a full setup of your development environment and step-by-step instructions on how to build your first app hosted on Heroku. Over 1,800 attendees to date and counting.
The Ruby on Rails Development Hub is a monthly event where you will get the chance to spend time with our team and others in the community to improve and hone your Ruby on Rails skills.