Huge technical debt and small team. How to deal with this
We have a large project with an existing user base that we can't loose as its our main financing source.
However the project has no sound engineering base and it grew with a "add-a-mini-feature-here-please" logic over the years.
We managed to get some small funding, some personal investment and keep going.
Now it's obvious to me (as CTO) that this is not enough anymore.
We reached this year the right size for "scrumming" and I immediately involved all developer and management in Agile and SCRUM methodology through external training.
However it's still very clear to me we are too few developers for the project at hand. Maybe, but maybe, with a better engineering the project would be more manageable but we have a lot of external dependencies (third party integrations), a lot of graphical and UX development on which we are not very skilled, lot of testing (mainly UX testing, not easy), no testing automation at all.
Even so, main reason we are struggling is with sales, actual and potential customers are not complaining a lot for bugs or old fashioned graphic.
The spectre of refactoring or rewriting is lingering over us.
New customers must be set up at the same time and wishes for new requests must be fulfilled.
Apart from running away as soon as possible, what would you suggest to me as CTO, now beginner scrum master?
We are trying hard to find more funding, but probably marketing and sales will take a big part (and it would be correct as we almost spent anything for marketing)
It sounds like you need to work with marketing and validate an MVP for pivoting to a new architecture or platform. The Lean Startup by Eric Ries is a good source of ideas.
If I understand correctly, your company has a Commercial Off the shelf product that has been tailored for several clients. The main focus has been on working on the tailoring and little focus has been given to your Base Commercial product. Your team is small (even smaller in the past).
The Commercial product has now become more or less 'out of fashion' (e.g. Graphics, platform etc) and finding new customers is therefor difficult.
Your existing clients are pressuring for an updated version of their package as well. Your responsibility in it all is to:
1. bring the commercial product up to date.
2. bring every tailored version up to date.
3. get rid of the backlog for the commercial product.
4. get rid of the backlogs for the existing clients
5. be able to tailor the commercial product for any new clients.
Monumental task with a small team strapped for cash...
I won't recommend to go for a big bang re-architecture approach. I believe the Emergent Architecture concept can work in your case too.
1. Identify what all needs to be re-written
2. Estimate them
3. Work with Marketing, Sales and other departments to share the Cost vs Benefit
4. Prioritize the re-architecture work along with the new features and new customer on-boarding
5. Pick up one small item at a time, preferably an End-To-End piece
Hi Marco,
I agree with Ian here, although he hasn't taken a lot of time explaining you the details.
You are undergoing the typical product replacement or transformation challenge which any organization undergoes as sales and marketing does not realize the potential damage the outdated product can cost. It may look working all ok at the moment but is not up to where the market is and soon might not be fit for purpose (look how we are evolved from the world of DOS to Desktop and to Mobile Apps fairly quickly).
You stated, 'actual and potential customers are not complaining a lot for bugs or old fashioned graphic' and they may not until you ask them specifically or they may not even bother complaining, until you realize they already left you.
So the trick is to convince the sponsor how badly the existing product is engineered (might have done years back) and what advantages the new one will bring by transforming to new standards, what's current pace of delivery and what will be the new pace, what flexibility it would offer etc. etc.
Once MVP is agreed, best is to pilot with few selected user-base and key is to get feedback, inspect and adapt the PB. This would also mean, you will have to run both old and new product in parallel for certain time, the situation which you cannot avoid but it will lower down the risks significantly compared to big bang approach.
Initial funding could be only for MVP and Pilot - you can control it by keeping the scope really to MVP as the name suggests.
Let us know how you get on.
Pankaj
yes...nice summary of the situation...the point is to estimate in some way this Monumental task...and get funding
@Pankaj & @Ian
I like the concept of potential damage and cost, marketing & business will understand it.
I would love to convince the sponsor about how bad is engineered the product because it happens to be true, but ehm I should find another language to express it, since I engineered it myself...
It's not really a matter of pride, context was different, scope was not clear etc, bla bla, it's probably a matter of trust...
I could I tell the CEO that the software he founded for many year is so bad that needs to be rewritten completely and that I would like to do it AGAIN...
But yes the approach you describe seems to me the best one....
Yes @Marco, good luck with the right wording. Words like toxic and 'unfit for future' are usual ones used these days. What was done in past was fit for that time.
Cheers
In a more Marketing Language:
You're running a Hotel and the bathrooms, decor and furniture are outdated. Next door a new Hotel has opened which is modern and is taking a lot of your potential guests.
You decide to renovate. You have the following choices:
1. close the hotel for some time and renovate all rooms. Have a grand opening event after.
2. renovate room by room. Market the new rooms and let new guests stay in the renovated rooms. All new rooms can have slightly different furniture and wallpaper.
It all has to happen with minimal disturbance to the existing guests, some of them are long-term residents...
How would your Marketing division handle this situation...?