Agile is Fragile

Do we really do Agile?

Arief Warazuhudien
Mandiri Engineering
9 min readMay 30, 2020

--

While “revamp” may be a horrifying and taboo word for some corporations, others are adopting agile development practices. This article will be our first step in our journey together to understand not only agility, but also the nature of software development itself.

What is software development? In this article, Software development is a collective effort to build and maintain software products or services to stay relevant in the market. Development will occur throughout the whole product life cycle. A product is a software product that is one of a series of services and experiences that we provide to our users. The experience is all about preferences, specifically public preferences. Public preferences are actually trends, and once they become trends, they will be always changing, evolving, and mutating constantly.

We see in the last few years how many products and companies have failed and fallen in various industries. The competition has turned into a fight to the death, a fight for popularity, a fight for public judgment. Winners will get everything while losers get nothing. Companies will risk everything just to survive. This time marketing is no longer a spearhead. This time we need to rely on our product, which is a software application, an application that needs to be always in line with people’s expectations, just to survive.

It happens in the transportation and shipping industries, it happens in the online market industries, it also happens in payment industries, and definitely won’t miss-out on banking and financial industries.

What happens when we only able to set a strategy in years but the whole world changes in weeks? there are no other words, we absolutely will hit the wall.

In today’s ever-changing landscape, it’s more important than ever to be agile in our approach. Being agile doesn’t just mean being able to move quickly, but being able to adapt to the situation at hand. This means that instead of rushing into things or taking shortcuts, we take the time to assess the situation and make the best decisions for the current circumstances. By being agile, we’re able to navigate the winding road ahead with confidence.

Motocross Racing

Many companies think they are doing agile because they use JIRA, Confluence, and do some ceremonies such as daily stand-up, sprint planning, and sprint review. However, they are mistaken. Agile is not a tool, nor are ceremonies.

Let use an analogy, let say An airplane is hijacked and Lois Lane is on it. She sees a tall guy wearing red underwear, but not all tall guys who wear red underwear outside their pants are Superman. The problem is Lois Lane rushing up to him and believing he would immediately catch her.

It’s certain that beautiful Lois Lane represents the company, and superman must be the one who is Agile. So, in this case, what happens if our efforts so far are not what we thought? We actually may not be doing Agile at all, but just going through the motions.

What is Agile? Agile is an iterative approach to project management and software development that helps teams deliver value to their customers faster and with fewer headaches. Instead of betting everything on a “big bang” launch, an agile team delivers work in small, but consumable, increments. Requirements, plans, and results are evaluated continuously so teams have a natural mechanism for responding to change quickly. — atlassian

Iterative Approach

We don’t yet know exactly how long it takes to master making noodles, but we do know it takes a minimum of 10 years and millions of iterations. So don’t expect to be perfect when we’ve just jumped into software development. Together we and our team need a lot of practice to build and deliver software products. And make sure to never be easily satisfied, because we know that our work is only amateur work.

This is fortunate for us because it allows us to improve our product even after we have “served” it to the customer. In the software world, we can make changes and improve the product even after it has been released. This is a big advantage that we have over restaurants.

We can split the delivery into multiple parts so that our customers can start enjoying their meal as soon as possible. We can also repeat the delivery if necessary.

We will constantly monitor our customers’ feedback to ensure that they are always satisfied with our service. This can be done by checking what is left on their plates or by directly asking them for their comments. We will then set a strategy for the next delivery based on this feedback, so that we can always meet their needs.

Determine Our Minimum Features

For our starting point, we need to set targets for our first release in order to get feedback and improve the application. The first release should only consist of core functionality to ensure that we can release it as soon as possible.

This core function that we need to do in our first release must be relevant to our reasons why we built this application. There is a common bad practice in many companies, which is to include the full set of features in the initial release. This just makes our first release longer, and we are never sure what features will be used by our customers. So just put in what is simply required.

As we near the completion of our product, it is imperative that we are released from our current duties in order to reduce the amount of noise and confusion within the team. Our personal preferences need to be put to the test in the market, and fighting amongst ourselves over what is best for customers is not worth the effort.

If we are worried about making a public release in some circumstances, we can make the initial release only for a limited circle. In this way, we can limit the potential negative consequences of the release while still allowing us to gauge public reaction, so… should be no excuse for this.

Always Building and Improving

Once we Agile, we agreed to use the Agile methodology in order to be able to release new features or improvements on a continuous basis, rather than having the product frozen or “dead”. This is in response to needing tofollow market needs.

In order to establish continuous delivery, it is essential that everyone involved commit to a routine delivery schedule. Once this schedule is in place, we will have a product line and factory that is able to produce features and improvements on a regular basis.

