19
Checklist to estimate time to make a thing
Writing this (mainly for myself) because we keep getting bit in the butt with our estimations.
This checklist helps interrogate our assumptions. On first glance a task may seem easy but it could hide a ton of other tasks.
Generally I find quintupling our first estimate brings us a lot closer to the truth.
- Is it easy to access?
- Do we need authentication?
- Is it complex to transform?
- Does the data's reliability depend on many third parties? E.g., country calling codes π could start with +, 0, 00, or a whole slew of other patterns depending on country. It might take a lot of investigation just to figure out what the data is really about, and how to break it up into component parts suitable for our use case.
- Does the new form need to be stored somewhere?
- Should we work it into a regular ETL and CD process? E.g., daily cron job to ETL public transport traffic data, transform it, test it, then deploy to a server that uses Docker in Kubernetes in Azure π .
- E.g., invisible elements that screen readers should read out, can tab through all elements, UX for focused elements.
- How easy is it to edit and/or inherit for the new use case?
- Do we have to update libraries? If yes, do we need regression testing?
- E.g., deeply nested modules or 1000+ lines in the module.
TESTS. (I'm not great at this. π€·π»ββοΈ)
Could add like 30-40% more time but totally worth it.
Some days I code for like 30 min a day because of meetings. But the task in the agile scrum kanban tomato thingamajig backlog says the task I'm working on should take 2 hours. So then I end up spending maybe 4 days on the thing in total, because of meetings and complexities mentioned above. Not even exaggerating.
We're human. Procrastination, social obligations, and laundry are real.
And horror of horrors, equipment breaks down, WiFi fizzles out, botnets attack... π
Build this in.
All of this assumes that we already have in place a smooth company/department-wide workflow where business/commercial π side snazzily breaks the product up into features, user stories, and/or tasks for easy bite-size dev consumption. Otherwise, that's a whole other thing.