It’s sad but true that software takes longer to develop and costs more than most people expect. We regularly hear stories about delays to large projects and budgets being exceeded. Why does this happen so often? What are the myths surrounding software development?
Intuitively, it is easy to think that large teams will deliver sooner, and to an extent, that is true. But it is never as simple as doubling the size of the team will halve the time taken to deliver. If you have a simple, well-understood task to perform, the more people you have, the faster it will be done.
However, developing software is never simple. Each piece of functionality requires solving a particular problem, and there may be many solutions. While best practices and common patterns often provide a guide, the real skill is knowing which to use and when.
At the beginning of a project, it is usually best to have a small team who will work out and put in place the architecture. Only when you have reached a point where the main problems have been solved will you gain benefit from increasing the size of the team. At this point, the solution should be well-understood, and new developers will be able to follow the patterns already in place.
Most days, I get an email from somebody asking if I would like to work with their offshore team. These emails always make a point of highlighting how cheap they are. Having worked with developers from all around the world, I’m well aware that there are many very good developers in offshore locations. As the cost of living tends to be lower than in the UK, the day rate for such developers is often significantly less than it would be for UK-based developers.
The most obvious challenge when it comes to working with offshore teams is communication. Different time zones, languages and cultures can each hinder communication.
If a developer in India has a question about requirements first thing in the morning, and the person providing those requirements is in the UK, they may not get an answer for 4 or 5 hours. And if they are in New York, it may not be for 10 hours or more.
We might think that if we all speak the same language, we should be able to easily talk to each other. You only have to look up one of those sites comparing what the British say with what they mean, to recognise how easy it is to misunderstand someone from a different culture.
Issues with communication have the potential to slow down development, meaning it takes longer and ultimately costs more.
Gold plating, or adding unnecessary features, is not caused by having too many experienced developers. While developers sometimes do gold plate their solution, it’s more likely a sign of inexperience. They may want to make the client happy or demonstrate their ability. It may even not be the fault of the developers. It could be the result of someone else wanting to add extra functionality to gain credit.
In practice, the best teams have a good mix of experience. Some problems don’t need 20 years of experience to solve. The benefit of having good, experienced developers is that they will lift those around them. They will share their knowledge and act as a catalyst helping other developers to solve problems more quickly. They will draw on their experience to help their team avoid common mistakes. And sometimes they will just do something faster.
Counterintuitively more experienced developers will often write less code that is simpler and easier to understand, leading to fewer bugs and more reliable software.
Elastic Mint specialise in providing small teams of experienced developers to solve problems and experienced individuals to work alongside existing client teams. We don’t compete on price, because we believe that bringing in the right people with the right skills and experience will always provide more value to our customers. Perhaps we can help you.
Crystal ball available from Goldenhands