Software estimates are one of the oldest lies we tell ourselves.
We all know they don't work, but pretend they mean something and later feel enraged when shit hits the fan.
I focused a big part of my undergrad on software estimation.
After graduating, I wrote plenty about the topic.
Then, I started working for a company where I spent years researching how to make better estimates. We sold multiple millions of dollars of software using the tools I built.
I read everything there's to read. I could recite Steve McConnel's "Software Estimation" book from top to bottom.
Here is the most important lesson I learned:
People can't estimate software. It doesn't matter who they are or how much experience they have.
Estimating software reliably is science fiction.
And the best part:
They will ask you to estimate something. They will tell you they understand it's not exact. They will promise they won't hold you accountable.
And then they will. They always do.
There are two solutions for this. Let's start with my recommendations for those who don't have a choice:
1. Remove "quick," "simple," "straightforward," "easy," and every similar word from your dictionary. Never use them. Don't let others use them when referring to your work.
2. Never volunteer an estimate. Everything you say will be used against you.
3. When forced, estimate work you know you can complete today. Always estimate with a range: "It will take me 2 - 4 hours."
4. Estimate anything you won't do today in days and weeks. Say, "I should finish that feature sometime this week." Do not estimate future work in hours.
But we all know your manager will force you to give an estimate. Here is what you should do:
1. Estimate how long you think it will take you to complete the task.
2. Multiply the number by 3. This will be the lower range of your estimate.
3. Double the lower range of the estimate. This will be the upper range.
Example: If you think something will take you 1 day of work, say "between 3 and 6 days."
Here is the funny part:
It won't take you between 3 - 6 days. This is as much bullshit as any other method you can think of.
The true solution for this problem:
Work for a company that doesn't care about estimates.
Success is not about winning a competition. It’s about making a contribution.
Takers aim to be better than others. Givers strive to bring out the best in others.
The most meaningful way to succeed is to help others succeed.
https://t.co/FKJHDkGkfF
Busy day today but got both #AdventOfCode stars done in #rust#rustlang.
Amazingly, I only had to add a "1" to my part one solution to solve part two.
https://t.co/fVDEQWB6CY
Solving #AdventOfCode today was nicer with #rust#rustlang than #golang. Rust's vector has built in support for push, pop and insert. But Go's slice does not.
I found myself having to write my own type then implement push, pop and insert myself in Go.
https://t.co/4K8CnJzMGc
Solved both #AdventOfCode stars with #rust#rustlang today, then translated solutions to #golang
I guess after learning string manipulation and hash sets in Rust yesterday, I'm now trying to use string manipulation and hash sets to solve everything.
https://t.co/4K8CnJzMGc
Just hacked out both #AdventOfCode day 3 stars quick in #Golang
Dependency on a 3rd party package and I'm not proud of this code.
But I'm on my second glass of prosecco and this will do for today. As they say in the jungle, "Don't come back without the stars."
Got the first star in #rust#rustlang for today's #AdventOfCode It felt like Rust was fighting me today.
First time using a hash set. Stumbled a lot around type conversion. If I had solved this in #Golang first probably I would have given up trying.
https://t.co/4K8CnJzMGc
Maintained my #AdventOfCode streak today. Both stars done in #rust#rustlang then solutions translated to #golang
I thought Rust was going to be a nightmare for this but omg Match is so powerful and succinct!
https://t.co/4K8CnJzMGc
I mentor a young lad with poor literacy skills who is starting a landscaping business. He struggles to communicate with clients in a professional manner.
I created a GPT3-powered Gmail account to which he sends a message. It responds with the text to send to the client.
@pmberry2007 Today I solved in first Rust (new language), then Go. It took much longer to write the Rust than the Go. My Go solution also felt anchored on the Rust solution. I can only describe it like doing Rust Driven Development in Go.
Going to try solve #AdventOfCode in two languages this year.
No idea how many days I can keep this up, but I got both stars today in #go#golang and #rust#rustlang.
https://t.co/4K8CnJibOE
WTF goes through my head as I'm thinking all my code in GitHub has suddenly started burning. Then I read "Happy Halloween!". I was legitimately scared for a moment, nice trick @github 😂
I posted a few of Deming's "14 points" (from "Out of the Crisis"; 1982) the other day. Pretty much all of these are relevant today in every software organization. Let's look at the whole list 👇 1/18
Reminiscing the last time @gopherconeu was in person & all the amazing folks I met as part of the diversity scholarship ☺️
@ishuah_@__Vaibhavi@Rosicadia & the other participants wish you were with us ❤️
If you can sponsor @GolangBridge these opportunities make a difference!
Look closely.
There are actually 16 circles in this image.
And once you see them, the image appears changed forever.
The wonderful coffer illusion, by Anthony Norcia