- Feature Articles
- CodeSOD
- Error'd
- Forums
-
Other Articles
- Random Article
- Other Series
- Alex's Soapbox
- Announcements
- Best of…
- Best of Email
- Best of the Sidebar
- Bring Your Own Code
- Coded Smorgasbord
- Mandatory Fun Day
- Off Topic
- Representative Line
- News Roundup
- Editor's Soapbox
- Software on the Rocks
- Souvenir Potpourri
- Sponsor Post
- Tales from the Interview
- The Daily WTF: Live
- Virtudyne
Admin
I tend to write in languages that don't need pseudocode. The point again?
But not for the guy in the story, and not for the general Fermi estimation question, where the interviewer will make a point from not giving you any data and still expecting a numerical solution.
Like "how many piano tuners are there in New York?" You can estimate that as you say, but there's no way I can make a sensible guess out of that. So I start with "how many pianos are there" and how the fuck would I know? I have a few friends, none of which owns a piano, therefore I extrapolate there are no pianos anywhere, hence no piano tuners, QED.
You can get that other badge if you go on like that...
Admin
hmm? you're still trying for that one?
Admin
It will also give you a good idea of just how convoluted their solutions will be. For any given problem, the number of solutions approaches infinity, but only a small few of those are plausible and not shit.
If a candidate starts by saying that they would set up precipitation meters on a one mile grid over the entire Amazon and measure the rainfall over a 1 year span, you might want to pass...
Admin
I know a guy who's email sig is "you guys start coding! I'll find out what the customer wants."
Admin
Given a problem that you don't have enough information to solve, wouldn't a reasonable reaction be to ask for more information?
I understand that you don't want to hire defeatists, but there is a lot of room between a defeatist and a person who hasn't been given the resources to actually solve the problem.
Personally, I don't like to waste time with hypotheticals, or wasting time on things that cannot be done in a semi-correct manner. If that made me a bad hire for a company, we would probably both be better off :)
Admin
Dude, that's where you make a point of putting in several ridiculous numbers, if it bothers you that much. "Yeah, I estimate the flow rate is 1 cubic centimeter per 23 minutes and 17 seconds."
Admin
"Well, I don't have a piano, do you? No? Well then, extrapolating..."
Admin
Which one, social skills of a thermonuclear device? Either you were trolling, in which case you didn't deserve a serious response, or you had a racial group in mind, which makes you the prejudiced one. I wasn't thinking of any particular group of people except that in the places there aren't many rivers, there probably historically hasn't been much in the way of computers in the past.
Admin
You don't always have it. Have you ever done any job estimation on building software? It is all fucking guesswork.
Admin
Not actively as such, but I'll never turn down an opportunity to trawl for flags. I've gotten two at least once--someone may give me a pity flag at some point and put me over the top!
Admin
It's in the river, blocking some of the flow, and changing my calculations.
Admin
Hey, it's not thinking small, so it passes the Borg test (yes, I am just getting to the part of Voyager where they picked up Seven of Tits^Wnine.
Admin
QFUT
Admin
Perhaps. When learning calculus, you rarely are actually looking to solve an equation as such.
Admin
Too bad for you, chump. It's already factored in to my flow rate estimate.
Admin
hmm. once she loosened up and became more human than borg she was actually a pretty good character.
Admin
http://en.wikipedia.org/wiki/Joke
http://en.wikipedia.org/wiki/Hyperbole
Admin
Would a mole of pianos upset your estimate?
Admin
dude, you lost this one. let it go.
Admin
See? Now you get it. Just save that number for last. "and lastly, since I don't know anyone with a piano, I estimate the total in the city is zero, meaning the last tuner died six months ago of starvation and his mummified corpse was just found last week in a crawlspace."
Admin
Actually, wait, we have one of these? I should apply.
Admin
Why? The sooner you plug it in, the sooner you're done with this stupid question.
Admin
You'll have to borrow it from Raymond.
Admin
Snort. And that attitude just cost you the job. "This guy's smart but he's got a bad attitude and probably won't get along with the rest of the team."
Admin
I agree - I've done a ton of that stuff, and you have to invent some numbers. The difference is you have (with any experience) MANY resources. Such as person X took Y hours to complete Z part of the FOOBAR project - this looks more complicated, so I will double those hours.
Not sure what that has to do with a programmer given a logic problem without resources or context?
Admin
Well, at the point where you're blowing off the seriously asked question with ridiculous numbers, you're already aiming for nothing more than a good TFTI.
So make it worth, at least.
Admin
wut?
Admin
CTFY
Admin
In earlier stages of math, you try to actually solve an equation, right? "In the equation 3x^2 + 2x + 5, solve for x."
In calculus class, you're not trying--usually--to find the value of x. "Solving the equation" consists of finding the first derivative of the given equation, or the second integral, etc. That's all I meant.
Sure, you're still trying to find an answer, but it's a bit more meta. In these stupid interview questions, you're not really trying to find out how much water flows out of the Amazon in a year, you're trying to come up with a semi-reasonable equation that given the right numbers could produce a reasonable answer.
Admin
Are you one of those "good code is self-documenting" people? If so, what you really mean is "2 years later I am going to forget what half this shit does".
Because of this statement:
When estimating software jobs, you are not going to have the data. Not all of it. Not by a long shot. When you estimate software, you use a lot of assumptive language: "I think", "it should be", "I assume", "I believe". If you need hard numbers to solve an equation, you can never estimate a software job.
Yeah, and that is where shit can fall apart on you. Why are you doubling it? Will it take twice as long? Is it twice as complicated (in that case, it will usually take 4x as long)? What if it takes 3x as long? What if you over-estimated the length of time and you are way over and miss the job altogether?
These are the kinds of problems and equations that parallel the original (shitty) FP article. I usually tell people that if they get any of the first 6 jobs they bid, they probably just bought the job and are going to lose their ass.
What about the other "adjustments for windage" you have to make when bidding software? You are covered up in work, so you bid really high so that you can roll the extra profits from that job in to expansion...if you get it? Looking at a dry spot in the calendar in three months? You might want to cut some of the modifiers you applied along the way in order to keep people moving and run at a lower profit margin because a low profit margin is always better than no cashflow? Client seemed like a fucking asshole? That demands a premium, because you know they are going to go over on hours and you want to add some hours in for that time when they
mightwill change path mid project and then you can absorb some of that without having to renegotiate.This is all roughly the same as the original "Amazon river" problem. Just start fucking working and catch any mistakes as you iterate.
Admin
Oh, got it. I guess I wasn't considering that someone might only be partially trained for a job, but excellent to that point.
Maybe the whole debate is moot without knowing the exact position in the exact company....
Admin
Also, one more thing, right or wrong this is how I start each solution: First I write out fairly detailed pseudo-code. More so than most I would imagine. I try to get it as close to how I imagine the code will finally look (from a story perspective) and I create it inside the .cpp or .cs or .rb or .py file that I will compile (for compiled languaged that is) and then select it all and comment it out. As I go along, my comments are mostly already written and it is easier for me to stay on task. I am not sure how the majority of people do it, but this is how I go about it.
Also, I never worked in a corporate code monkey cage, so I imagine I am pretty far from best practices on lots of shit. If that is just idiotic to do, I am all about hearing a better way. I do not claim that my way is the right way. It is just that I always write pseudo-code.
Admin
I understand (more than you know) where you are coming from on the quoting aspect. Somehow after reading the article (and/or the comments) I was thinking the position was for a developer, not a "system manager". I can see how a response to that question might be relevant for someone who does what you do, and I'm still not sure what a system manager job might entail. Projection on my part, sorry.
Admin
We don't do sorry around here unless the grievances are extreme, and people who do that refuse to say that they are sorry because they are not at fault, it is their "online persona" that did it, so they are absolved of all wrong-doing. ;)
In all fairness, I was probably projecting also, and letting "scope creep" set in, etc. No worries.
Admin
Projection happens, it's even more complicated by the fact that multiple TDWTFers (myself included) are playing an online persona, some of use closely related to IRL persona, some very much removed. The trick is recognizing when it's happened and correcting.
that's a hard skill.
I'd disagree here. I've done sorries* before for genuine grievances, even if they weren't grievous.
I actually owe one to a certain someone, but it's probably going to be a bit before i hand it out. emotions still raw on both sides for that one
* sorrys? sorrys'? .... that's a weird one to try and pluralize....
Admin
Yeah, well, you are nicer than most of the hardasses 'round these parts.
Admin
well maybe i'll rub off on some of you as you rub off on me and we'll meet in the middle as a bunch of over medium asses?
... man that souinds like something @algorythmics could have fun with.
Admin
Oh, you had to summon him here, eh? :stuck_out_tongue:
Admin
you deny that that comment wasn't practically gagging for him to visit and fire off a fine bon mot at that one?
Admin
someone's ass will be sorrey
Admin
There ya go, egging him on. ;)
Admin
While I find FE problems tiresome, I wouldn't hold it against the company if 1) this was a client-facing position and 2) the rest of the interview was technical. If the interview is just a FE problem, then the company has not appraised my technical skill during the interview, and that's a major red flag.
Software estimation is a world of hurt. If your development process is more complex than "copy-paste existing module, make minor changes, release," it's near impossible to get right. You don't typically know all the complicating factors until you're knee-deep in making changes.
Admin
I have a bad habit of opening 10 browser tabs of shit I want to read over lunch, and then confusing the details.
If it makes you feel better, I'm only like 42% sorry (that's not even half!)
Admin
I have a bad habit of starting a response, getting pulled away, continuing, getting pulled away by something else, lather, rinse, repeat. If I do not proofread it, it ends up a disjointed mess that is incomprehensible. If you want, and DiscoSearch cooperated, I could show you The Worst Of The Worst for that one for me. It was horrible. I did not even try to redeem myself. I just admitted that my post was fucking idiotic and moved on...
Admin
Definitely.
Admin
I rather thought this post was ripe for a reply referring to a different body fluid of interest to him, but I decided I really didn't want to go there.
Admin
Do you ask questions like this in real life, beyond a theoretical conversation?
Admin
Software development is the sum of R&D. You can estimate Development, but your Research is only done when you have a solution.
Admin
Not sure which question you refer to. Not quoting everything is Doing It Wrong. But...probably. This is me. No "online persona" here. I am a lovable prick here and IRL.
Admin
Oh no, I mean the Amazon one. Is that something you'd ask in an interview?