You can be the most skilled and experienced developer on the planet but even that won't help you when you find yourself in a situation that requires you to meet a tight deadline. This type of challenge is the bane of every developer’s existence, almost akin to a name best avoided, like one Lord Voldemort from the Harry Potter series. After working on a couple of projects, it becomes evident to any developer that life just doesn’t go as smoothly as you expected it to. Uncertainties can occur when you least expect them and no plan is foolproof.
Distractions can and will occur in any field of work as will the random things that seem to pop out of nowhere when you least expect them to, making you wonder what else could possibly go wrong with your day.
The reason why it's so complicated to give a concrete ETA (estimated time of arrival)for a product that you are working on is because you just don't know how long it's really going to take you to complete, and you most definitely can't look back on a previous project and use that as your reference point. No project is ever the same and life is wild and unexpected at its best.
You may have an inkling of how the project will evolve but in reality, we are forced to deal with different variables which don’t necessarily align with our dream scenario. Recently, I was working on a project for the company that I work for. At the time, it was relatively smooth sailing with only a few if any bumps in the road. However, I couldn’t have been more wrong in my assessment!
You see, it’s important that you factor in the unexpected. In my case, I lost a few crucial workdays because of some unexpected admin work that needed to be completed. There were also some problems with the codebase which required lots of investigation. These were things that I never would have considered because I had a perfectly planned out picture in my head and there was still so much time till I had to meet my deadline that I didn’t stop to think about unforeseen challenges that might come my way.
Another thing to take into account is that other people involved with the project are likely to have their own ideas and expectations as well. So while they might assume that it’s going to be a piece of cake to build an element for an application, in reality it may take a bit longer and require some research so you might not actually be working on it the whole time since there are other things that need deconstructing as well.
A major topic worth discussing has to do with the constant changes and feature requests that developers find themselves dealing with during a project's lifecycle. Giving an accurate ETA requires a significant amount of thinking and planning. You simply can’t say the first thing that comes to mind because work environments tend to have many changing variables and nothing is fixed. In some situations, you might find yourself working on multiple projects that overlap, something you’ll also have to take into consideration. In general, working for large organizations tends to give you far more opportunities for projects.
Having both an internal and external resume ensures that your profile is readily available whenever a project that matches your skillset is secured for the business. More opportunities lead to more events and alternating between various contexts. Taking all of this into account, there’s no wonder a developer’s calendar is full of meetings and calls, which have to be factored in as one of the aforementioned variables and time constraints.
Another thing that gets unnoticed is the fact that a developer's work life is jam-packed with meetings and events. Meetings can be scheduled unexpectedly and this can cost you valuable coding time. Nobody likes to take a break while they're on a roll, but you have to consider that these types of distractions end up costing you an average of 23 minutes and 15 seconds before you are able to get back into the flow of things. While working on a project, priorities are constantly changing so it can start to become quite complicated to give accurate estimates since you can’t say for certain how many free hours you will actually be able to dedicate to coding per day.
It is not outside the realm of possibility that you have already agreed to a deadline for when the project should enter the minimal viable product (MVP) phase. But as you’ll soon come to realize, changes can happen even when you think your deadline is already set in stone.
For example, I can recall various other issues related to the deadline on the same project which I mentioned earlier. Concerns were raised when additional feature requests, design changes, and new copy flows were introduced. The app wasn’t even close to being ready and my workload had tripled in a short amount of time while the deadline remained the same. This type of stress can really only be described as insane, when you are given more work to do than days available to do it.
External factors can be absolutely detrimental to a project. Let's talk about the elephant in the room, i.e. “COVID-19”. In 2020, a long overdue and highly anticipated computer game was released to the world. The game had been delayed for months which was already a huge red flag. The developers continued to give excuses for the delays while convincing everyone that it was just a matter of time before they launched the game. Well, the game finally launched and it was a disaster. It had so many bugs in it, that it was almost completely unplayable on game consoles.
We are only humans and we can’t predict the future. I bet when they were working on this game they could never have anticipated a global pandemic which changed the shift of work from offices to remote working. It came at a bad time because it disrupted their entire project workflow leading to delays since the team wasn’t able to work efficiently on the codebase.
I can think of dozens of examples when I was working on a project at a company which unfortunately got delayed because of some unforeseen bugs that just popped out of nowhere. In my mind, I knew the code that I wanted to write. I had done it many times before. But then some random bug showed up and instead of completing a feature that I’d planned to have done in about an hour, I had lost half a day trying to debug something that was behaving unexpectedly and was throwing me off my game.
While writing these words, another high profile computer game has been delayed due to the pandemic. The development studios released a statement saying that the global pandemic had created unforeseen challenges for their development teams and that they would need the extra time to complete it so that it would be at the level that the fanbase expects it to be. I for one welcome the delay because I think the gaming community has learned from previous failed launches how to avoid a large backlash.
ETA's are just difficult to contemplate; there is no "one-fix" that will immediately give you a solution to this dreaded problem. Although that may be the case, hope is not lost if expectations can be tamed and adjusted right from the beginning so that everyone is on the same page. And there’s no harm in explaining the problems that can arise and letting the client know that developers are not wizards like Merlin from King Arthur and Gandalf from The Lord Of The Rings series. We don't write spells, we write code, and sometimes it breaks.
While it may not be possible to alleviate all your worries, making a good plan, investing in project management, team meetings, and a well-defined architecture setup from the start can go a long way. They can help give you and your client the confidence that you will eventually manage to get things working according to schedule.
Hey my name is Andrew, I'm a Software Developer from London, England. I have been working in the tech industry for more than 6 years and throughout this period I have picked up lots of cool skills which include programming, design and even soft skills like networking and creative thinking. When I am not working I like to watch Anime and draw Manga art. I also happen to be a content creator and writing is both a passion and hobby.