Today was one of those weird days. I wouldn’t say it was good, but I wouldn’t say it was bad either. It was the definition of “meh” day.
On the one hand, I am pretty excited about the project I just started (which is super secret and I cannot talk about it just yet), but at the same time, today was the first time I sat down to really research how the hell I am gonna implement the thing. Way long after my original estimation. Alarm bells!
Planning software projects is a complicated task. Estimation is incredibly hard, almost to the point that I consider it an art (and I am pretty shit at it, quite frankly(*)). There are so many uncertainties it is difficult to account for everything needed at the beginning of the project.
I am not the only one out there with estimations issues though. During my work years I have seen everything, but projects delivered exactly on estimation, very few times. You either underestimate, or you overestimate.
Developers tend to underestimate under pressure to deliver something fast, when they haven’t had enough time to think about the problem they are trying to solve. Underestimating is pretty dangerous, for obvious reasons. At best you end up with someone in your team pretty frustrated. But at worst, it could cost you a bunch of paying customers (and that could mean whether you make it or break it as a company).
Better to overestimate and finish early. Though that never happens. Ever. People will tend to use as much time as they estimated, even if they finish early. Try to reach balance <– Like I said, an art.
You know that sensation at the beginning of a project where you are like “I think I can do this or that to solve X”, but then you start doing some research and you end up like the I have no idea what I am doing dog? That was me this morning.
During our roadmap meeting not long ago, I estimated I could finish this project in a couple of weeks at full speed. I knew this estimation was (
potentially totally) wrong: it was solely based on the idea of what we want to achieve and what we already have in place; my knowledge of the codebase. However, it didn’t include things like design, UX review, testing, etc. It’s practically impossible to foresee all the risks and uncertainties. It was an optimistic estimation: I should have known better and waited until I knew more. Not all, but more.
Luckily, with perseverance and another cup of coffee it all started to make sense. I still have to do some more research and start prototyping tomorrow, but we are onto a good start. The trick is to break down the project into small enough chunks that you can complete in a day or max two. Ah yes, and constant communication to avoid frustration. And definitely a good pair of headphones you can hide behind and submerge in the wonderful world that is coding. I remain optimistic – will report if this changes.
The best thing is that the project has started and I am sure we’ll see good (some kind of) progress.
And now, I am gonna hit the hay because I am dead tired and I am almost losing the plot myself. Good night peeps!
Summary of the day:
Time I fell asleep last night: 1:42
Total hours of sleep: 5:17
Mood: Ok. Not good, not bad. Meh. Best thing about today was catching up with my good friend Nick from Osper!
Soundtrack of the day: latest music obsession (Major Lazer, who knew?!)
(*) And by shit I don’t mean I don’t deliver projects on time. But it depends on the project! It’s all a question of practice really.. like all in life.