I think that there's a tradeoff between software engineers being able to work well on this specific problem, and knowing which problem is a good problem to work on. The first benefits from being isolated; the second from having the rest of the team nearby.
To me it makes it HN feel that little bit less welcoming. I may be being over-sensitive, but it makes me feel like I'm eavesdropping on a conversation I wasn't supposed to be part of.
Although, heck, maybe he talks about masturbating in front of girls the whole time.
Generally I don't get asked for an estimate until after I've done the design, so these numbers are code, unit test and very basic test on real hardware only. These are the rules I use:
- If I think I understand everything it involves, then I take my estimate for all the bits, add them up and multiply by 4.
- If I think I understand everything it involves, have done something similar before, and gone through my list of things to do a couple of times looking for stuff I've forgotten, I can multiply it by 2 instead. If I'm unsure how long something will take I am never allowed to round down.
- If I find myself sizing something with the word 'just' in the sentence, I'm missing something big. (e.g. Then it's just a matter of recreating the error condition and making sure my error gets triggered correctly.)
- If I'm not almost finished (i.e. functionality working with some hacks, unit test passes) by halfway through the time then I'm going to miss my deadline.
- I am still mystified as to where that other half of the time goes (I have a proper 90% rule going on), but some of it is getting my code in a shape where I'm happy about checking it in - dealing with comments so they mean things to people other than me, removing ugly bits of code, checking with co-workers in places where I wasn't sure I'd made the right decision. My maximum speed on this is about 500 lines a day. Some more time is then spent getting things back working again, because I'll have broken things in the process. And I need at least a day to get a sandbox build behaving properly, and willing to run on my hardware.
They're questions about the people you'll be working with and for - can you learn from them, can you work with them, can you trust them, is the team focussed on 'creating value' (instead of just marking time or playing politics), are they going to take an interest in your growth and development?
My current rule of thumb is that if I don't think that I'm 90% done when I'm only 50% of the way through my schedule I'm going to miss my deadline.
My suspicion about the cause of this is that I'm conflating 'easy' with 'doesn't take long'. I think there may be some other factors to do with not wanting to admit I'll break stuff when tidying code (so not allowing time to fix it) and somehow assuming that all the little niggles that only take a couple of hours to fix will all be fixed in the same couple of hours.
Well, 'talk to your customers' is a little different from 'listen to your customers and make sure you understand exactly what problem your product/service solves for them'. And I think the only difference between evolution (as you've described it) and validation is that seeing how people use what you build, and getting qualitative data on those users is emphasised, rather than something that just happens over time.
At a minor level, that could be making sure that the next feature you implement is the one that will make your software much more usable from their point of view, rather than the shiniest or most technically interesting to implement. (e.g. it doesn't matter if your mousetrap automatically telling your computer when it's caught something, if their local mice just aren't interested in $bait_that_works_best_in_bobs_house )
On the larger scale, if your customers are using your product to solve a problem you didn't expect, you can't optimise your product so it sells even better. If the largest user of your mousetrap is the gremlin-catcher's guild, then perhaps you need to look at building more gremlin-specific features, and changing your marketing a little.
And, of course, the simplest metric for validation is that if they ain't buying it then it ain't doing what they want enough for them to pay for it.
Disclaimer: I have never run a startup, let alone used these principles. They just seem to make sense to me.