Dare had a pointer today to a programming.reddit story that talks about competing versions of a dustup between Joel and Greg Whitten back when Joel used to work for Excel. I could care less who’s right, but the interesting implication of the story is that Joel was the one who came up with the application interface for VBA. I’m not sure that’s entirely true-a lot people worked on VBA-but if it is, he might be responsible for nearly driving a former co-worker insane.
When I started at Microsoft, I worked on Access. Access used a version of BASIC called Embedded Basic (or EB) for its programmability story. EB may not have been perfect, but I always thought it was a really nice language engine-it was small, it was fast, and it worked really well with Access and its programming model. After Access 1.0 shipped, however, EB was discontinued in favor of VBA which was the new official programmability story for Microsoft. There were a few people left on EB whose job, as far as I could tell, were just to tell me “no” when I came to them and asked them to fix bugs. (My interactions with the EB team at this point inspired my program manager to tell me that one of my special skills seemed to be “being able to tell people to f**k off, but in such a nice way that there’s nothing they can say in return.” Suffice it to say, I didn’t have a great relationship with the EB folks.)
By the time we got to Access 95, we knew we had to move over to VBA. The head of the project stopped by and asked me if I was interested in maybe leading the effort to switch over to VBA. In what I can only describe as an extreme fit of sanity, I declined. Another coworker took on the job. Suffice it to say, it was nearly a complete disaster. VBA was designed to work well with Excel, which had a totally different storage, execution, and debugging model than Access. As a result, almost everything having to do with programmability had to be redesigned, often in some pretty hairy ways. From the outside, it seems like a miracle that it ever worked, much less worked well.
As you can imagine, this was pretty hard on my coworker, who was responsible for getting this working in Access. As I remember, the VBA team at the time (Joel was gone by that point, I think) was somewhat sympathetic but not overly helpful-after all, they worked really well with Excel and we had all these “weird” requirements. Anyway, I knew things weren’t going well when my coworker came into my office and told me, “I found this really stupid bug that I made, so I decided to rename all the local variables to say insulting things about me.” Then one day I came in to work and found my coworker wasn’t there. When I asked where he was, I was told that he’d been ordered to take several days off and fly to Vegas to unwind for a while. I believe they were worried he might totally go off the deep end.
In the end, though, we shipped, my coworker did not go insane, and everything ended up OK. But it’s interesting to think what might have happened.
Interesting story having read Dare’s and Joel’s posts yesterday.
I remember Access 95 and the migration from EB as an abomination, especially from the performance side. Access 2.0 was solid and I had several large projects for Fortune 100 types in production. Fortunately, I was able to convince them to bypass Access 95 and upgrade when the much more stable Access 97 arrived.