It’s a recurring task in software development to forecast the amount of time something will take. There are Roadmap Meetings, Sprint Planning Meetings or even the spontaneous estimates you must provide in the hallway. All of them require you to pull out your divining rod and predict the future.
Imagine you are asked how long it will take to create an applicatio which responds with the word four
whenever somebody enters the number 4
. it is dead simple, it will take about four seconds:
#!/bin/bash
echo "four"
There you go, a simple application that will always respond with the word four
when you pass 4
as a parameter.
But it is pretty obvious there is more we need to take care of. What if somebody passed 5
as parameter? Should the application respond with four
as well? I think you can guess the answer: No.
Conclusion
The reason why estimates on software projects are so complicated is, they are the opposite of your normal planning habits. As a human being we tend to plan for the happy path. That’s why we assume everything will be fine, start to gamble or do only have the basic insurances for our health and housing.
But there are obstacles which will cross your happy path. To plan project timings always comes down to forecast possible obstacles on your way to the end zone and how this delay will affect your happy path.
Take Scrum for example: During the Sprint Planning Meeting the team commits itself to the tasks for an iteration of most often two weeks. The length of two weeks is not chosen randomly nor because 2
is a beautiful number. It is because two weeks are enough time to start, finish, and deploy something and it’s a time window you feel comfortable to predict possible obstacles within. What could possibly go wrong, right?
The longer your iterations are, the more can go wrong. The more can go wrong and the less accurate your predictions will be.
-
November 8 th, 2017
182 Words
The YubiKey is a great OpenGPG smart card compatible hardware device. I use my YubiKey to store my private GnuPG key and for authenticating SSH connections. A few applications, however, don’t work with the OpenGPG card and require a file containing the key per default; Sequel Pro is one of them.
-
November 5 th, 2017
350 Words
If you love software workflows as much as I do, you should check out my basics for deploying NPM packages using TypeScript, CircleCI v2, and GitHub Releases.
-
November 3 rd, 2017
172 Words
The MaxMind GeoLite2 database is basically the standard solution when you need to get the geo information for an IP address. Together with the mmdb-reader NPM package you can easily deploy your own serverless API to AWS Lambda to lookup locations for IP addresses.
-
August 23 rd, 2017
591 Words
AWS Lambda functions together with an Amazon Kinesis Stream offer a great way to process continuous information. I created an example project called Serverless Analytics to demonstrate this. You can use this as the starting point to create your very own Google Analytics clone and run it serverless and hopefully maintenance-free on Amazon.
-
July 19 th, 2017
151 Words
Since a few days, Amazon provides a native way to enable Auto Scaling for DynamoDB tables! Luckily the settings can be configured using CloudFormation templates, and so I wrote a plugin for serverless to easily configure Auto Scaling without having to write the whole CloudFormation configuration.
-
July 1 st, 2017
260 Words
When you use a serverless environment for your service (and you should!), chances are high you might be using the Serverless framework and may end up in a situation like me with the need to process the AWS CloudFormation Stack Output after deploying the service.
-
April 1 st, 2017
1071 Words
Have you ever wondered how to process messages from SQS without maintaining infrastructure? Amazon Web Services perfectly support SNS as a trigger for AWS Lambda functions, but with SQS you have to find a custom solution. This tutorial will show an experimental setup using Serverless to read messages from an SQS queue and build auto-scaling worker processes.