In the past decade, I have been hired by many companies where my responsibilities has been to fix and/or improve a software package built by an internal development team.
Software that was build by junior developers lead by business people.
Let me be clear I am not putting blame on anyone, I know a great many business people that are highly competent in their field and I highly respect them but in all honesty business people do not understand software development management and it’s subtleties.
A new project is though of, it look like a promising endeavor, in fact it has the potential to either save the company millions of Rand/Dollar or make a good profit. Before the project can become a reality though a “quick” proof-of-concept or prototype needs to be created.
The company specializes in freight and has no development skills, due to the sensitive nature of the project the company wants to keep it in-house, outsourcing is not an option. Budget is restrained because this is supposed to be a proof of concept.
The company hires a few junior developers fresh out of university to save money, it is only a POC after all.
The business is one or two years down the line and the software package has proven it’s worth but has become impossible to maintain, the junior developers have left for greener pastures because the pressure put on them was enormous and often unrealistic or the junior developers are completely burned out and unable to fix anything. The business owners are furious because the project is 6 months late and the software is not stable. Does this sound like gloom and doom? Is the software project at an end?
The potential losses at a staggering R 3 500 000 ($ 233 000)
A very hard pill to swallow for any company.
At this time, most companies call on either a senior developer or software architect to resolve the problem.
After a few months of hard work and permanent over time, the senior developer or architect breaks the news to business, the software needs to be rewritten from the ground up and business either panics or tells the senior that they do not know what they are talking about, more often than not business goes into in denial which exacerbate the issue exponentially.
By the time that 18 months have elapsed the problem is often so deep and complex that the most seasoned developer or architect I know battles to resolve the issues without re-architecting and re-writing from scratch whilst the rest of the team is stabilizing the current system to achieve business continuity. By the end of the first year, the losses are evident and climbing fast we are at a project total cost exiting 7 million rand and undoable damage to reputation.
Junior developers are often easy swayed and forced into situations they cannot handle, even if this is unwillingly carried out by the manager. They also do not have the experience to understand that best practices, methodologies, architecture, documentation and planning will work in their favor in the long term. Juniors tend to jump in the work head first unconcerned about the consequences and that is perfectly fine when there is an experienced voice of reason, which is not the case in our scenario.
Although the intent from business is a good one hiring many juniors thinking that they will be more productive and cheaper than a senior, this is hardly the case.
In our scenario, which is more common then we would like to admit, we are now 18 months later, R 5 000 000 spent, endless reputation damage, 6 months late, with staff issues and a product that barely works that is extremely difficult to maintain or extend.
Business often goes the live with it way it is and decide to do the re-write years later when the company’s development maturity has reached a point where the value is evident. Often, the company has lost millions in the process.
Hiring junior developers in a situation like this is not a bad idea, it is important to understand the value of having a strong senior developer or better yet a software architect in the mix. The senior/architect will bring the maturity into the team immediately, they will bring the best practices, methodologies, architecture principals, standards, documentation principals, planning and general wisdom that startup projects sorely need. They may seem like an expense but if you look at it closely they become assets and savings.
A 1 year medium project based on the same requirements as the scenario will cost you 2,5 / 3 million rand in the first year, an additional 3,5 million in the second year with no damage to reputation. Total cost 6,5 million rand, we still have the original team and the product is going from strength to strength.
Obviously, this is not always true, there are exceptions but I would wager that it would be true in most cases.
My last 10 years have been spent in this scenario and I was told more than once, “You should have started 2 years ago” and I agree, never underestimate the value of a senior or architect.