Layers of Internal & Client Communications Ensure Success for Software Projects
Communication within the project team, including the internal team and with the client, is crucial to a successful delivery. Approaches to creating useful and efficient communication varies between organizations and teams, and there’s no shortage of tools (Basecamp, Jira, Asana) and methodologies (Waterfall, Agile) to help. While many teams lean toward a meeting-free approach, or swing the opposite direction with daily scrums, we’ve found the most success in a healthy balance. This regular and open communication instills confidence in our team that we’ll deliver and in the client that we’ll meet their goals and expectations.
Internal Team Collaboration
The approach, priorities, and timelines are just examples of what can change rapidly in software development and if these changes aren’t communicated, the entire project is at risk of going off course. Project teams are made up of a number of disciplines, each with their own deliveries, goals, and estimates to worry about. It can be easy to silo and lose track of the bigger picture or changes that are natural to a development cycle. If we aren’t regularly communicating about the approach, progress, or red flags, then the project is likely to face problems and delays with the technology, budget, and timeline.
Clients are Part of the Project Team
In custom software, implementation is just one piece of the pie. As the domain expert, clients serve an important and continuous advisory role throughout the duration of the project — and should be included as such. The client is investing significant resources in a software build and throughout decision points arise (data sources, frameworks, tradeoffs, etc.) that the client needs to be a participant in to have a clear understanding of the path toward launch. Through communicating as a team, we work together to ensure the client’s vision comes to life.
Many of our clients find us after having a poor experience in the past or are fresh off a failed build elsewhere. Clients need to know that we can not only build their vision but deliver it on time and within budget. Regularly engaging clients through weekly check-ins, feature-related discussions, release notes posting, and a staging environment for them to see progress are all means of communicating. The more information we’re able to share with the client, the more engaged they are in the process, the more feedback everyone receives throughout the project, and the more confidence everyone has in the solution being delivered.
How to Ensure Better Team Communication
The software development industry tends to push back against meetings, at least unnecessary ones. Meetings can be disruptive to the creative and coding processes because people have to pause their work in order to participate. Daily scrums can be a bit much and better handled through other mediums, but a weekly internal check-in is vital. As a team, we meet at a scheduled time every Monday. This gives everyone the opportunity to share what they’re working on, highlight any roadblocks or red flags, and understand what’s coming next. These meetings aren’t long (about 30 minutes) but work to get everyone on the same page while keeping the big picture in mind ahead of talking with clients. They serve to have the internal team well-prepared for any discussion points we need to make or the client may bring to the table.
In order to keep everyone involved, engaged, and confident in our process, face-to-face meetings are a must. Any team member can post a discussion, push an update to a demonstration environment, or share a video or static deliverable, but having a face to go along with a name goes a long way. Thanks to services like Google Hangouts, we do our best to meet with clients face-to-face every week at a scheduled time throughout the project. Generally, these meetings happen early in the week and are focused on any recent deliverables and the goals or priorities for the week ahead.
Through these check-ins, we’re able to regularly collaborate with clients to gather feedback, answer questions, and rapidly react to new information.
Not all project communication happens at a scheduled time each week. Utilizing tools like Slack for internal discussion between meetings and in place of daily scrums, our team is able to collaborate as we work through the development cycle. When we need the client’s input, discussions are shared through tools like Basecamp. This also works if the client needs to bring something to our attention for discussion. We’re able to collaborate, ensure information is being exchanged, and schedule impromptu calls when needed to walk through something more complex.
We start the week off with client check-ins to set goals and priorities and end it with a shared post to summarize what we were able to accomplish. This weekly update is sent on Friday and includes details and progress updates about our goals and priorities along with links to any deliverables. While clients are able to see progress throughout the week, having a summary with deliverables communicates our work in one simple post and instill confidence that progress is being made.
Identify Red Flags
Custom solutions also mean custom problems — regardless of how much upfront planning there is. There will always be unforeseen bumps along the way and the success of a project hinges on the reaction to those. It’s crucial that we communicate these red flags early and often. This isn’t just important for the internal team; clients will also notice problems and they can pop up anywhere. Once we become aware of them, we must identify possible solutions and determine how each solution may impact the project.
Being able to identify these roadblocks early and communicate them effectively enables everyone to work together to find an optimal resolution. We’re able to avoid wasting time moving down the wrong path.
How to Avoid Communication Pitfalls
Email Project Details
Email is a wonderful communication tool, just not for project-related communications. They’re often exchanged between individuals and don’t include the entire project team which leaves someone (or many) out of the loop. At Envy, we strive to provide our clients a prompt response time which is impossible when emails are being sent to an individual who may be out or unavailable. Things like feature requests and bugs tend to fall through the cracks and conversations become hidden when emailed and not shared through tools like Basecamp where discussions are threaded, easily searchable, and available for the entire team.
One-on-one chats are especially difficult. They tend to happen outside of the team, there are rarely notes, and they inhibit good project-related communication. While they’re likely to happen no matter how hard you try, At Envy, we immediately note the talking points and share them with the team (client included) in digital form.
Avoid Tough Decisions
No one ever wants to deliver bad news. It’s inevitable and best to not avoid it when something comes up. Our clients appreciate honesty and when we need to cut a feature, for example, telling them sooner than later along with a reason for the delay makes a difference. The more up front you can be in communicating news, both good and bad, the better it’s all received.
The nature of software development, especially in a culture where we work with remote employees and closely with clients, is that things can change quickly. We often assume someone will be available when we need them. To be effective, we rely on the communications that are planned and scheduled so everyone who needs to be involved is available and ready. Tools like Slack are great for filling the gaps, but it can be dangerous and ineffective to assume those you need are around or able to drop everything when you need something. Responses will definitely come; it’s just not always immediate. At Envy, our clients know when we’ll be available, and stress the importance of communicating with the team so responses can be prompt and effective.
Tools to Help Your Team Communicate
We utilize several tools for continuous communication, both internally and with our clients. These, along with meetings and regular updates, keep everyone in the loop and on the same page. Project information is readily available and the entire team has confidence in our ability to make that final delivery on time and within budget.
One of the most important tools we use for internal communications is Slack. We have a mix of remote, sometimes remote, and in-office employees and having a tool that allows us to quickly communicate and collaborate with others enables us to function as a team. All projects have a channel which we use to talk internally when we can’t meet in person. All internal discussions, links to meeting notes, and other items are shared here. We also do weekly check-ins on Friday through Slack in order to provide clients with an update.
A Custom Hub
At Envy, we saw a need for a client hub and created our own Client Dashboard. It’s a centralized place where our clients can go to track the budget, weekly updates, and important project-related links like the Basecamp project and GitHub repository. As the project progresses, we also link to completed wireframes, designs, and staging environments. While we utilize several tools, we make it easy for clients to have a single place to go for everything relating to the project.
Basecamp is an effective communication tool and does a great job with threaded project discussions. It’s easily searchable, clients have access, and we can keep project communications well organized. We utilize Basecamp to share meeting notes, post deliverables, and to initiate or respond to feature-related discussions. While it’s a common tool in software development, Envy provides our clients with a walkthrough of Basecamp and how we’ll be utilizing it for those who are less-familiar.
Working with a software development team, GitHub is a necessity. It’s where the source code for your software lives. We utilize their wiki to document the scope of the project so any developer, or team member, can have a go-to spot for features and what we’re building. As the development cycle moves forward, we begin to add issues and milestones for the work we’ll be doing. This makes it easy for the entire team, client included, to keep up with task management, bug tracking, and feature requests.
Effectively Communicating as a Team
All software projects change as their development cycle progresses. New information may be realized that simplifies approaches or unforeseen problems may become unveiled introducing new difficulties. Through constant team communication and being transparent with the client, we’re able to identify, discuss, and present recommendations to bring the project to a successful solution. Utilizing a mix of scheduled meetings and proven communication tools, we collaborate as a team and ensure effective communication.
At Envy, we talk openly through any potential technical hurdles, improvements, production delays, and budgetary concerns. We bounce ideas off each other, research approaches, and collaborate on solutions to reach decisions everyone can be satisfied with.
To solver future problems, developers need to be software generalists. Discover 4 ways developers can improve their skills and stay effective.