WWWA – #2 Harsh critics of Agile or Waterfall (or Bacon) are Awful Researchers

WWWA = What’s Wrong With Agile

I know, I said it will be weekly. As it turned out, I actually prefer responding to change over following a plan. A quick recap to the goal of this series, which will stay same on every following article – to make some space in our brain for this to stay in:

 

#1 – Agile is widespread, the Agile Manifesto isn’t

#2 – Harsh critics of Waterfall or Agile (or Bacon) are Awful Researchers

Criticism with opinions is a no-brainer. Although, Criticism with facts require investment of quality time, uncomfortable debates leading to self assessment and the will to learn from the one being criticised by us. In this article, I will take a U-turn to explain a misconception which many of us don’t know exists. We have other follow up articles to get back the respect Agile needs but we have only this article to finally respect “Waterfall” or what it stands for. As always, keep an open mind.

Overly Favourable Views

“People tend to hold overly favorable views of their abilities in many social and intellectual domains… …this overestimation occurs, in part, because people who are unskilled in these domains suffer a dual burden… …people reach erroneous conclusions and make unfortunate choices, but their incompetence robs them of the metacognitive ability to realize it.”

Highlight of the abstract of a published whitepaper – the basis of a Nobel awarded (for Psychology) to David Dunning and Justin Kruger.

This is true for both Agile admirers and haters. Both are guilty to some extent. I was too, certain years back. With no actual working experience of “Waterfall” and what it involves, it didn’t made sense to me and simply hated it to the core. Statements were made which were heavily biased towards Agile/Lean.

Then, almost like a Karma (if you believe in that shit), I had to work in a Waterfall project! It was really awkward to realise what was wrong. With an Agile goggle on it was my approach that needed an upgrade, I wasn’t listening to the so called old mindsets.

Trust me, if we could we would. The amount of dependency and politics we deal with, be thankful it’s not taking a year” – whispered a devil’s advocate.

 

Being used to the XP practices, it took me a while to digest and understand. I kept working in their sluggish pace to provide a value in a quarterly basis which was better than it used to be. Soon it was clear why agility makes sense and thankfully found the mojo back to move on with the experience. It wasn’t the mindset, it was simply the organisation we were dealing with. It made me come to this conclusion –

Mini-waterfalls within a fake sprint on a No-Scrum, sometimes still work. That’s the most we can get out of from certain organisations.

Not ideal but not the worst possible outcome. Now I can say, the traditional mindset/techniques (not specifically Waterfall – more in a moment) lacks the solution to provide values when we need it in today’s world, although don’t hate it anymore.

A brief history lesson to the Waterfall haters

You are about to be amazed if you haven’t really gone deeper into the subject of what Waterfall stands for and why you should – for a moment – take your Agile goggles off to read this.

The term “Waterfall” was an accident. A mere resemblance between a flow diagram and a waterfall. It was originally drawn to explain an iterative and incremental approach.

 

Yeah, you read that right – “an iterative and incremental approach”. One of the pioneer’s of the software development industry Winston W. Royce one day decided to write a paper on 1970 to express his “personal views about managing large software developments” while calling it “Managing the development of large software systems” – without a single mention of “Waterfall”. He managed to draw some visuals expressing his views, one of which is this:

 

Royce advocated that, projects should pass through this at least twice. That’s an iteration described right there, although not perfect for our current world but good enough for the world then. Bell, Thomas E., and T. A. Thayer on 1976 then published their paper on “Software requirements: Are they really a problem?” and coined the term “waterfall” referencing Royce’s article – managed to do the permanent damage, unintentionally.

 

We know the rest. That analogy turned into a topic of mindless criticism which was simply about “an iterative and incremental approach”. In a way, therefore, the concept of “Agile” has evolved from “Waterfall”. I hear you mumbling something, please don’t hate the messenger.

So, the term did more harm than good and may be that’s where “Agile” is heading which we can stop. “Waterfall” has become a word which is now spoken with a guilt; usually an enormous amount of shame is associated with it. Ehm.. “people who are unskilled in these domains suffer a dual burden”. I rest my case.

 

