Communication is key

How to do agile software development right: 5 tips from our CTO

agile software development

As CTO and co-founder here at Mooncascade, I’ve been working in agile software development for years. I know that things move fast when using agile methodologies. There’s always a new idea to validate, a new sprint to plan, or a high-pressure deadline to meet. 

This has plenty of benefits, including more flexible development, more frequent testing, and better results. It keeps things fresh in the workplace, and often teaches you something new every day. But it also comes with its fair share of pressures and problems. 

The most common issue I come across in agile development is miscommunication, which can have serious repercussions for projects of any shape or size. We’ve all been there. Someone forgets to speak up, and when delivery comes around, it turns out you’ve spent days of blood, sweat, and tears building a feature the client didn’t want in the first place. 

But fear not. Identifying a problem is the first step to solving it, and following a few core principles will help make your next agile project more successful than you could’ve imagined. So read on: here are five tips for doing agile software development right.

1. Know your client and the problem you want to solve

When it comes to agile software development, you need to know your client

I keep this tip in mind for any kind of development, but it’s especially important for an agile approach. In a traditional project, clients generally outline their requirements and goals in a distinct step before development. But in agile projects, it’s common for teams to jump into sprints without setting things in stone. While this approach allows for more flexibility, it can also lead to wasted time and unwanted results if not implemented properly. 

It’s important to understand what business problem your client wants to solve and which goals they’d like to meet at every step of your collaboration. Not only will this help you avoid building something they don’t want, it’ll make it easier to find a balance between your client’s expectations and the realities of development as things move forward.

Make sure you think with your client, rather than for them. Don’t hesitate to ask questions or even challenge their ideas. As a partner, you have the experience to tell them what makes sense to build and what doesn’t. Remember that someone thinking from a business side doesn’t necessarily know which technical tools are out there to help them. They also don’t approach problems the same way you do. So make the most of your two perspectives by maintaining steady communication throughout your collaboration.

A client might want a custom chat for their website, for example, which is a complicated, time-consuming, and expensive feature to develop. Ask them why they need it and what they expect from it. Propose alternatives: integrating Slack through a small script in the application you’re building could be a great way to meet their goals while saving time, money, and headaches on something more elaborate. 

2. Develop routines

agile software development rewquires that you develop a routine

It’s important to keep communication going within your team, too. One great way to do this is to develop well-defined routines—and actually follow them.

If you’re doing agile development, chances are you’ll be using scrum. In my experience, the most important routine in this context is a standup meeting. If you can, hold daily standups that include both the development team and the client. 

Even better: hold your meetings early in the morning. This will stimulate your developers to work at more normal hours than they may be used to, and it’ll get everyone’s day started off with fifteen minutes of useful information. Standups shouldn’t be about sitting around, listening to one person ramble on. Instead, cover each talking point as a group. This will ensure the whole team is in sync and has a bird’s eye view of the day’s goals. 

Here at Mooncascade, I often function as scrum master in our development projects. I ask my team to follow the three Ps: progress, plans, and problems. They write down their progress from the last day, their plans for the current day, and any problems they’ve encountered or foresee coming up. I use a tool to combine all of these points into one list, which allows me to quickly see which issues need to be resolved and who needs to be put in contact on a daily basis.

Part of your role as a scrum master is to manage sprint planning. Stick to the routines scrum defines as long as they’re relevant to your needs. Look back at what worked or didn’t only if you think it’ll be helpful. You want your team to be aware and aligned, but also free to focus on building a quality product rather than worry about meeting deadlines. Having one person manage planning will make it easy for them to do this.

3. Define your project’s roles

In an agile software development project, you need to defne roles and responsibilities

Another part of a successful agile development project is role definition. Make sure that your team knows who’s responsible for what, and who’s in charge. At Mooncascade, we don’t often do by-the-book scrum, so the person leading meetings, raising questions, and managing each sprint is usually our product manager.

It’s also crucial to define a product owner. Any project that doesn’t have an identifiable product owner will face issues moving forward. Product managers from your side can help take some of the responsibility off of their shoulders, but it’s best if the vision and final decisions about the project come from the client’s own team.

This is because agile development requires fast decision making. Say a question comes up about adding a Facebook or Instagram login to the product you’re building. You need to have someone who’s responsible for validating this choice on the client’s behalf as soon as you ask them. Without this, you’ll either run into costly delays or end up building something the client isn’t happy with down the line. 

4. Get your client involved

Get your client involved in the agile software development

As a general rule, agile projects are successful when the client is as involved in the process as possible. Part of your responsibility as a development team is to ensure this involvement happens.

When Mooncascade was just starting out, many years ago, we learned this the hard way. We were working with clients outside of Estonia who we couldn’t regularly meet with in person. We built a product using agile development, delivering a new build to them each week. As we approached our launch date, we sent over a final build thinking that everything was going smoothly. 

As it turned out, the client hadn’t been looking at each update and found quite a few issues as they went over everything. These weren’t bugs, just aspects of the product that weren’t in sync with their expectations. We hadn’t made sure the client was informed about our work as it happened. And we had a week left before going live. 

The lesson here? Communicate, every step of the way. During standups or sprint planning, ask the client if they’ve seen what’s been done so far. Send them early versions after each sprint. This is important both for validating what’s been accomplished and confirming everyone’s on the same page moving forward.

5. Be realistic (and honest) about delivery

Communication is a key when it comes to agile software development

Agile software development works best when it’s transparent. Never commit to something if you’re aware of any issues regarding the project’s feasibility or deadline. Be honest and tell the client you’ll need to find another solution, even if they try to push for something being delivered more quickly or at a higher cost. 

Say a client insists on releasing a first version of their product with X amount of features by a certain date. This usually happens because they’ve planned an advertising campaign and want to have an impressive product to launch for it. But if you can’t deliver on your commitment, every part of their campaign will fail.

At the same time, they need the features they’re requesting for a reason. So try to compromise. Propose a different version, maybe split development into two parts, or offer alternatives with similar functionality that are more doable in the given time frame. Think back to my example about using Slack instead of building a chat feature: you can always suggest a temporary solution with different tools if a full-scale build isn’t possible. It’s all about balancing realism with solutions that get the job done.

Agile software development: never stop communicating.

Chances are, you’re interested in agile development because you’ve seen how fast, flexible, and powerful it can be. But an agile project is only as good as its team’s communication. Implementing well-defined roles and regular check-ins, standups, and feedback at every level of your next project won’t just improve teamwork. It’ll help you design and build a product that actually meets your client’s expectations—and likely surpasses them, too.

Looking for an agile software development partner?

Then get in touch. Mobile, web, backend – whatever it is, I’m sure we’re able to help you out.

Published by Indrek Ulst

. Indrek is a CTO of Mooncascade. Having started his career as a freelance web developer back in 2000, at age 15, he's phenomenally good at what he does. As a CTO, he makes sure that whatever Mooncascade does follows the best possible practices.