56

UPDATE: Myself and the business unit leader were able to make enough noise with the bosses such that the vendor has agreed to prepare User Stories for the work they have done and also for all new work going forward. The bosses did NOT seem to ever care about the whole "Agile" angle so it wasn't a selling point for them to start with I guess. It was a good lesson in that our IT jargon does not always translate to non-IT folks. I'm hoping that this change on the project approach will yield success. It will be nice for this app to "graduate" from my control and its success/failure after the vendor agrees to my specs is now out of my hands.


My company created a small app about a decade ago that has slowly grown into a large business unit and now is being spun off into its own business. It generates a ton of revenue and needs more support than my dev crew can put into any one project of ours. Basically it's a wild success in terms of the work we do. The corporate decision was made to spin it off so that a dedicated outside company takes it over, because it's now demanding some higher audit capabilities and support requirements than we want to handle. My team was not involved in the selection process for the vendor.

Additionally, the vendor selected did not propose that they just take over our source code. Instead, they sold my management on just altering their existing software's framework to handle our business needs too. So they are RECREATING our software from scratch instead of just taking over the source code.

They were given some internal training materials that I had prepared for cross training our own devs on the app, as well as a copy of the production database. They had around 2-3 phone calls with the lead business person (not an IT person) regarding what the software can and should do. The business unit lead is fantastic to work with, but did not understand that these conversations would be the "requirements gathering" phase (this is the fault of the vendor as they did not explain this to her).

At this point I was expecting some formal docs to be prepared but instead the company informed my bosses that they are "Agile" and just started writing code. As expected, myself and the business unit lead were caught off guard and tried our best, at first, to review their new app. We immediately noticed that they were changing UI and not implementing various business rules, because how could they when they never asked for our source code? They were relying on the 2-3 phone calls plus their attitude is "you guys test the software and tell us what to change".

I asked them to pause real development and just prepare UI prototype screens. This is how the business unit leader and I worked for years. They said no, it would be too complex and wasteful to do dummy screens. I responded that their version of our app seemed to be a normal JQUERY-based web app and that they could just give us unstyled dummy HTML for the screens, to which they still said no.

The business lead has asked them for what we in the industry might call "User Stories". Basically text descriptions of what the software should do. Again they have pushed back on that. They still just want to write code and ask us to tell them when the code does not implement the business rules.

I am at my wits' end. I'm kind of a home-grown back-water developer and have never done formal Agile or Scrum, but surely this cannot be correct.

I understand that Agile can be a great approach. But we have an existing application that is battle-tested and handles all the current business rules perfectly. Agile would be great if we were coming up with a NEW app I guess, but this app handles regulatory rules with large penalties if missed, and I don't understand why we would not want extensive written documentation to ensure the new company understands all the rules. We store the personal data of children under the age of 18 in this app, for example.

What can I do or say to this vendor and my bosses to explain that this approach is (1) terrible and (2) not actually "Agile" which is the buzz word they are using with our executives who have a hard time understanding our complaints?

19
  • 41
    This 23 year old blog post by Joel Spolsky remains as valid today as the day it was written: joelonsoftware.com/2000/04/06/things-you-should-never-do-part-i Oct 17, 2023 at 4:53
  • 26
    You are upset because your work and success are not being recognized and you are worried about the results of the decision for your clients. I suggest you start worrying more about your own interest. It sounds to me control is taken away from you while your are still being held responsible for the results (you are supposed to sign off on what the new party is doing). This is your main problem. I would say don't take the bait. It is theirs or it's yours, nothing in between. Oct 17, 2023 at 5:54
  • 16
    you know what they say: "months of coding can save you hours of planing"... and I am sure that those people think that agile means no documentation, architecture or requirements Oct 17, 2023 at 9:04
  • 7
    Question 1: You say this app is a "wild success", and is "being spun off into its own business... so that a dedicated outside company takes it over". So it sounds like there are really 3 companies involved? A (original company), B (spin-off company), C (vendor making new software). Is that right, and exactly which company are you employed by: A, B, or C? Oct 17, 2023 at 12:17
  • 17
    @unknownprotocol the "just test the software and tell us what to change" is so comically bad that it seems almost guaranteed that they are scamming OP's company. It's one thing to agilely discover unstated, unconscious, and undiscovered requirements. But the vendor is refusing to accept any direction at all about the general features they are supposed to be aiming for.
    – stannius
    Oct 17, 2023 at 15:54