Sounded like a Waterfall lover there didn’t I? Truth is Waterfall (or whatever you like to call it) is still used widely although Agile is the better among the two. Just make sure we understand both before we criticise any of them. Better, just leave the debate behind, it’s not worth it. Respect both, embrace the one that suits you at that moment of time. Be loyal to the one you favour and explore yourself if you can improve.

Technically Waterfall was 20 years old when Scrum was born (1996) which is the most widely used Agile Framework. It’s been over 20 years to that as well.. you never know what’s in the corner waiting to emerge for us. Most probably another framework which offers even more faster feedback 😉

P.S: You may have gathered, this article had nothing to do with Bacon. Although it was about the Beacon.

WWWA – #1 Agile is widespread the Manifesto isn’t

WWWA = What’s Wrong With Agile

Welcome “Agile” admirers, haters and the lucky bunch who are still unaware hence unbiased readers. Glad to see a controversial article header gained your attention. It is not a click bait though and may be oddly unsettling to the admirers and haters specifically as you read on. It’s not good news unless we act on them and we need both parties to calm down for a moment, shake hands and stop bitching around.

Recently, I was accused of being an Idealist (no idea why it’s a bad thing) and living in a world of illusion. Pretty sure most Agile Coaches are branded as idealists if they are doing enough effort to highlight constant improvements. Apparently the myth called “Agile” only work in dreams. My reaction to this was rather cold though. Mostly because, there are times I do feel that myself. Not because it doesn’t work but because the perception of what Agile is, is still not clear to a majority of development professionals.

This article is the first of many on a series of articles which will be published every week (following a plan over responding to change.. Can I dare?). Here’s an effort to clarify what really is wrong with the interpretation of what Agile stands for today.

#1 – Agile is widespread the Agile Manifesto isn’t..

Leave the 12 principles aside for a moment, at random just ask for the 4 manifesto statements to a person selling the brand Agile on their product/services. If you can find confident 4 statements in any possible variation, ask how many of them they have managed to use or will be using in the workplace. If the person have taken the effort to memorise the 4 statements, they will probably be honest enough to tell you the truth.

Most of us cannot follow one or another or any of them in our workplace, for various reasons. That’s when we take a moment and question, is it even possible? We are busy doing “hard work”, who has the time for all these? Working the way we are expected to – pays, being an idealist continuous improvement seeker human – will probably get us fired.

Agile principles and values - Google Chrome 2017-06-16 11.41.11

Source: https://www.slideshare.net/TroyLCSMCSPO/agile-principles-and-values-62447757

 

My faith was restored when I saw it working once, only that one time – the company was being agile (a very good one) and had the manifesto and 12 principles bloody engraved in their memory and on the walls of the office. Also, they never used the A-word as a unspoken sacred rule.

Sad that the Agile Manifesto is not widespread like the actual term Agile. May be because it’s written in English which most of the world doesn’t speak/understand.. hang on. It’s impossible to memorise those 4 statements that holds the truth but it’s easier to memorise all answers of the multiple choice questionnaire to get the certification done. It increases our day rate, isn’t it?

Back to basics – a quick recap:

Here’s an unbiased pro-tip:

You can always be more agile, it’s relative.

Providing “fast feedback” depends on what is “fast” to you.

For some it’s a month or a week and for some it’s a day (stop showing off you!). There’s always will be a better version of ourself. Large organisation can be agile too, it just simply won’t be agile enough to call it that and to some it will be a #NoAgileBanter 😉

So, next time you hear someone throwing “Agile” at you and in a mood for trolling or simply like to be a dick, just ask. Just make sure you know it to begin with. Best place to ask is job interviews, if you care. The candidates have no choice but to answer or carry a risk of losing the opportunity. At least you will educate them and make an effort to spread the word directly.

Stop Redesigning the UI – Add/Remove Features instead

We are working on a new Project to redesign the current User Interface (UI)

This is what I hear when someone says a version of the above statement-

1) “We were stupid enough to rush our first project following the management triangle and screwed the business over in the name of Digital Transformation. Now we are covering our own shit by spending more money and sugar coating the phrases around it.”

2) “We built 1000 features few years back, out of which only 15 are being used regularly. We are actually in deep shit in terms of coping with the maintenance cost of the rest. If we delete the rest (which we should), our bosses will bend us over and ride our arse off !”

