Friday, March 21, 2008

The one true lesson of software engineering

The one true lesson of software engineering is "engineers don't know jack sh*t about anything. At all."

Engineers are really bad at figuring out where their programs spend all their time. I don't know anybody ever who could accurately predict where the real bottlenecks in their systems were without using a profiler. I don't know anybody ever who could truly optimize their systems without profilers.

And engineers are super-duper especially bad at scheduling. I had always just assumed that it was due to a lack of interpersonal skills that caused developers to throw away their estimates because their managers said "I need it sooner than that." That's what I saw, anyway. No matter how much time the engineer spent coming up with an estimate, they would cheerfully throw it away in order to agree with their manager's schedule-oriented daydream (or their manager's manager's daydream).

It turns out that there's more to it than just an inability to say "I understand you don't like this schedule, but it is what it is": humans suck at planning.

I have no idea what to do about it, but I thought it was worth mentioning. Now if you'll excuse me, I have an RPC traffic generator to finish writing; I said it would be finished on Monday and now I have even more concern than usual that it will be late.