5 Reasons Why You Really Do Not Need More Developers
2019-05-13 | Marcin Michalski | development rad
Do you want to make an app? Do you want to make an app quickly and with low risk? Find out about alternative solutions and stop thinking about hiring developers!
From the article you will learn:
- whether the process of launching applications on the market can be accelerated;
- whether all application functionalities must be provided immediately;
- what to do when the team’s performance decreases;
- what to do to reduce the chance of errors in the application;
- how important the application quality assurance process is;
- what are the consequences of the lack of a Project Manager in the team.
It’s not that I believe that software development services are not relevant. Quite contrary especially since I’m running software development agency for over 7 years. However there are moments where you naturally may think that the solution to all your problems is to hire extra software developers while this is not necessary the case.
In this article you will find out when you should not think about hiring software developers and use alternative solutions that will not only help you save time and money but also allow you to end up with a better application. Because new product development starts with a well-thought-out business strategy supported by technical and technological skills of owned or hired team.
The text describes real examples that I experienced during my career. I tried to cover 5, in my opinion, most common topics which address different stages of development life cycle of digital project where you may think that you need extra developers. So, you don’t need more developers when...
1. You want to speed up the time to market
Sometimes you see that your dev team is not delivering solution fast enough. Of course the easiest way would be to add extra capacity into your project to speed up. However this may help you address current situation but not necessary the root cause, not mentioning how it will affect your budget. There are several reasons why the dev team is not moving fast enough which I will describe later on. Before you start an expensive recruitment process, talk to your team and find out what may be the main cause.
2. You have a lot of functionalities to deliver
Yes, obviously if you need to provide specific functionalities there is always a need to have someone who will make them. However believe me or not, some of the functionalities that you will have in your software are not unique. Lots of applications need to handle user management, registration, login, profiling, payment functionalities or shipment. This is nothing really specific to your case so check if there are some ready made solutions available on the market which can do that for you and you can use.
Moreover some software agencies, at least the mature ones, switched to something which is called microservices. The solution was first introduced by Netflix and now is more commonly adopted by the IT sector. This is a new way of designing software architecture as a set of many small micro applications which can be used in several large applications also in yours. If software agency has such microservices they usually provide them to theirs customers free of charge, so check if the one you are working with has some microservices that you can actually use in your product.
This could reduce necessity of your software development capacity even up to 15% and you can use this budget for adding new features or to invest in sales and marketing of your product.
3. Developers performance is going down
Sometimes you may wonder why at the beginning of the project developers delivered functionalities faster and now it’s slowing down. Are they tired with the project? Maybe they don’t care about it anymore or maybe new functionalities are more complex than the previous ones and you really need more developers.
Very often when you kick off the project you just want your developers to go straight to implementing functionalities and hence they don’t focus on preparing proper foundation for your project. At the beginning it allows you to speed up, however once the project evolves, the application is getting bigger and your technological debt is getting more frustrating. Not only for you but also for you dev team.
Since the dev team doesn’t provide functionality on time you want to increase the capacity of the team to speed up. This solves your problem only temporary because after some time your project starts getting bigger and so is your technical debt. Soon you will realize that the dev team is slowing down again.
The Continuous Delivery Process
If you want your team to be efficient, invest not only in developers but also in devops (development and operations). Devops will help your team to become more efficient by setting up Continuous Delivery process which involves elements like Continuous Integration servers, project containerization and automatic deployments of your tests, staging and production environments. This will allow your dev team to focus on your IT product development rather than struggling with setting up environments, servers or production deployments. This will also help your test team, if you have one, to quickly detect bugs thanks to automated deployment of new version of your product into test environment.
4. There are too many bugs which can take too much time
We have lots of bugs so we need more developers to fix them. But the right question is, why do we have some many bugs? Is it because our developers are messy or maybe because we are lacking of real Quality Assurance process.
While talking to customers, I am often being asked, why there is so much time needed for testing, or why developers can’t check the code on their own? Sometimes I’ve been told that testers aren’t needed because client will test the product on his own.
Approaches described above have several consequences. First of all programmers are not testers. They are usually trying to check if the system works according to specification - so called acceptance testing. What they don’t check is abnormal behaviour of the system like corner cases, improper usage of the system - so called exploratory testing. And actually the exploratory tests are the ones which usually discover numerous bugs.
If client wants to test the system on her/his own, s/he usually focus on newly delivered functionalities. What she doesn’t check, is whether old functionalities were impacted by the new ones. The reason to do so, is that a new code can break previously working functions or introduce errors, or create bugs. Testers would perform regression testing which, by the way, if not automated, may be very time consuming.
The effects of the lack of a quality control process
In the end, lack of real Quality Assurance process might become inefficient. Lots of bugs might get through into live system and stay undetected even several months after. If the bug is detected in the later stage of our project, the cost of fixing it might be drastically higher. Just imagine a software developer who programmed the functionality several months ago and now s/he needs to fix the bug which was discovered. Trying to remember what this was about will consume lots of time. Moreover if the code changes were introduced some time ago the developer might no longer be with your company. Apart from fixing the code you might also need to involve Data Base administrator to fix your production database which was already corrupted by the bug.
The bug may also cause additional financial loses. One of the banks, I used to work for, had an issue which placed wrong price on the insurance contract. They lost a huge amount of money thanks to that. Besides finances you can also suffer reputational loss which are hard to express in numbers.
That is why instead of increasing capacity of your dev team, it is better to invest in good Quality Assurance process in software development life cycle. It is necessary to ensure an appropriate standard of software development. Testers should not only be able to perform manual tests but also to run test automations. Thanks to that you will be able to run regression tests every time when you need to publish new updates of your product. This will help to detect more bugs in your product right after they were introduced and reduce the risk of publishing the bugs in production. As a result your dev team will be able to fix them quickly and focus on new functionalities.
5. You don’t hire a Project Manager
Fish always rots from the head - this also refers to custom software development projects. It is important that your dev team is managed by experienced Project Manager. Someone who understands both business and technical world. You might not understand technical world and developers might not necessary understand the business one.
Good Project Manager should verify if developers fully understand what needs to be delivered and whether the team is on track with the functionalities or not. PM role is also to challenge your requirements to find out if they are relevant to the project. If you would ask developer to implement some changes he would probably agree ad hoc. PM on the other side, will ask about the reasons why you want to make those changes and what do you want to achieve.
Thanks to that PM can filter out functionalities which are irrelevant in order not to flood your dev team with features which, in the end, occur to be needles and don’t impact your products success. Moreover, during such discussion, PM basing on your intention can actually find another solution. Which usually will be more suitable for your case.
You usually don’t need extra developers, you need to review your processes
Of course, software developers are indispensable element of development life cycle. But it’s worth to emphasize that they are only one element of the whole bigger thing. Programing skills need to be surrounded by at least few others, like testers, devops, PM, UX/UI team and microservices. All of that will help you in achieving your goal. Trying to cut expenses or only focusing on developers may cause more problems than you think. Only thanks to the synergy of people with different competences, it will be easier for you to do the product development cost estimation and control the entire process. As a last resort you can always decide for outsourced product development and hand over your IT product to the Technology Partner, who will deal with the process of creating it in a holistic way. In the end it’s your time and money so invest them wisely.