3) “We are calling it a UI redesign but it really is a disguise to hire more developers to recover from the technical debt we ignored for the past few years.”

4) “We need to look busy as we are permanent middle managements. We need more meetings, whiteboards, sticky notes, sharpies and latest gadgets to save our worthless jobs.”

5) Finally, when a fellow “Consultant” says it, I hear – “We have managed to brainwash the client that they need a platform redesign of existing fully working application (not just UI), so we can place more expensive consultants (who will be paid half the amount as permanent employees btw) for the next few years. We can sell frameworks like Agile/Lean/DevOps and processes like SCRUM, xp, KANBAN (yes, someone actually wrote it to me once; god was feeling helpless). We can then convert them to one of the scaled agile frameworks.”

So I am not a fan of these characters, let’s move on. Although it was necessary to set the tone of this article to get things straight around fake “projects” which could have easily been a few months of lightweight but effective revamp work.

What’s wrong with UI re-designing?

Nothing. It’s always a good idea to present a fresher look to keep our application visually attractive than our competitors. Problem starts when we use it as an excuse to authorise a hefty budget for a spurious “Project” and not an improved “Product”.

It leaves a room for uncertainty and make our lives hell when we come across a surprise, which we were not expecting. Most “UI redesign” I have come across are basically the same application (with exact same features and specifications) from scratch with different technical stack aka a full platform implementation instead. You may have a better experience elsewhere. It just didn’t made sense at the beginning and didn’t created a sense of purpose. Instead it added high volume of unnecessary work in the backlog. Would love to hear a positive story, please share in the comments.

Top Root Causes

Product? What’s that?

It doesn’t always happen on purpose by the agents of “Change Management”. It happens due to a lack of knowledge in applying an approach which is based on empiricism and using a little less common sense. As long as we treat “development” as another standard project in the business, we will come across these issues. There are good agents, although less in number and are helpless as they won’t get the support from the culture.

Thankfully, a majority of thought leaders in our current world has made it very clear that we should focus on a product, dedicate a team towards it, iterate with empirical evidence and don’t work on anything which doesn’t have a purpose of providing value. May be the world is not ready for it, may be we need to let the world learn by it’s own mistake or maybe we can educate them faster instead of becoming their critic.

Here’s a Million, Burn it

Another root cause is having way too much to spend. No one care about a drop of water from an ocean or whatever analogy we use to describe it. That’s why the amount of waste is proportionally high when a company starts “scaling” their products. We don’t need scaling for products, we need descaling. We need iterations in burst mode so we can compare them and choose the one which actually provide some value and throw out the rest without feeling guilty about performing those small experiments.

In majority of companies, a predicted increase in revenue is measured as success.

 

“We need a 18% rise in the revenue next year as we managed to hit our last year’s target of 16.5%. To do that we will authorise a generous £2 Million on a re-design project proposed by the application development department for the existing application” – it is practically nothing in compared to that £100 Million+ profit they made last year.

Prediction is the worst kind of lie, it creates a sense of premature satisfaction.

Shareholders are happy as they have received more than their predicted cut last year and no improvement is required in anything as long as that number always increases according to “prediction”. Employees will be given bonus based on that as well, whether they have done their job or not.

Adding or Removing Features – Where to start?

Eat your own Dog Food – The What?!

If this concept is new to you – Dog food eating is a (well) known self scrutinising timeboxed event where you taste your own medicine and for a moment forget that you are part of the solution provider. The application we are building for someone, we use it in our own work and see how satisfied we are as the real user for a moment. In case the product is unrelated to our daily work, we pretend we are the user for the timebox.

Technically we should always be doing this without considering it as an event. Although I have seen only a handful of companies doing this and embracing the huge benefit around it. It’s not easy. You have to mimic that asshole who always wait for your mistake and resurface from the grave to screw your life around by changing your plan of action for another quarter (or worse, a year). Better be that critic yourself than giving a random opportunist take a ride.

Responding to change Over following a plan !

Identify the change needed before someone else do.

 

