This thread in Ask Joel about offshoring/outsourcing is much better than anything I could have written on the subject myself. Ken sets up the strawman; eloquent readers from around the globe tear it down.
I hope you’re not all missing the excellent stuff going down on the Ask Joel forum.
On Apress: “ And although they would not put a doggie on the cover of my book as I requested, because a certain other book publisher threatens to sue his competitors when they put anything animal like within 90 feet of their covers, their graphic designer worked overtime to create underground cover art called User Interface Design for Doggies complete with three golden retrievers, which they framed and sent to me. ”
On Microsoft Program Managers: “ So the programmers think they’re deciding everything and the program managers think they’re deciding everything. How can they both be deciding everything? They can’t. Who is really deciding, then? Let me give you a hint. Of the program managers and developers you know, on the whole, who has better people skills? eh? speak up boy, I can’t hear you. Duh! Of course it’s the program managers. You knew that. Developers couldn’t people-skill their way out of a summer intern party at BillG’s lakeside mansion. Developers have such weak people skills they can’t even imagine what people skills could be used for, other than the purely theoretical concept of getting a theoretical date (“I … like … big BUTTS and I can not LIE…”), so it’s no wonder they’re not even aware of the secret that I can finally reveal today. ”
On Lisp: “And I have the ultimate respect for Paul Graham — I think there’s a good probability that in a year or two we will credit him with being the man who solved spam. But I think that if you try to ignore the fact that millions of programmers around the world have learned lisp and don’t prefer to use it, you’re in the land of morbid cognitive dissonance. ”
On Big-M Methodologies: “ Everything about RUP, for example, is obsessed with figuriing out what the business objects and business rules are so you can do a payroll system. We do things like add spell checkers to an editor window. ”
On Usable Programming APIs: “Indexes are one based. That’s how humans count. Zero-based is better, I agree, but one-based is what humans expect, and the program model must conform to the user model for ease of use.”
On Starting Fog Creek: “ The law firm that was recommended to us was big and famous and wanted a $30,000 retainer just to talk to us. There was a time during dotcom mania where you weren’t someone unless your law firm was VLG or MoFo. I was literally told that you had to use VLG or maybe, distant second, MoFo, or I could never convince VCs to invest. “They won’t take you seriously if you don’t have a serious lawfirm.” I snorted up my milk. ”
On teaching your boyfriend C++: “ Forget it! Give up! … Teach me about women’s shoes and I will feign interest and then promptly forget everything you told me.”
On software pricing: “With software sold in corporations, as soon as your price gets up in the $3000 level, the amount of approval it needs is so absurd that you are not going to sell products without a salesperson making a few visits. Hiring the salesperson, sending them out to make presentations, hotels, airfare — now it costs $50,000 to get the sale done just in sales closing costs. That’s why you see a lot of software products at $100,000 and a lot under $3000, but anywhere in-between and it’s impossible to make sales. ”
I’m running out of my own ideas for article topics. I was going to write about how the search for autotrephination on Google only has one result, which is surprising, considering how there’s an entire movie on the subject, although I realized most people probably think autotrephination would mean “automatic-drilling-of-holes-in-the-head” when it’s perfectly obvious to me that it should mean “drilling-of-holes-in-one’s-own-head” but, hey, what does a word mean that has only been used once in the entire history of Google? And what does it mean to say that a word means something if nobody has ever used it? Anyway, I decided that writing about this would be so headache-inducing you all would try to drill a hole in my head so I didn’t write anything about it.
Luckily, I have my readers for topic ideas. A lot of times people email me saying, “I’d love to hear what you think about X.” Sometimes, that’s enough to motivate me to write a long essay. But more often, my opinion is far too shallow and insipid to justify such an effort, so I dash off a paragraph or two to the email correspondent, or, more often, file away the email in a folder full of things I would love to respond to if we lived on Pluto and the day was 153.4 hours long and humans didn’t require that much sleep.
I decided to try out one of Philip Greenspun’s ideas — the Ask Philip Forum. So, without further ado, I have recycled the dreary old “New Yorkers” forum, which was something of a ghost town anyway, into the shiny new Ask Joel Questions forum. There are still some old New York-related topics there. Ignore them. Put the drill away. Thank you.
The appropriate person at Microsoft blew off my request for a linker. The strongest argument he makes is that Microsoft wants to be able to patch security bugs in the CLR after I’ve shipped my program. This is a valid concern; when a major security hole was found in zlib everybody had to figure out which programs they had that used it and recompile them all. I wasted a day of my life on that particular bug. But it’s easily solved by a simple technology of shims or jump tables. Put on your thinking hat and you’ll figure out how to make a linker that produces a single executable plus a jump-table that Microsoft can patch when they find a security hole. PS. Apple had this technology in the original Macintosh, 1984.
His other argument about working set size is a decision that should be left to developers. Let me pick the tradeoff I want to make between ease of installation and working set size.
Look, I used to be a program manager at Microsoft, and there’s a really strong tendency in that culture to treat customer requests as fun intellectual challenges to be fended off like exercises in debating class. But I’ve been talking to customers since the days of the Visual Basic 1.0 runtime in 1991 — thirteen years ago! who have been begging for this problem to be addressed. Jason, why don’t you go talk to somebody on the FoxPro team. In the late 80s FoxPro clobbered dBase in the market mainly on the strength of the fact that it compiled standalone executables. FoxPro had a linker. xBase developers pleaded with Ashton-Tate, makers of dBase, to develop or acquire a linker, but Ed Esber, reviled CEO of Ashton-Tate, refused to give them one. Learn from your own history. (Thanks to Rick Chapman for reminding me of history repeating itself.)
ISV’s that I talk to agree that this is the #1 weakness of VB1-6 and .Net. I’m forced to conclude that Microsoft has grown so large they are living in a reality-distortion field. I suppose it’s not unusual for someone working on a campus with 45 buildings all full of Microsoft employees to lose track of what the outside world is thinking and doing.
OK, anyway, there are third party alternatives. Jitit makes a thing called Thinstall. I haven’t tried it. If someone out there wants to write an in-depth technical review of this thing, please contact me and I’ll try to get you a review copy.
I loved the style, wittiness, humor and erudition of Why’s (Poignant) Guide to Ruby but I can’t say I learned much about Ruby. Maybe in the next chapter?