It takes too long
God, I get so impatient. I get so frustrated when things don’t happen when I think they should. Unfortunately, the nature of building software leads to this happening more often than I would like. There are times when I think something should take 2 weeks and it ends up taking twice as long.
I have a personality that leads to me being quite self critical. I don’t need much of a reason to beat myself up. So when I’m not making as much progress as I would like, I have a tendency to turn that frustration inward. Of course, that only makes matters worse and causes things to progress more slowly.
This happened this week.
XADDAX is using MongoDB for persistence. There are some pieces of data that need to be manipulates before the persistence can happen. All IDs are UUIDs. They come through the GraphQL operation as a string, however, they get stored in MongoDB as a binary data type. There is also a difference between the date format coming from the client and how it gets persisted.
Often an ORM or ODM would be used to handle converting the data before being persisted. I think with a document database, like MongoDB, because the data is coming in as JSON objects and are stored as JSON like objects, that is a lot of unnecessary overhead. Instead, I’m having each object handled by a transformer class, generated using the Metamorph library.
I had started the Metamorph library with another project. It takes a configuration file and generates a transformation class. I didn’t get to see the project to completion so I didn’t get a chance to use the library in a production system.
Once I plugged it into the app, I found quite a few things that needed additional work. I’ve spent most of this week updating Metamorph. It’s not the progress I was hoping to make. I expected to be past this stage on the current story.
The Fall Out
Fortunately, I’m accountable to myself and I know this is a legit miscalculation on my part. However, I’ve been in a position where I’ve had to explain to a manager why my 2 week projection has slipped to 3. Its not always easy to understand. Hell, I’m the one writing the code and I don’t understand how I could make such a big miscalculation.
This often times leads to a lot of cascading problems. If you have other aspects of the project that are dependent on what you are building, now you can have a domino effect of lateness.
I know the only truly accurate way to estimate is to build your code then measure the time it took, but this isn’t realistic at all. I just have to keep getting better at buffering for the unknowns and get a lot more accurate on the things I do know.
Oh, and I need to be a little more patient, give myself a little grace and be able to see that while I’m not where I want to be, I am still making progress.