Summary of steps:

  1. Plan a half day timebox for this session.
  2. Make sure everyone on the team except the stakeholders join this. This is important – stakeholders will influence your opinion, so excluding them is a necessary step. You ARE the stakeholder in this session and you have to be brutally honest about it. If you don’t want to, don’t participate.
  3. Create a template of activities to plan a basic layout, sort of like a session based exploratory testing protocol (get help from a QA member if necessary). Remember you are the end user of that feature – establish who that feature in intended to, doesn’t have to be of one kind.
  4. Run the session and be a harsh critic of the platform, find anything that annoyed you.
  5. Document everything you felt and found.
  6. Plan few hours with stakeholders now, show them what you have found. Done.

 

From this point onwards, what a stakeholder decides will take effect, of course. But at least you have a much better understanding rather than reading a list of requirement which you always hated for being too vague.

If you are planning to achieve a sense of purpose start “dog food eating”, start analysing your own product, be your harshest critic and hire someone who makes sure the criticism doesn’t stop and call that role – Chief Nagging Officer.

Implement Analytics – as if you are prep’ing for a legal hearing

A Zombie feature don’t need to be loved, it needs to be shot in head on sight.

Analytics should be the simplest way to help a company on taking informed decision about “removing” a zombie feature. We don’t need analytics to add a new feature, addition is purely based on empiricism and can happen anytime. If we have implemented analytics (most does) but haven’t removed a feature based on the data, we are already doing it wrong. The deeper it is ingrained on our platform the better for greater insights. The purpose is simple – “We like to find out what part of the feature/platform is barely (never) used and delete the code to save maintenance cost”. It helps us in reducing technical debt and remove the stress of handling the legacy code.

It’s hard to throw out months of work knowing it is not being used. We can only blame ourselves for not doing enough research before implementation and make it right in the first place. Guess what, it’s never too late.

Adding or Removing Features – Why does it matter the most?

It’s in the name. We either add or we remove. It’s simpler, it’s almost black and white. While we are adding/removing a new/old feature we will always perform some background work on making it compatible with exciting features, redesign the UI in places, refactor the codebase or simply change the way it works or appear.

At the end, the value will be provided no matter what and it won’t become a worthless internal change with no real visibility of a new improvement. It can be a performance improvement which is not visible to naked eyes but an informative slide show can make up for it. There is always some value on everything, selecting the highest value is what matters.

There is a genuine reason a development team don’t get buy in from the stakeholders for removing technical debt. Often the team fail to provide an effective reason or simply fail to explain why it is important over providing a visible value.

New feature can equate to cost on one way or another, directly or indirectly, which is easier to articulate. When we remove a feature we have to heavily base our recommendations on analytics data explained above. It can still be equated to cost but still good luck with explaining why a working but unused feature was built in the first place. Some understands, some don’t. Be brave enough to raise concern but calm down if your job’s in question.

Conclusion

It comes back to the culture aspect, every time. The culture needs to translate these kind of failures as a learning. A zombie feature can use as much as the “resource” needed, as an actively used feature which makes them very expensive in long run. By resource, I mean real resources like storage, supporting work and maintenance costs which are a great form of waste. So focus on adding a new feature in demand or simply remove the one that nobody owns.. just don’t call it UI redesign.

Agile – It’s not about delivering working software faster

What is agile? Most cliched answer to this translates to “delivering working software faster”. Because, agile principles clearly states – “Working software is the primary measure of progress”. It doesn’t mention anything about the speed though. In rest of the article, where ever you see “value” translate it to “shed-load of money” if that works for you. It is very important to establish what is the definition of “value” for you, to understand the true meaning of what agility is.

If you buy a new bike or car, it’s performance will always be lower than a well oiled 2year old vehicle with similar specs. Agile teams are like that. The team members can be experienced and brilliant but to really know what part of the product is making the most value, requires investment on thought process. That’s where a Product Owner/Expert comes in with data to prioritise the most valuable work on top of the backlog and own the decision. It’s their job to also convey “why” it is more valuable to the team as well to validate the possibility.

Example Problem Statement

A company hired 10 team members paying £500/day. Screw prioritisation; an expenditure of £5k/day needs to be used up in anyway possible on that 8hrs contracted. Even if that means we make the member work on items no one really give a shit about or have any value. If we focus on priority we will end up wasting 3hrs a day, out of which the members will celebrate a 2hr lunch and will be milking the strategy. How do you propose to handle that?

Solution

