If you’ve been around the business world for any length of time, you’ve likely experienced some turbulence with clients or rancor among team members. At some point, a meeting was called to discuss the situation in the hope of finding some kind of resolution or breakthrough. While the grievances and circumstances may vary wildly, in our experience, 90% of the time these breakdowns revolve around two things—poor communication and lack of collaboration.
It Really Does Take a Village
Having a team of brilliant engineers won’t always result in excellent software. The fact is that software engineers, project managers, clients, vendors, and anyone else with a pulse involved with any kind of project are all unique individuals with varying levels of skill, comfort, and experience when it comes to working with others.
It’s not surprising, then, that effective communication and collaboration amongst all kinds of stakeholders (team members, clients, vendors, finance departments, etc.) doesn’t just magically fall together. Even if the development team is operating like a well-oiled machine, the variables and inputs change each time a new client and/or project is introduced. Remember, clients often have their own set of stakeholders to navigate, too.
Can’t We All Just Get Along?
That depends. At the risk of mixing metaphors, a development team is a highly sophisticated machine. Every member must understand their job and execute at a high level. It takes intention and effort to ensure these critical success factors are in place and functioning well. Strong internal communication and collaboration among the team helps increase the likelihood of a successful project. Having that same purposeful intent with client stakeholders and vendor partners as well practically guarantees it.
In our experience, the best way to help enhance communication and foster collaboration is to formally establish a working environment that supports and encourages both. Several strategies to achieve this include implementing standing meetings with the dev team, routinely meeting with client stakeholders, inviting open dialogue and questions, using tools to streamline communication, and instructing client stakeholders as to how they should communicate and participate throughout the project. Not surprisingly, efficiency and productivity benefit greatly when these strategies are in place and working well.
Collaborating within Teams
When it comes to encouraging collaboration within development teams, we’ve found there are three distinct success drivers that make a huge difference:
1. Encouraging open communication and idea sharing
- Establish an internal structure and processes that promote collaboration, such as daily stand-ups and/or weekly meetings.
- Include team members with different roles in these meetings to promote diversity and different perspectives.
- Frequency is good; open, honest frequency is better. Build an environment that promotes candid, respectful communication and encourages colleagues to ask questions. When you do that, close-knit teams and a supportive culture only enhance the desired dynamics.
2. Creating cross-functional teams for diverse perspectives
Every project at AppIt includes a project manager, UX/UI designer, technical consultant, project lead, developers, and quality assurance engineers. Everyone’s experience and perspective is valuable. The benefits derived from cross-functional teams are then passed onto our clients.
3. Facilitating effective team meetings and brainstorming sessions
- Clear and achievable agendas are essential. Nothing kills productivity and efficiency (not to mention morale) faster than a poorly run meeting. Ideally, attendees should have the agenda in advance so they have time to respond and/or amend it prior to meeting.
- Check your assumptions at the door. Software development is complex, and the devil is in the details. Two different interpretations of the same requirement can have negative consequences. At AppIt, we refer to these as forensic requirements. Asking the right questions, inviting responses, working on solutions together (aka communicating and collaborating) helps ensure clear and proper project documentation, planning, and delivery (aka success).
Communicating with Stakeholders
Whoever said “the customer is always right” clearly never worked in software development. In fact, they were probably never asked to solve a complex business problem that may actually be a symptom of a broader or different underlying issue. Nor did they likely have the experience, courage, or conviction to challenge the customer on whether the issue at hand was the root cause or simply an effect of something as yet undiagnosed.
The value of effective stakeholder communication cannot be overstated. As in any good relationship, there will be agreement and alignment on many things. And, there will be disagreement, differing perspectives, and healthy debates that, while always professional, are not always comfortable.
At AppIt, we embrace both as absolutely essential to healthy partnerships and the best possible outcomes. Here are five strategies we’ve found to be hugely helpful in this arena:
1. Establish clear channels of communication
Discuss which channels work best for both the development team and the client, then use them. This is one of the first topics of discussion during project kickoff meetings. Establishing these early will help alleviate confusion and ensure all stakeholders understand how to communicate, and which channels will serve as the source of truth for specific information.
2. Hold regular meetings
We recommend weekly meetings with the client at a minimum; more if needed. Just like internal communication among the development team, consistent communication with stakeholders is vitally important. Regular interaction with clients keeps everyone updated, involved, and helps inform the decision-making process.
3. Set client expectations early
One of the best ways to ensure client participation and alignment throughout the project is to establish expectations early--often before project kickoff, and sometimes even during the sales process. Make sure they’re aware of what will be asked of them and secure their commitment to the plan.
4. Actively listen to understand client needs
To effectively appreciate the business problem and brainstorm solutions, it’s important to first understand the why behind the what. For instance, why are we building this feature? What business purpose does it solve? Conduct a thorough exploration of the client’s needs to uncover the motivations behind the requests and communicate them across the entire team. These details can help with comprehensive documentation and avoid roadblocks in the future.
5. Manage feedback and expectations
- This strategy starts in the sales process and continues throughout the project. Setting proper expectations from the outset makes managing expectations during the project much easier because everyone is operating with the same frame of reference.
- It is incumbent on any developer to train and explain proper communication and collaboration techniques to clients prior to getting underway. Determine which methods work best for everyone and ensure all parties understand processes and procedures. This helps alleviate pain when issues or surprises do come up because surprises create less turbulence when expectations are aligned.
- While there often no such thing as over-communication, disorganized and unstructured communication from clients can lead to frustration and/or potential mistakes. Establishing proper feedback channels and adhering to the system is important to keep everything organized and accessible throughout the project.
Tools and Techniques for Collaboration and Communication
As it is in so many different trades, the right tools can mean the difference between struggle and success. This is particularly true in the software development world where possibility and complexity are often found side by side. Allow us to share a few of our proven tools and techniques that can help you expand the first and minimize the second.
1. Utilizing collaboration tools for remote teams
- Collaboration tools not only make effective, asynchronous communication possible, but they all keep communication organized and easy to navigate.
- At AppIt, we use Slack for internal direct and group messaging, Figma for design creation/feedback, and Teamwork for project management. During the development phase, we use Trello for sprint testing, quality assurance, and bug tracking with our clients.
2. Communication etiquette and best practices
As mentioned above, it is important to train stakeholders on how to use various products, processes, and procedures to ensure good communication and collaboration. We routinely share our best practices and invite clients to participate in developing a system that works best for them.
3. Integrating communication with project management tools
There are a lot of moving pieces during software development, and project management tools play a vital role in the choreography of it all. Trello and Teamwork are excellent tools that make communication a lot easier and much more organized during development.
What We’re Trying to Say Is....
Truly great products demand effective collaboration and communication. Not only do these skills enhance the final product, they accelerate development, minimize in bugs, improve troubleshooting, support problem solving, promote efficiency, boost productivity, and foster a culture of transparency and teamwork around a shared vision.
Sounds like success to us. It should to you, too.
At AppIt Ventures, we believe so strongly in technology’s potential to enhance client impact and improve people’s lives that we are willing to share in the up-front risks of development. Effective collaboration and clear, intentional communication help mitigate those risks and are essential components of any custom software development project.