So, what materials we use for our production, those materials should be ideas, ideas are the lifeblood of any organization in today’s rapidly changing and highly competitive world. The ability to generate new and innovative ideas is what separates successful organizations from those that stagnate and fail.

Ideas are the most valuable asset an organization has, and the people who generate them must be highly valued. Ideas need to be managed well, treated with respect, and given the attention they deserve. Otherwise, an organization will quickly fall behind its competitors.

We need to break down the barriers between teams and encourage our engineers to take on the role of determining what users need. We don’t want our product to be driven by someone who doesn’t know how to build applications, but surely we still need a market researcher.

Management also needs to contribute ideas, it is important to contribute your own ideas to the team while also sorting and prioritizing all ideas on the list to be executed by the engineering team. This way, you can ensure that the best product portfolio is being created. Let the team take items from the sorted list and trust them to do their job well — micro-management is not necessary unless it is absolutely necessary.

If we have a lot of engineers in our company, we can group them into small teams and make them focus on certain topics. This will give them trust to be also owning the products they made. The level of maturity will be different per team member.

This list must not only consist of improvements from the user’s perspective, but also from the engineering team itself. We want the best for our products, many unseen things also must be done, so refactoring is a key to making our product better. Why? It will be lowering service latency and improving application performance, ensuring the speed of development if there is a demand for change, making our engineer feels more convenient with their code, and also last but not least is make our application safer from any threats in the future.

We not only build motorcycles that look good to our promoters, but we also make sure to tune and adjust our engines for the best torque and speed. We also need to make sure that our braking system works perfectly for our safety.

Customer Oriented

When choosing which ideas to implement in order to shorten the list and make priorities, customer orientation must be kept in mind as the main factor. This is because the company’s vision and strategy should be designed with the customer in mind.

In looking at the big picture, we will inevitably come across various obstacles, such as conflicting interests, time constraints, cost considerations, and differing priorities. Many of these issues are not directly related to the main problem at hand. For example, we may have to deal with office politics and drama. In these cases, we need to step back and decide what is best for the company and the customer.

We need to maintain good relations with all parties, understanding that we cannot work alone. All tasks must be completed faster, without compromising quality. We have to be detailed, think logically, and put aside personal drama. We are not here to entertain anyone; we are here to make sure the work is done with our best results.

Watch out for the joy-stealers: gossip, criticism, complaining, faultfinding, and a negative, judgmental attitude. — Joyce Meyer

Our team is dedicated to providing the best possible experience for our customers. We want to make sure that we cover all of the topics that they need in order to get the best results. We’re not afraid to get down into the details and discuss the code that our products are made of. We want our customers to understand the basics and be able to apply them in any situation.

We must build a culture of professionalism and principles, where we can work effectively without having to think about things outside of the work itself. In the end, with this mindset, we will have a team and partners who support us to prioritize the interests of our customers. However, in the process, we will face many obstacles. Here we are tested to keep on our principles.

It’s better to start hard while building understanding with everyone involved than we try to be nice and then blame each other in the end.

Outcome-Driven

With Agile, it’s very flexible for us to adjust everything including the Agile framework itself.

We may want to have common methods across our company so that everyone is on the same page and working together efficiently. However, Agile encourages independence and autonomy. If we think it is still necessary to have common methods, we need to select the best approach based on its outcome. We need sustainable methods that are proven to suit us.

The work guidelines were developed based on the team’s input as a secondary consideration after the results obtained from the previous execution. This will help us to reduce our focus on tools and ceremonies.

When results vary for each team and results differ greatly, it may be necessary to reconsider the current guidelines and tailor them to each team’s specific needs. This will ensure that all teams are working towards the same goal and achieving the best possible results.

We no longer consider how long our personnel works behind the desk, but only from the outcomes of their work and their contributions. In today’s work environment, some staff members may be eager to work until late night every day, but this does not necessarily reflect their contribution. In this case, we suggest giving our personnel flexibility regarding how to work, while providing direction that we need to maintain a healthy body and mind in the long run.

Conclusion

There is no difference in the speed of development between the agile and non-agile approaches, but to win the race, that’s not the only factor. Speed is important, but so is the ability to accelerate and change direction quickly. Agile is the best approach to give you the acceleration you need to follow the market. You need to be ready to follow the winding road, where the direction might suddenly reverse. In this situation, you need to sudden brake, slam the handlebar, and deeply turn back the gas.

If we want our machines to be able to handle acceleration, we need to make sure that we have a deep understanding of the Agile approach, not just a superficial understanding based on the tools and ceremonies.

Agile is all about getting things done efficiently and effectively, with the customer always being the top priority. There’s no time for drama or anything else that can get in the way of that — we just need to focus on delivering the best possible product.

--

--