11 Answers 11

78

It sounds like your management have been conned by the vendor, because this will be an extremely expensive process which will produce poor results.

You've got a pretty good summary of the problems right there, have you tried circulating it internally?

but this app handles regulatory rules with large penalties if missed, and I don't understand why we would not want large written documentation to ensure the new company understands all the rules

This is probably the strongest argument. If it's not taken seriously by your managers, can you take your concerns to your legal/compliance department?

7
  • 47
    I don't think it's necessary to get hung up on the word "agile", instead focus on the compliance rules and their lack of a compliance plan or any written statements about how they're going to achieve compliance.
    – pjc50
    Oct 16, 2023 at 15:46
  • 49
    @Graham the issue isn't whether or not they are "proper agile". The issue is you have no confidence that they will deliver something that meets your requirements, particularly w.r.t. compliance.
    – Caleth
    Oct 16, 2023 at 16:19
  • 1
    @Graham: see my answer on how to collect data which can be presented to IT as well to non-IT staff.
    – Doc Brown
    Oct 17, 2023 at 5:11
  • 1
    This is 100% what to highlight. If they aren't implementing any rules until you specifically ask them to, then how do you know that they are implementing security unless you specifically ask them to. And even then they'd only do the specific task asked instead of what is best practice. Not secure at all and asking for a future lawsuit. Oct 17, 2023 at 7:31
  • 3
    @pjc50 Yeah I think you are right. I'm so offended by their Agile claim that I can't get over it but it might not be the best way to highlight this to my management.
    – GHP
    Oct 18, 2023 at 16:36
45

Additionally, the vendor selected did not propose that they just take over our source code. Instead they sold my management on just altering their existing software's framework to handle our business needs too. So they are RECREATING our software from scratch instead of just taking over the source code.

You have 2 problems here:

  1. Remaking your software is going to be a time consuming project.
  2. You are forced into getting their help for long term maintenance, because they own the framework/product that your software is now written on. You will find it hard(er) to find people to maintain your new software, so you either cave and buy a maintenance from them, or remake the software again with someone else.

The term "agile" in non-technical deals really can mean anything. Sales people and higher up managers use this term freely because it sounds cool to non-technical people. The reality is that the methodology the team is using has very little bearing on the final product. From your client perspective, agile only really helps you keep track of their progress easier (so basically the opposite of what is actually happening), but this can be done with other methodologies too. Given the details you provided, they are simply using the term "agile" to woo you into believing everything they say.

Basically:

  1. You are being conned in a long game
  2. Agile has nothing to do with what's happening here
  3. Be wary of people saying "agile" too much, especially in sales pitches, they are likely trying to trick you. You should be able to check on their progress regardless of methodology. The methodology should be an agreement between you and them, not something one sided.
4
  • 17
    "Be weary of people saying 'agile' too much" - more generally: be weary of people using buzzwords too much. Cloud? Crypto? Blockchain? AI? Those can be immensely useful and powerful if used appropriately (well, 2 of those can be, at least). But people use the new and exciting nature of those things to sell nonsense to people who don't know much about those things.
    – NotThatGuy
    Oct 17, 2023 at 8:42
  • 13
    and complete rewrite means new bugs, and only them knowing ins and outs of that software Oct 17, 2023 at 9:06
  • 3
    "The methodology should be an agreement between you and them, not something one sided" - wow yes that hits it exactly. They are dictating the process completely. I will try to convince the business folks that this is not how things have to work
    – GHP
    Oct 18, 2023 at 16:21
  • 6
    @NotThatGuy I believe you mean "wary" instead of weary. Though dealing with all this would indeed make you weary.
    – DKNguyen
    Oct 18, 2023 at 18:22
