You remember the last time you were at home alone for a couple of days? Without your family, roommate, literally anyone who could judge you with a word or disappointed gaze?
The first day you woke up late so you decided to not make your bed. You had a busy day at work, so in the evening you ate some fast food and left an empty box on the table. It’s hard to say that you were making a mess, but your cleaning standards were a bit lower than usual. That’s absolutely fine if it lasted two or three days. But if you had kept it up for a little longer, your house would have looked similar to the day after a wild party.
Now just imagine that you continued to live this way for a month or two… or a year!
You decided to put money into your startup, so you probably don’t want to abandon it after the MVP!
What if I told you that the exact process described above takes place in the code of your application? You can’t see it, because your app still looks amazing. It’s exactly how you want it to be, since you can easily keep an eye on the visual part. But deep inside, somewhere on the servers, something begins to stink. You can’t smell it, but bad things just happened out there.
If that state goes on unchanged for a while, you can start to feel that stink from time to time. You feel the implementation of simple change requests takes more time than before. Your clients report errors to you a bit more often. Wait a couple of months, and I bet you will have a project that is verrrry hard to maintain.
Now I wouldn’t necessarily say that developers are responsible for this state of disaster. They are just people (well, non-technicals think differently), so even if they are best developers, they have at least some human behaviors. However, if you think that you hired wrong people for the job, you might want to find out how to hire software developers so that it never happens again.
Most of us tend to take shortcuts, that’s natural. Especially when we are under pressure of time or money. These pressures occur very often in software development, because it’s easy to underestimate the time needed to complete the task.
This is where the role of team leader is crucial. The developer needs someone who can say stop, calm down, let’s think about this code, I feel that’s not a good approach, let’s try to find a better way to complete this task. A tech lead should not just propose better solutions, but in most cases ask questions that guide developers to finding something better than they created in the first approach. If you think you do not need a tech lead, think again. Doing everything by yourself is never a good idea and if you're struggling to share your responsibilities we might have some pointers on how to overcome challenges in software development. For now though, let's get back to our subject.
Four stages of the fall
The sad truth is that when source code is a mess and changes are not well planned, the cost of new features increases exponentially. I’ll show you the four stages of the destruction of your software.
Developers who started your project slowly get tired of working with their own code. They feel sick every time they need to dig into it. Every change is like taking a step through the Amazon jungle.
The team of developers is still with you, but they are demotivated so every change takes more and more time and definitely costs you more money. You complain to them, they complain to you. Neither side will leave, so you stay trapped in this toxic relationship.
The team abandons your project or you decide to find another team. Maintaining someone else’s code is not sexy, so finding a team is not easy. But finally you find a new team and they want to see the code of your application. When they do… well, you are lucky if they still answer your calls.
The new team proposes to rewrite your code from the beginning or at least rewrite the worst modules. If the time spent by the previous team on module X was 30 days, the time spent by the new team to understand, test, and rewrite can take almost the same time! The new team is, at least in theory, better and have to work with ugly legacy code, so you have to pay them much more.
You end up paying two times for some modules: once for a lower price, once for higher price. Imagine how much time and money you can save if you start with the right team, and pay a medium price once!
Don't pay twice! Start by consulting our Tech Lead. Book a free consultation on processes and technologies
3 questions you should ask your developer team
This is an absolute must! Even if your developers are not the top of the top, if they write tests, the code will be much better, with less bugs, and all the changes will be much easier to apply.
Imagine you go to the doctor with a headache and you get a prescription for some serious drugs because your doctor just assumed(!!) that you have a serious disease without a single blood test. Come on, it’s the 21st century. It’s much better to check instead of supposing.
You can observe the same things in a programmer’s world. When a developer has no automatic tests and then makes a change, then ASSUMES(!!) that the whole application should work after that change. Just as in medicine, in 2020 developers have plenty of solutions to test their code. If they don’t offer software testing services, they just don’t care about quality.
Beware the teams which are not using any tools of this kind. It means they work in a totally unorganized way. They don’t have to use fancy, advanced software like Jira. It can be a simple tool like Trello. The most important thing is to start using it consistently for every single task. It’s very tempting to just say what should be changed, to not waste time on writing tasks. I assure you, the time spent on writing down what should be done is never a waste of time. You will be surprised by how much and when it will help you. I often go back to previously completed tasks, to recall the business context. Remember, this is a tool that you too will have to use to communicate with your dev team, to request changes and track progress. That’s why project management tools should also suit you, so feel free to propose some solutions if you find something that you prefer. It doesn't matter whether you want to hire in-house vs outsourcing software development team, picking the right project management tools is crucial for communication.
If you don’t want to take a part in the scenario described in this article, just don’t work with a team which does not perform a code review of every single change and doesn’t have a team leader. A group of genius individuals can create interesting code, but won’t deliver the product that you need. Even if you take the best eleven football players you can find, they will not make a team without a coach and a whole staff of experts.
Savings in the beginning are deceptive and misleading because, as you can see above, they will lead to serious costs in the long run. It’s really worth it to start your project the right way. In my work at a Python Development Company I often meet clients who are looking for help with their projects because bad software is killing their business.
Technology should help boost the growth of your future unicorn. Don’t let it block your ideas!