I had several jobs in my life, and one of them was painting houses.
This post is not an anecdote, instead, it is an analogy between our work as developers and something more familiar to the rest of the world.
So, let's get started!
What if your next job was as a painter instead of a front-end (or any other) JS developer? And you had a "standard" team you would have in a web project...
So, you have your manager, designer, backend developer, and, of course, a client.
And here the usual story goes... Your client Mr. C asks of you an offer for painting the interiors of his house.
The manager wants to make an impression on the client, and rushes to the team and asks for an estimate on the work required.
The team gathers and starts to discuss. The usual questions pop out and the manager has the answers ready, how many square meters does the house have, how many windows and doors, does it have furniture... All of a sudden the designer asks the purpose/type of the house, and everybody turns to him and gives him "the look". Why would he ask such a stupid question? The client asked to paint the house, why can't he just say what colors to use on which wall and get it over? Everybody ignores him and continues to estimate.
After a few seconds, a question pops in your head and you say it out loud "how old is the house", since you are the most experienced painter in the team it seems logical to ask such a question because... but the manager interrupts your thoughts with a loud voice, making sure everybody understands what he is saying "could we cut the stupid questions? WTF has the age of a house have to do with our job? Please focus on the estimate". You doubt yourself a little bit and go silent until everybody will be in a better mood.
After an hour everybody has put his expertise to work and came out with an estimate.
For a house of 100m2 = 325m2 to paint (the ceiling is at 2.25m so there is 10x10x2.25 of sidewalls and the ceiling)
Painting: €1300 (€4/m2 * 325)
Material: cca €300
But the manager gives a second thought and decides he will add 30% to the €1900 and rounds it a little bit.
It is time to give the offer to the client. The client accepts delightfully the offer of €2500, which is much less than he expected.
The manager comes back to the team and "We have a contract! We are gonna earn some money!!".
Everybody is cheerful and the manager hands the address of the house. WAIT!! The developer realizes that the house is 50km up in the hills and they will have to travel each day to that location. The manager makes a quick adjustment to the project and proposes to work longer hours but they will have fewer days to travel. Not everybody is happy but it is what it is.
The next morning everybody is pumped out and just wants to get started. Even the manager decided to give a hand. They go to the store and buy the paint and brushes and head up to the hills for an hour-long ride.
It was an older house but well preserved, at least it looked like that from the outside. The team unpacked and entered the house. The inner walls had some cracks and they needed to be filled before they start painting. They realized they didn't bring any filler,. so the manager jumps in the car in an "agile" way and heads to the shop, while the designer and two painters start enlarging the cracks so the filler can enter.
The manager was back with the filler, which added €50 to the costs and an additional €120 for impregnation. The store manager recommended it to him because a wall with so many cracks would need it. He openly asked the painter (you) "why didn't you add the filler and impregnation to the costs?" and you reply "I've asked how old the house was, didn't i?".
You both decided to pass on this one since there was much work to be done and discussing simple mistakes wouldn't help.
The next day your team starts painting after the impregnation has dried out. Everything is going as planned, apart from moving the furniture. The client said there was furniture, but it was very old and heavy. So it takes a lot of time and effort to move it around. But as a team, you cooperate well and the furniture is out of the way. Because of that, it will take one more day to finish the job, but it is not such an issue since it didn't cause additional costs, apart from the travel.
The first coat is almost over and you have two more hours of daylight. So the team decides to go out for a beer to celebrate.
The next day everyone is at the house preparing for work, but you notice that there isn't enough paint to finish the job. The manager pulls out the estimations and all of a sudden his eyes open wide and his head is turning red. "How TF did we mess it up like this?" You take the piece of paper from his moving hand and soon find out that you forgot to calculate the inner walls. The estimate was only for the exterior facing walls, not for the kitchen, bathroom, and other inside walls. In a split of a second everybody is yelling at each other and pointing fingers. For a few minutes the rage goes on, but everybody manages to go quiet, but can't look each other in the face. By making a quick measurement and calculation you estimate that another €200 of paint is needed. The manager jumps into the car and runs off to buy more paint.
As much as the team has put the effort in finishing the job, due to the delays you can't finish it on time. The whole team is traveling home silently. Not a word was spoken.
The next day you all gather at the house and are in a better mood because there are just several more hours to finish the job and you are off.
By the end of the day, the work is finished. Everyone is still quiet but the work is done. The team waits for the client so he can take a look at the work and pay you off.
After several minutes in the house, the client is pretty happy with the work done. Everybody looks at each other silently, congratulating each other with a nod.
The client just has one remark and says it out loud "I noticed you didn't cover the furniture and floors, so I guess I'll pay tomorrow when you finish cleaning". And there is one more day and one more travel...
Now, take a few deep breaths. Try to calm down. Yes, it is happening all around the world.
There are many things that you can overlook in your project. Even the simplest ones. And it all adds costs to the project and lowers your profit. It is very easy to look in the other way and pretend it is not your job, or even to point fingers saying "You didn't give me enough time", however, there is responsibility toward your team, your firm, client, and in the end toward yourself.
The potential risks you can anticipate on each project or task are somewhat of an indicator of your and your team's seniority.
If you are solely focused only on immediate risks and currently don't have the mental power to predict possible risks then it means you are at the beginning of your digital career, but also if you predict too many risks and can't tell which are relevant or of higher priority. Education can bring only part of the skills you need, the other part must be "forged in fire".
Start small, and if your team does not have a habit of anticipating/detecting risks, you can do it for yourself, without a spoken word. With time you will get better at it and will be able to do it automatically, without actually thinking about it.
Projects will come and go, tasks will eventually end up in the Done column, what will not pass, as lightly, is the actions you've made in tough times. So, always have in mind to treat each other with respect and to act and think with the right amount of emotions.