31

When you said:

they sold my management on just altering their existing software's framework to handle our business needs too

It immediately turns the situation on its head. You haven't contracted someone to make software, you have bought their software and they have promised it is customisable to your needs.

This is super common, big firms write generic platforms and then promise they can do everything. It also explains why they don't want to do prototypes, because they have a live system and are just making tweaks.

Maybe that promise will come true, maybe it will take too long, maybe it will be free, maybe it will cost a fortune. Whether it's a good risk to take is super hard to judge.

Say for example there is no charge until its complete to your specs and you cancel at any time. Well then you just have a free dev team.

Say you are being charged per "sprint" of dev work. Well the contractor can do whatever they want and just get paid every month.

How to deal with this? It's everyone's favorite. Automated testing!

I would prepare large sets of dummy data, run them through your current application to produce the output of various processes and send them half the data.

When they "complete" a feature, ask them if they have run the dummy data through and if they got a 100% match. If they didn't, tell them the feature isn't done, please go back and don't ask for money for this sprint.

If they say yes, give them the other half of the input data and ask them to send the output, which you can then check against your results.

If you have a UI requirement, take screenshots of your app (with dummy data) and send them. When they complete a feature, take screenshots of their app and do a comparison overlaying the images in photoshop or image magic. If there is a one pixel difference, send it back.

If they say no to this, tell them it is a requirement of your application to be able to produce such test data, and that is the first feature of the customisation that you require.

If they argue this is unreasonable, say that you need to be able to produce this data so that auditors can check the app legal compliance with data protection laws. or iso 91000 or GDPR or just say "security"

This will quickly kill the project, as it will be next to impossible to recreate the logic from the end results of processes and the risk of being held responsible for breaking the law will be high for the contractor.

Meanwhile, spin up your own company and rewrite the app with all the changes you have been wanting to do, and sell it to your current company so you can retire. When they want changes, hire contractors and pass on their wages + 20% per sprint.

10
  • 7
    Good answer, but be careful with the last paragraph. Where I work, it is normal to have a contract that makes all work-related output property of the company, even if done on your own time. In that case, your old boss would sue your new company, and obtain the app, and you will be left with nothing. Check your contract first.
    – user132647
    Oct 17, 2023 at 10:12
  • 1
    of course its a bit tongue in cheek, but given that they don't want to run the software and are looking to outsource it, it could be a viable option
    – Ewan
    Oct 17, 2023 at 10:30
  • 2
    "If they argue this is unreasonable, say that you need to be able to produce this data so that auditors can check the app legal compliance with data protection laws. or iso 91000 or GDPR or just say "security"" - this will probably lead to an escalation, which the OP will unlikely win. I think there are enough reasonable requirements the vendor will fail to implement by its current approach, no need to set the limits artificially higher.
    – Doc Brown
    Oct 17, 2023 at 11:20
  • 7
    @Ewan: I actually meant your suggestion "If there is a one pixel difference, send it back.". Going this route will make the OP vulnerable for attacks by the vendor. Demanding an UI with screens showing equivalent content is something one can justify (maybe with references to laws and regulations). Demanding an UI wich is equal up to the last pixel may cause the OPs boss to question the OPs mental health.
    – Doc Brown
    Oct 17, 2023 at 12:40
  • 3
    @Ewan thank you for your suggestion about the automated tests. As it happens, I actually happen to have a great set of tests that run on top of the app when initialized into a default state in the database. Its actually the thing I'm proudest of in the entire app. I can probably boil down my test suite into something more understandable (it covers like years of bug fixes) and demand that they match it. I have no idea if they do automated testing but I can def give MY output to my bosses in a way they can understand and just beg them to demand the vendor does the same.
    – GHP
    Oct 18, 2023 at 16:24
22

"Agile" does not mean "no planning", rather that you should expect and plan for changes to the plan.

If you are the customer you should have access to the backlog for the re-implementation, and this should include all formal requirements. You as the customer decide the content and priority of the backlog, while the vendor should provide time estimates. If you think the time estimates are higher than expected, or that the vendor consistently underestimates the time, or the features not implemented as described, you have the freedom to cancel the contract and stop development.