Assuming a 20 days working month, paying £5k/day or £100k/month is actually a lot of money to go down the drain, if they work on features no one asked for. The cost can only be justified if they focus on the most valuable item first, instead of an item you may not need for a month. In many cases, as much as 80% work remaining are actually not necessary for early feedback, as the most valuable 20% decides the fate of a product. Work on them first and save your time and money and stop focusing on what the members are doing, as long as they are working on the right thing you require.

Pareto Principle

Does the above solution sounds familiar? Yes, I am referring to the Pareto Principle which is known for a century now. Albeit, saying that 4:1 distribution is “accurate” would be a wrong generalisation as it’s application varies. But it does make a point about how we should approach the product backlog. Empiricism, hence is the only way to go with faster feedback to continuously update the backlog as we know more and more about the product and end user’s expectation.

Source**

 

Working software is mandatory but the trick is to convey the message like this –

Agile is NOT about delivering working software faster, it is about delivering the most valuable software faster.

End Note

Prioritisation is all that matters. If you have adopted “Agile” and still focusing on speed or amount of work for monitoring purpose, then you are doing it wrong. There, Agile defined the way most businesses want to hear. Value can have different definitions for different businesses, “Money” being the most common form, which we should really focus on.

Hope this article makes it clear why “Agile” makes sense in development.

Test Automation is Dead, Period.

This article is aimed to all software test professionals who are working as or planning to pursue a career as Automation Test Engineer/SDET/SDITs in future. If the organisation we are working for is trying to be agile, these test professionals can make an enormous contribution by “directing” the development and not just being a silo of knowledge on a specialised department. So focus and read this very carefully as this will make you the legend you can be, before learning something which is dying or is already dead in agile development.

Simplest definition of test automation is provided in wiki –

Test automation is the use of special software to control the execution of tests and the comparison of actual outcomes with predicted outcomes.

 

“Special Software” – this is your hint. An automation testing framework is exactly that, which is maintained side by side. In many cases, it has an entirely different code base; responsibility of which falls on the shoulders of specialist Automated Testers. I have been there myself. While working as a Software Developer in Test, I used to create frameworks from scratch and maintain. Doesn’t matter what programming language the application is written on, these frameworks can “test” every bloody functionality on the application under test, brilliant stuff. UI, API or Integration you name it, we used to have solutions for everything. Reason why I have enormous respect towards the Testing Community. Only problem was, we were testing AFTER the product was built. Here’s why it didn’t made sense.

Someone gave me a piece of advice years back – “Don’t call it wrong, call it different”. My reaction was neutral, even though I completely disagree, as the person had like 20 years of experience. In fact, I thought I learned something “valuable” that day from a very experienced professional. Few months later, both of us shared an awkward glance, which to some extent proved that I didn’t learned anything valuable and was simply fooled to believe so. That “calling different” attitude became an impediment on an ongoing project as it needed urgent rescue and we realised we should have called it “wrong” and made it right.. sad times.

 

My point is, we have to call it wrong when it is; unless you can never initiate the process of correcting it. Calling it “different” is bureaucratic encouragement to keep doing whatever we are doing and screwing the organisation we are working for, sometimes unconsciously. Let’s come to the subject which needs help, by not being called as different/wrong but being surgically removed – Test Automation. It might be right in a distant past, may be for some, which I have never seen producing real value so will trust and respect the past decisions.

Ask any software test professional “What is your test coverage like?”. You will usually get a reply with a number or percent. You can easily assume they have an Automated Testing Framework to check if the tests are passing, after a product is build/changed. These tests reduces the manual effort while regression testing (mostly functional tests) and saves valuable time before the release deadline. Isn’t it? Proud organisations share these metrics often by saying “we have X% test coverage which is way better than market standard of Y%”.

Now, here are some words/phrases mentioned in the above paragraph, which we should pay attention and understand why they smell.

Testing after the product has been build/changed

If we are testing after a product is built, we are –

Simply validating what it does, not what it should do.

If we don’t want a baby, we use a condom. We don’t have sex anyway and pray that she will not get pregnant; well unless you forget to buy one. Prevention is always advised over “dealing with the consequences” later on, doesn’t matter if it’s your sex life or delivering a software. Have protected sex and stop worrying about raising an “unwanted” baby or even worse consequences. The tests should be our condoms which we put in place before building a product to establish a predictable outcome. Try using this example at your work. If you get a mail from your HR then I am not responsible but feel free to blame it on me. Use weird analogies like this to make a point, people usually remember them for a long time.

