Before you continue reading, I know that this article and even the headline are controversial. However, as the truth can be ugly, I still decided to write about this topic. In this article, I’m going to describe how the relationship with your software development agency needs to change. This change is in the best interest of both parties involved. I will show you the reasons why the reputation of certain software development agencies is anything but good. Additionally, we will discuss how an equal part of risk-taking should look like in the world of software development. Before we really get into the topic – this is my personal opinion based on my experiences.
The time when a requirement specification was given to the software development agency
A long time ago there was no agile mindset, no scrum, no lean start-up method, and no MVPs. I guess most of you still remember that time when you were forced to write down a terrible long requirement specification and handed it to the software development agency. Almost all the details and concrete specifications were written down. Based on that the company had a good chance to give cost and time estimation. Very often the projects were handled as so-called fixed-price projects. The obvious benefit of that is the customer has a valid foundation for business calculation and budgeting.
The truth, however, was that for every change or deviation from the original specification a change request had to be written. This again was estimated by the software development agency. This gave the software development agency the possibility to control their internal effort as additional development needs to be paid extra. Depending on the relationship the whole change request topic was a political nightmare. What do I mean by that? Well, there were situations where the original fixed-price project was relatively cheap compared to other proposals. However, the high costs occurred later in the additional development for ongoing changes.
As you can imagine with the current environment there is almost no chance of writing concrete requirement specifications. If you as a product owner have no idea how the actual product will look like at the end, how on earth do you want to write a specification requirement at the very beginning. Also, the whole change request topic was not fast and lacked flexibility.
Time & Material as a solution for faster development and flexibility
When I started my first job in consultancy, I always got the impression that time and material projects are the best things that could happen to the consulting company. Honestly speaking, at the beginning I didn’t understand why. However, after all these years I completely understand the ulterior motive.
The main concept is that you sell a project which included several days for consulting or development. Additionally, any other expenses are paid on top of that. In my experiences at the beginning of each project it is estimated how much time is actually required to complete the job. This number is then multiplied with the daily rate and et voilà you have your project calculation.
This approach has many benefits in terms of flexibility. The software development agency has no risk in estimating software development costs and effort. Additionally, the customer has the flexibility to come up with the actual specification for this project. This being said, this approach fits better with the agile environment and all its challenges.
Employee leasing instead of project work
Nevertheless, I also see a lot of disadvantages with this approach. This is rather due to a wrong understanding of the idea behind the concept of time and material. Especially in the field of software development where there is a shortage of experienced experts, the system is abused. Instead of delivering a project including its success criteria and goals some companies are offering pure work output. I don’t call this a project I would rather call this outsourcing or employee leasing.
Is employee leasing a bad thing for a software development agency?
The most suitable answer to this question is the following: It depends 😉 There are situations where employee leasing can be a good thing for both parties. Especially, if you need skills and knowledge to accomplish a project which you can’t build up internally. Also, in terms of workload peaks employee leasing can be a good option. However, it must be clearly said that you need to take extra care of the right employee integration. As you can imagine you as an employee always need a home where you belong to. It is discussable whether your home is the client’s company or the company writing your paychecks.
The most important part however is that the conditions and circumstances are clearly communicated. This is exactly where the problems occur. What is officially sold as a project is nothing more than employee leasing or outsourcing.
Risk Distribution and code monkeys
Of course the time & material has its benefits. However, what I really do miss in the project organization with external software development agencies is an even risk distribution. The question at the end is what do I deliver? What are my success criteria? Do I deliver a success (however success is defined) or do I only deliver the working hours? I think there is a huge difference here. Furthermore, I think the mindset of delivering success is crucial.
What do I mean by even risk distribution? Well, if there is a software development agency that is only in charge of delivering the working hours or in other words the people doing the work, then less risk-taking is required. Why is that? Of course, there is a risk that the overall utilization can’t be met, but this is a general business risk for every consultancy. If the company is not being held responsible for the project’s success then the client is taking all the risks for a successful project. If you think about it’s a terrible thing.
It can lead to what is often called „code monkeys“. With this term, I describe software developers who just simply do the work of programming as they told to do. Without thinking about the later consequences or ways how to do it more efficiently. Here is exactly the point where the even risk distribution comes into play. If I don’t get any incentives of doing something more efficient why should I do it? There is no benefit in being more efficient and achieve more tasks.
Additionally, I think a software development agency should not only do the work of development. They often have tons of experience in developing software products. This means it should be nothing special to consult my client in the right cloud infrastructure, test procedures, or also how an MVP should look like.
One very important notice. This doesn’t apply to all software development agencies. There are really great ones out there, who really understood the concept of delivering a successful project and not only ensuring their utilization.
Who has skin in the game?
My main argument why the relationship with the software development agency needs to be reconsidered is the missing incentive for a successful project. The short-term thinking of just selling working hours to ensure utilization isn’t sustainable for all parties.
Software development agencies are forced to work more success-oriented. This means forward-looking development, consultancy about how to develop an MVP, or how to validate your ideas. Clients often need help when introducing a new software product. Especially, if they do it for the very first time.
Use the knowledge you have!
Use the experienced you gathered while developing multiple products for other clients. Focus on the outcome instead of the only output of charged hours. This also includes always working in the most efficient way. Do not develop features too complex just because it is a technology challenge. Do develop features in a way most economically for the client. Even though this means fewer hours charged.
Make your success depended on the project’s success. This means to support the client when it comes to MVP validation, the right cloud infrastructure, software tools, or team setup.
How can a software development agency work in the future?
I think we need more flexibility in terms of business models and payment possibilities. If a software development agency starts seeing itself as an equally shared partner instead of a service provider we have multiple ways of doing business differently.
What are some concrete examples for the arrangement?
- The compensation for the software development agency is a mixture of hours delivered and other key criteria such as paying customers, validated hypotheses, active users, and others.
- Clients share some parts of their revenue or profit and use it for compensation. It’s the same idea as the first point. This time instead of paying 100 % of the costs directly you share a defined part of the future income.
- The client and software development agency decide together the maximum costs of the software project. This is the final budget for the project. The agency is then forced to come up with ideas on how to deliver the most outcome with the defined budget. If the budget is depleted and the product is not usable it is the fault of both parties and no success at all. This of course requires the client to give more thought about what really needs to be developed. On the other side, the developers are challenged to come up with the simplest solutions and not the most technologically advanced ones.
- The team working on the project consists of employees from the client-side and external developers. Knowledge must be shared among others. This requires somebody who has the time and capabilities of learning from the external workforce. Additionally, the goal of the software development needs to be that the client can do the work by themselves in the future. In other words, it should be the goal of becoming obsolete, because the knowledge and skills are being shared.
Doesn’t that sound a little unrealistic?
Well, some parts and ideas may seem a little odd. But, the more you think about the more you ask yourself why still companies do not act like proposed. I think there is a win-win for both companies. The benefits for the client are obviously, but also the software development agency benefits. First, the employee motivation rises as the developer has more the feeling of working on something sustainable which will not discard once they leave the door. Secondly, the reputation will improve dramatically.
Another argument why these ideas don’t sound unrealistic at all is that we as a company work exactly like described. I guess you could imagine this after reading this article 😉
More so, we evaluate every project from a technical perspective as well as from an economical perspective.
I'm Sarah, and I've seen quite a bit in my time in the IT industry. Right at the beginning of my career as a consultant, I developed a feel for my clients' needs. Later, as a software development team leader, I brought various digital products to market.
I find relaxation deep underwater. I am a passionate diver and do not shy away even from icy mountain lakes.