But if the situation anything close as described this whole idea stinks. You should be very careful with doing rewrites, since chances are they will take much longer than expected, and may not even reach feature parity, let alone any get any actual improvements. So they should have some very good reasons to even attempt this, "we want to use framework X" is not a good reason by itself. Likewise, switching development teams is a huge risk and should be done with great care, likely including lots of meetings, documentation, temporary transfer of developers, etc. Doing both at the same time sounds like a recipe for failure, especially without proper planning.

You may also consider what incentives the vendor have. Are they buying the product? If so it seem foolish not to require the source code, regardless if they plan to re-implement or not. Do they bill per hour? If so they are incentivized to continue development as long as possible. How does the profit sharing look? Depending on the details it is possible that the vendor does not really care about the success or failure of the end product.

14

I hope for you someone has made a contract which allows to make check points in short intervals, where you have a chance to measure the project's progress and where you can cancel the contract if progress isn't achieved in a reasonable amount of time, with acceptable quality.

What I recommend here is that you find a way to make the forthcoming (or the lack of it) of the vendor transparent - especially to your management. You could do this making a rough spec, where you list all the keypoints you want to see in the new application, maybe a list of 50, 100 maybe 250 points. Make sure there are not many "trivial" points here, each point should be a real business feature, or at least a feature slice. This will take some time, but you have an existing application, which means the current requirements are quite clear, and it should not take you more than a few days to make such a list.

Since your vendor claims to be agile, they surely work in sprints and deliver at least every one or two weeks a new release. Now you check how many of the key points they get right in each sprint for the first 3 or 4 iterations (and maybe you find also points which seemed to be correct in the last sprint, but broken now). If the vendor says they are agile, you should be allowed to take influence which features they are developing in the next sprint, so make sure they do not focus on the low hanging fruits exclusively.

Accept those key points when they are really complete, fully tested and documented, so they are a real, working, productive replacement for the corresponding feature in the existing app. You don't have to be unreasonably picky about this, like Ewan suggested about the UI. I made the experience people will take you more serious when you stay reasonable, especially management, and don't offer the vendor a surface for attacks against you. Just don't accept things which are clearly crap or violate business critical requirements.

That should allow your company to estimate how long the whole process will take at minimum (in reality, it will take even longer, since as we all know, unforeseen things usually happen in later project stages). So if those early estimates will already show the vendor will at least need 5 to 10 years of work to replace your existing application, you have all the arguments at your side to stop this nonsense before it is too late.

TLDR; use the vendor's claim they are agile to your advantage. Don't try to debate with them how they work, just measure their progress or non-progress, estimate. That will be the only way you can convince management.

10

"Agile" is not the problem, the rewrite is not (your) problem, your involvement in the rewrite until it is done is the problem, because it will take much longer than expected.

The question is "what can I say to my bosses", so let's start from your bosses goal. Your bosses wanted to spin off this project because they want your team to do other things. So far so good.

The new dev team needs stuff from you. They have their idea of what they need from you and you have your idea of what you need to give them. In the end they are the ones getting saddled with the result, so it's their call mostly, except for "how long is your team involved?", which does concern both you and your management, who wants your team to do other stuff.

The way you describe it, your team is playng a part, dictating what the product needs to do and checking the end product at each iteration. This is considerable work and will last for the whole time until the rewrite is done.

So, when will the rewrite be done? Usually rewrites of non-trivial software take forever, specifically a time comparable to the total time they have been under development since their beginning. This is seldom an acceptable time to invest and the reason most rewrite projects fail. Note that the exact time does depend on a number of factors and you do have a few advantages over the first time over, but even half of total development time invested is usually way too much. A good question to answer yourself is, how much work in the app was to replace (or throw away) parts of it and how much was spent adding more things to it? The parts that you replaced or cut need not be rewritten, but every bit that was added needs to be done again.