Regression testing before the release deadline

Admit it, it’s the truth. In fact, I have seen many teams doing a ceremonial regression testing before a release date. They still does regression testing even if they have automated test coverage (god I hate the term) of 85-90%. Guess what, they still have missed critical bugs. When asked, the usual reply was “it was an edge case which wasn’t covered in our automated testing framework. We will include the test before the next production deploy, promise”.

So do we do regression testing in targeted areas, as in risk based testing? Yes we can, but then we might miss several other areas which “we think” is not risky. We can never win as there will always be bugs.

As long as those bugs are not failed acceptance criteria, they will be treated as learning rather than fails.

The trick to improve is to run regression test while doing continuous integration as part of the same code base. If it fails, fix and re-run as explained in the XP best practices. At least it is failing on your CI environment not in production. Regression testing should happen every time there is a change, doesn’t matter how small the change is. It should happen as early as possible and should never be treated as a ceremony.

Exploratory Testing, therefore, should be the only activity after a product is deployed to find edge cases and that’s why manual testing can never be dead.

Test automation, therefore, might reduce your manual effort but you are still managing and troubleshooting a separate framework and wasting enormous amount of time and effort to prove something which is already given. It is still not “defining” what the product should do.

Test Coverage fallacy

Quality assurance starts before the software is built. Fact is, it never assures the quality if you are writing tests after and it simply becomes an activity of executing the tests. So burn that test coverage report as it only proves that the work is done. It never says how it assures the quality.

Another aspect of “doing it right for wrong reasons” is unit testing in TDD. A good amount of software development professionals and higher management uses the % “test” coverage at unit level in their metrics to prove the hard work done to assure quality. You might know where I am going with this. If you are doing a Test Driven Development (TDD) you are NOT testing anything that matters to the end users, so stop adding the number of unit tests in your test coverage report.

TDD is for architecture and is a brilliant method to create a robust solution which supports the functionalities on top of it. The unit tests are merely the by-products of a good design and does not guarantee the complete functional behaviours. TDD is always recommended but don’t try to make it sound like it’s testing the acceptance criterion. In fact, a good programmer writes these unit tests to be confident in his own coding skills not because someone ask them to do it. In most cases, TDD is enforced to reduce technical debt by creating a culture of continuous refactoring.

Third aspect of the coverage fallacy is, coverage doesn’t mean it is always fully automated. It can be half manual and half automated. Coverage simply means we are confident about the % number of the functionalities and the rest are not tested. This creates a sense of false security. We should always test everything and we can only do it when we direct what we are building. If exploratory testing finds an edge case then we can add a direction to tackle the behaviour and not write to test to run for later. Regression testing after the changes are in place is considered already late. If you are an experienced testers you might read the code changes and figure out what areas have no affect by the change and decide to leave it, but you are still late.

Use your expertise BEFORE the development – Acceptance Guides not Tests

So what about you planned career as a Test Automation engineer? Well, no one said your skills are worthless, in fact you can use more of it.

We just have to shift left, a bit more left than we initially expected.

Not only we have to stop writing automated tests, we write them as guides before we decide to start working on the work item. So the programmers now have to implement the minimal code to pass your statement, hence preventing the defects for you. Better if you can help them in a pair programming session. Being said that, it doesn’t mean that we cannot apply the principles behind TDD. Enter Acceptance Test Driven Development (ATDD), Continuous Integration and Continuous Delivery.

Assuming that everyone have heard/read about these; if not there are a huge collection of online materials to read. In a nutshell, ATDD advocates that we should write acceptance tests before writing the code for the software we build. It defines what we should make with minimal codes to pass these tests, just like TDD but in a higher level which the end users are expecting to work.

Are these acceptance tests really tests though?

Yes and No. These are not tests but are called as one in my opinion (topic of a debate?). Enlighten me if you know. Instead these are expected results (or behaviours) which are used as guides to develop a piece of functionality. Therefore, we should really be calling them “Acceptance Guides” (just a thought). Reason why a lot of us use behaviours as proposed in BDD, as they kind of compliment each other. These can include non-functional tests as well.

 

