Jump to content

Under enormous pressure to deliver faster, business analysts often fail to describe processes accurately. Architects are struggling to define clear system requirements and developers ultimately deliver code prone to bugs and lacking functionalities.

We deliver faster but we fail in the long run. We are less patient and more in a hurry than we have ever been. Our craving for constant, immediate change often leads us to overlook crucial details and important aspects of business processes and this is where we fail to satisfy our customers’ needs.

In a world full of ever-rising and changing expectations, how do we ensure that customers’ requirements are met?

Customer comes first. Period

Within organisations with well-defined structure and established requirements, the end of the software development process marks the moment of truth. It is when the business gets its first glimpse of how the software is going to behave and whether all requirements have been fulfilled. But what happens when we fail to deliver system requirements, when we encounter changes in requirements during mid-development and when new requirements are being added just before delivery?

Keeping customer happy and delivering even without clear requirements often feels like an impossible mission. After all, in a real world where unstructured organisations outnumber the structured ones chances are we are not always going to have them. How do we face these situations when requirements are missing, deadline is rapidly approaching and alarm bells have started to ring?

Enough, let’s move on!

When faced with such a situation there is no other way than to do your best and take it as a lesson for the next time.

Use your brain, assume how product should behave

Yes, you read it right. Invest some time in understanding the process, try to look into “to be delivered” product from a user perspective. Ask yourself questions. Be curious. Think about possible failures. While it is probably not in a description of your role you will get a better understanding of the system and valuable learning experience.

Be stupid

Initiate discussions with developers and project managers. Don’t hesitate to ask questions even if it means appearing uninformed. Approaching project managers with unclear questions can lead to discussions that fall out of the projects’ scope, which may not be desirable. To prevent this, be precise and clear. Think about what you don’t understand, formulate your questions and speak loud.

Get to know your enemies

You are probably not reinventing the wheel and there are probably numerous other systems available on the current market with similar functionalities within the same domain. There are plenty of fish in the water, check out what happens on the other side. Find out how the same or similar scenario is handled by another system.

Dive into deep cold water

If you have access to a code database it is a good time to dive in, understand it and see what is the current state of “solution to be delivered”. Examine the code and make sure you understand it. Begin with reverse engineering. Maybe you get lucky and you find some well-written comments that will provide you with valuable insights.

Document everything

Now that the research phase is complete, it’s essential to document all findings in a structured format and present them to the client. Ensure that requirements and use cases are aligned with clients’ needs. Document different scenarios that have been tested. For instance where certain scenarios could not be performed, it is essential to outline how the system is expected to behave in those specific situations. This comprehensive documentation serves as a vital reference for both the development team and the client, ensuring clarity and alignment throughout the project lifecycle. Happy customer, happy life.

It is time for season 2

With the project code running smoothly in production, documentation delivered and solution successfully demonstrated to the client it seems like everyone is satisfied. Now, it’s time to take a well-deserved break and indulge the success of a job well done.

However, it might be too early to declare victory just yet.

Even though we managed to win the battle the war is still not finished. With new projects on the horizon, it’s crucial to establish a structured approach to our work. We need to clarify which documentation will be delivered for future projects and how we’ll proceed. Making mistakes is an opportunity for learning. It’s essential to learn from our experiences and develop a framework that ensures efficiency and effectiveness.

Call me crazy but in order to change something we need to change pattern. We cannot keep doing same things and expect different result. If we want to see different results we must be willing to change the way how we work. But how do we come there? How do we manage to swim out of this mess to the place we want to be?

The power of retrospective

You don’t need to be agile to run retro. Reflecting on our actions and learning from things that did not go so well is an important part of the process. Sharing experiences and understanding how they impacted other team members is crucial. During the initial phase we encountered various challenges and this is the moment to address them and solve them . It is only by understanding the “why” behind these challenges we can come up with a plan to navigate towards “how”.

Roles and responsibilities

Roles on projects are often assumed rather than explicitly assigned. This often leads to confusion among team members resulting in complete chaos. In such situations, individuals often create their own roles delivering what they believe it is expected from them or what they would prefer to do. So next time you start a new project make sure to clearly define roles and responsibilities of each team member.

Create consistency with templates

After successfully overcoming the initial challenges and delivering documentations it is time to capitalise on this success by standardising our documentation process. Create documentation templates based on previous experience and propagate them through the company. Knowing which documentation and in what format it should be delivered ensures that we are one step ahead for future projects.

Teamwork makes the dream work

Ensure you have a strong team. Invest in their development and create a culture of collaboration and trust.

Communicate customer needs

The early stages of software development are vital for preventing the failure of IT projects. It is important to understand and document customer needs from the very beginning. There are different approaches when dealing with customer needs but the most common one involves defining use cases. Continuous gathering of customer feedback for development of business processes ensures that processes are aligned with customer needs. Once business processes are defined we can proceed with software development.

Test your code for the greater good

Ensure you have a dedicated test environment and enough time for testing. Involve end-users into testing. This will provide developers with better understanding of user needs. Make sure to define clear acceptance criteria so everybody has a clear understanding of what is expected.

Contacts

More articles