Try to estimate that before going on. You can even halve it because the requirements are now clearer than they were as they emerged the first time. Chances are, it's still a huge time.

So what do you say to management?

  • You tell them that your professional opinion is that the way this handover is going it is at a high risk of going on forever and that your team will then not be able to move on as planned in the foreseeable future.
  • You can also ask them what was the time window that was allocated for the handover to be complete and discuss whether there is a way to know if the rewrite is on track.

What do you say to the other team?

  • you would want to say that you don't want to be on call with them weekly until the end, so they should start to gather all the requirements and free you guys up and maybe call every few months. They would scream "WATERFALL!!! ANATHEMA!!!" and since they'd technically be right the conversation would be over.

Why is waterfall bad? "Agile" is the idea that if you start coding something usable right away (the "Minimum Viable Product") you can start using it early and then progressively improve it until you realize the original vision. This way of working has several advantages, including a faster time to market and the fact that putting the software to test earlier allows the vision to evolve and adapt in the mean time.

Notice a few assumptions:

  • get a MVP in production soon
  • time to market is important
  • the vision has not met reality yet, so it is going to evolve a lot

So, what is the MVP in a full rewrite? Unfortunately to replace the existing product it has to have all the features the existing product has. The enormity of this statement is why product rewrites fail so often. Moreover the product "vision" is already mature and will change significantly less drastically than it would for a new product and the time to market is "we're already there", as far as users or sales are concerned.

To sum it up, the advantages are less relevant than usual and there is the added cost of tying up the existing dev team, which is not present in a new product. This would make me opt for a traditional "waterfall" development there.

N.B. 1 - I would NOT do a full rewrite of the software but rather gradually refactor it into something portable in the new platform. But if I HAD to rewrite it, waterfall would be the way to go.

N.B. 2 - here "waterfall" mostly means prioritising gathering the requirements and freeing up the old team. A promising idea could be to write automated functional tests for all requirements gathered, so that the original team can be activated less often and they can be also used as a measure of how far away we are from the end of the rewrite

2
  • 3
    Yup. Agile is a good way of building new functionality: it focuses on delivering key features first, and gives you a tight feedback loop with the client around both requirements and implementation. But here, you're building - at least nominally - an exact clone of the existing functionality. So in the first instance, people using the existing system are unlikely to want to move to a new system with a reduced feature set, thereby limiting the usefulness of prioritised sprint rollouts. Secondly, there's no need for a feedback loop because the requirements are already fully defined!
    – Juice
    Oct 17, 2023 at 17:04
  • 1
    Yes its been interesting, being a proponent of agile generally, to be in a situation where its really not beneficial to test small pieces. They either clone the process or they don't.
    – GHP
    Oct 20, 2023 at 17:10
6

Just to answer "are they actually being agile" more concretely. The Manifesto for Agile Software Development says:

We are uncovering better ways of developing software by doing it and helping others do it. Through this work we have come to value:

  • Individuals and interactions over processes and tools
  • Working software over comprehensive documentation
  • Customer collaboration over contract negotiation
  • Responding to change over following a plan

That is, while there is value in the items on the right, we value the items on the left more.

In terms of how they're failing to do this, the most obvious failing is that whilst they're not following a written plan, they're also not responding to change (you are asking them to handle this differently, and they're refusing).

They're also declining to collaborate with the customer (other than in fairly specific ways).

You can also argue that you started with working software and what you now have is not working software.

They also seem fairly attached to their process (we write software then you tell us what to change about it). This is a subtle one, but a number of the original authors of the agile manifesto have expressed frustration that many "agile" practitioners believe in sticking rigidly to their particular "agile" process, and that this represents a failure to understand the goals of agile.

3
  • 1
    This argument about refusing to handle things differently is very weak.. "Hey agile shop, can you please stop using Scrum and follow a Waterfall process" is likely to be refused by any shop.
    – Doc Brown
    Oct 17, 2023 at 11:40
  • 2
    @DocBrown perhaps, although I know that Martin Fowler, one of the signatories to the Agile Manifesto, has said that in some cases the agile thing to do is recognise that in your current context something non-agile is the right answer. And doing something different doesn't need to be "drop scrum entirely and go back to waterfall". OP is rightly frustrated that they're unwilling to change course to account for their compliance requirements.
    – James_pic
    Oct 18, 2023 at 8:26
  • I appreciate the point-by-point shooting down of their "Agile" claim.
    – GHP
    Oct 18, 2023 at 16:28