Verdict

Therefore, to summarise, we are talking about removing regression tests completely after development while including them within the same code base as acceptance tests/guides (doesn’t matter what it’s called at this moment). Also, we need to remove unit tests as a data to include within a Test Coverage metrics. Behold, we have just proved Test Automation can be dead or is already dead.

Be Lean to stay agile.

Agile Transformation – Does it have to be Disruptive?

Agile transformation is the new “thing”, most software delivery businesses are trying to get a grip on. There’s a divide in opinion, facts and politics around it. Many running after the “credit” they get in changing a thing or two to get their names in the list of contributors, which may be soon converted into a tombstone. Others are combining the best practices, changing processes overnight and rebuilding culture to support the sudden changes. Everyone wants a piece of the action but the grave consequences are affecting the business they represent. Why? Because everyone expects it to happen faster, disruptive and trying to change things overnight which wasn’t changed for decades.

Unfortunately the message delivered to them reads like this – “Move into agile methods and you can get more products delivered in the same time”.

 

The most underrated fact around these, when we talk about “Agile” is –

“Agile methods will not double your productivity, in fact it will slow you down to begin with. Agile principles are about providing the sense of creating the most valuable product first.”

The above fact is ignored a lot of time and rouge consultants starts selling “Agile” promising more productivity in compared to Waterfall. Terms get thrown from all sides to the person responsible for budget and a chain of middle management roles wait patiently to get a cut. Members who are not supporting the “movement” either receives a calendar invite from HR or get clinically radicalised to the new religion “Agile”. Why are we trying to do Agile? No idea.

Disruption = Difference in Opinion

 

.If this difference in opinion is not resolved, you can never become agile as it depends on the organisation maturity in every aspect. Reason why many of us heard the phrase “Culture change” thrown at us during an agile transformation. A new bread of management leads the bandwagon towards a belief that doing agile will resolve all problems, improve output and finish project early. But here’s a subtle difference which establishes the Value to the business –

Output ≠ Outcome

 

Outcome may or may not be an intended feature, it can be a lesson which we learn from a failure in an iteration. Some might wonder – “What’s the value of this lesson from a failure which is not generating any revenue?” Well, as an example, a failure can teach us how ridiculous a feature is to begin with, so we don’t invest in future iterations of the feature. Hence reducing the risk of creating a worthless product based on the failed iteration which can be a short term success and a long term burden for a business.

Agile transformation, hence, should reflect a sense of purpose of what we are doing and WHY we have to do it. If, as an organisation we are unable to share the big picture to all employees, there is no way we can be agile in a distant future. Agility is not about implementing a framework or method or tool in place and hope for the best. It’s about self evaluation as a company to learn what we can or cannot do, accepting the limits and exposing the barriers which stops us from being agile. We execute, learn and improve.

The best agile transformations are gradual, slow and have a good amount of time invested in learning while we try to move away from the traditional approaches.

On the Contrary, there are exceptions where Disruption is the Only way!

Gradual improvements are welcome where there is no need for drastic change. But in some organisations this empathetic mindset can be taken for granted. We will find personalities who are extremely qualified and have a very good knowledge of what is right. But milking it seems a better idea for them rather than improvements while exploiting the same knowledge of agile transformation. This is especially true if they are not a “Permy”, as their political existence is based on how long they can stretch the project to get maximum benefit out of a contract/temporary role.

I would be wrong, if I say all contractors are like this. Of course not. In fact, most team level contractors are exceptionally brilliant and embrace agility. The issue starts when we have the middle management as a contractor, who can influence crucial business decisions. These personalities will not harm the business but won’t improve it either. They will keep it as it is and in the name of “Agile Transformation” the project can last for years to come.

Agile Transformation doesn’t happen in a quarter, but it shouldn’t take over a year either.

 

If it takes more than a year with low or no relevant value delivered, we can be dead sure that it is being prevented by a crucial impediment, a process or a personality on power. It can be anything. A year long transformation should be a warning that, not everyone is on board. In these situations, empathy should be shown to personalities who are on board and the rest should be disrupted to make a crucial business decision.

Do you feel the same way?

Which version of the transformation have you experienced/experiencing? Would love to hear your thoughts on this.