A penny for your thoughts? It would make a perfect gift for Charon.
We’ve all made ’em. We’ve all regretted ’em. It seems to be the only true rule when it comes to estimates. Why is that? I can’t tell you. I can’t pretend to know. There are hundreds if not thousands of people far more suited to tell you. What I can tell you is their impact on Junior – albeit avid – Developers (forgive the use of a leveling term, while I despise them, they’re useful).
Two weeks ago I had a sprint release come up and we were not ready. ‘We’ meaning ‘I’, and ‘not ready’ meaning ‘two miles deep and still shoveling.’ I was sick to my stomach. I lost sleep. I coded late into the night (I’m sorry Uncle Bob) and I did a hurried job of it (again, sorry). Did I hit the deadline? No. Of course not. I was relying stupid habits and terrified instinct, and that does not make good software. So why was I so distraught ? Well, about a month prior to this debacle I set out to estimate a project, my first ever (look Ma, no hands), and when it was all said and done, we started the project.
Things started off well enough (after some unaccounted for configuration issues) but by the end of the first week, I was showing symptoms of lagging behind the estimates. This wouldn’t have been so bad had I brought it up with my project manager and addressed the issue right away. But that didn’t happen. The problem is that I bought into my own hype. Not mine per-say, but what others were saying about me.
I was told my estimates would be fine. I wanted them to be fine. So maybe they were fine. Maybe I just had to work harder. Maybe I wasn’t a good enough developer. Perhaps the estimates were fine but it was ME that was the problem. So I worked harder. I worked longer.
There are things that I would have done differently for sure, I would have made the estimates differently (I wasn’t going to offer advice, but I can’t help myself, when giving an estimate, give a range), I would have communicated clearly from the start. I would have been supported, I wouldn’t have been thrown under the bus, but I feared letting myself down.
I would also like to say that as a developer in this stage of my career, I like having estimates. Estimates that someone else has made. They give me the ability to mark my abilities, they give me rough guidelines on what should be taking me how long, and they let me track my progress. They are able to give me the guidance that I crave.
So why did they have me estimate? It had to be to learn. It HAD to be. I’ve learned so much through this process. I’ve learned about myself, I’ve learned about estimates, certain do’s and don’ts, I’ve learned about what I do under pressure, how I code. I’ve learned about where I need to develop myself. I need to improve communication. I need to build my confidence in my programming ethics. I need to build these things as second nature so I default to them in times of crunch.