4

What can I do or say to this vendor and my bosses to explain that this approach is (1) terrible and (2) not actually "Agile" which is the buzz work they are using to our executives who have a hard time understanding our complaints?

It seems your main complaint is that they aren't remotely performing a real investigation into how your current application works.

It seems ridiculous that they haven't asked for source code, if it was available, if only in case they might want to refer to it. Meanwhile, they haven't interacted much with the developers like yourself either. It's not clear what their detailed source of information is for what the application should do.

I would clarify with your management that they are being expected to reimplement the existing application, not devise a completely new design from the ground up.

If management agree that this new application is supposed to be derivative of the existing one, then perhaps invite management to wonder what their source of information is for how the application works, if not either the source code or the developers of that code.

Management may however ask, how are you expecting the contractors to approach the development? For example, are you expecting them to approach you for a conversation before developing each screen or piece of functionality?

1
  • Management is high enough up to probably not have any idea how the development is being done. However, we had a meeting today where they begrudgingly agreed to START writing down SOME requirements so I'm hopeful.
    – GHP
    Oct 18, 2023 at 16:29
3

Agile isn't right for everything. It's right for developing in situations with rapidly changing requirements.

You have a fixed target, and regulatory requirements (which tend to be fairly static).

this app handles regulatory rules with large penalties if missed

If it were my devolopment team, I would be going for bog-standard waterfall in this environment.

Add to that and the fact that your vendor clearly doesn't have any idea how to do agile anyway and is just using that as a buzzword to cover them not bothering doing the work properly, and I'd recommend you just cut your losses and sack them.

2

What I would do is go to your boss and absolutely sing the praises of Agile as a professional technique. Explain how useful it is to keep the flexibility in a context where you don't yet know the details of what needs building. Find a fitting non-computer analogy for it. One that feels plausible is "Agile development is like crafting something in clay rather than casting it in metal."

The goal here is to cut through the marketing buzz and make it clear when they'd want an Agile shop, and by implication when it isn't. You're trying to get a mass-manufacturing outsourcing partner, and they're insisting on doing everything as artisanal pottery. You don't have to say anything about any suspicions you may have that they may also be bad potters if the goal is cast iron.

2
  • As it’s currently written, your answer is unclear. Please edit to add additional details that will help others understand how this addresses the question asked. You can find more information on how to write good answers in the help center.
    – Community Bot
    Oct 18, 2023 at 16:11
  • I'm not sure what is unclear. The question is how to communicate the situation to non-technical management. I believe the best approach is explaining the appropriate context for agile development in a non-technical way.
    – Josiah
    Oct 19, 2023 at 6:45
0

I think that the description you made describes a problem obscured by political problems. It does not seem you have been on site enough to gather the technical details. It is possible that the vendor has a not invented here syndrome or it is possible that the vendor already had a framework to do something similar and they want to start from there the developement intead of starting from your code. That says nothing about the process they are using. Agile or not agile has nothing to do with it.

I suspect that all the pushing back happened because they don't want to let you know what they are doing. What framework and libraries they are using. You should actually wonder if they are hiding something and eventually explain the situation to the management. You might also ask the management if there were some special agreements, they promised to do the things in a certain manner or use developers with some specific skills (which might be missing).

For what matters the attitude about requirements it is possible that they are copying the behaviour of the app taken from the marketplace. You better check if there are new requrements that were not deployed. That should be the first things to check during the tests.

1
  • I'm still in the dark on how much testing of their app I will be allowed to do. But yeah, I am trying to think of a way to test the old requirements on the new system
    – GHP
    Oct 20, 2023 at 17:11

Not the answer you're looking for? Browse other questions tagged or ask your own question.