I worked on PostScript printers at Adobe then got transferred to the department that was working on Acrobat (that’s a whole other story). In Acrobat 2.0, a separate sub-team, on which I was the only Mac programmer, was providing full-text indexing and searching. At the same time, Acrobat was being redesigned inside and out to be more portable, to have a better view model, and most importantly to have an extensibility model.
Unfortunately, the development and build process were fundamentally broken. File check out was always exclusive and there was no branching. There was also no continuous building, as far as I knew. This meant that there was no way to get access to code before it was final-ish nor was there a way to get an intermediate build of Acrobat to code against.
On top of this, the core engineering for Acrobat was overextended and frequently had nothing that was even close to ready until 6:00PM on the scheduled day. This meant that I and Carl Orthlieb (who was my Windows counterpart), had to stay later until the new version of Acrobat was built, then we had to figure out why our code wouldn’t compile. Usually, the problem was that APIs had changed and nobody bothered to let us know. On top of that, there was nobody to talk to about it because the engineers who had worked on those changes were long gone.
We frequently couldn’t even begin our work until 7:00 or 8:00.
At one point, the entire model for building menus changed. In addition to the text that you associated with any given menu, you had to provide a non-ui-displayable string name for every menu and submenu and menu items. Acrobat Search had a shit ton of menu items that we had to work with and I was getting more and more aggravated as I changed the code.
Sonny Boy Williamson was a blues musician, who did some recording. This wasn’t high budget work. He would go into the studio and the engineer would ask him the title of the song he was going to play. Williamson got really tired of that and this was the exchange:
LC: Go ahead we’re rolling, Take 1. What’s the name-a this?
SB: “Little Village” <pause> “A Little Village,” mother f*cker! “A Little Village!”
LC: There’s isn’t a mother f*ckin’ thing there about a village. You son-of-a-bitch! Nothin’ in the song has got anything to do with a village.
SB: Well, a small town
LC: I know what a village is!
SB: Well alright, goddamn it! You know, you don’t need no title. You name it up, you, I got-get through with it, son-of-a-bitch. You name it what you wanna. You name it your mammy, if ya wanna.
So in the midst of the late hours, changed APIs, no warning, and a ton of menus to name internally, I named one something like, “somenameforthisfuckingmenu”.
Code compiled and everything seemed to work well enough, so I checked in and walked away, leaving even more work for Mike Pell, who had to take the output of all the compiled builds and then build an installer for QA. No matter how bad I thought I had it, Mike had it worse.
This wasn’t the only time something like this happened. There were times when whole sets of APIs were totally removed and the Search team was SOL. At one point, I remember Carl and I went into Alan Padgett’s cube and stood behind him and forced him to put an API back in which would allow us to have a more responsive UI to show progress as well at to blink the cursor in the Search dialog box. The day after release, his boss made him take it out again. This went back and forth until we could agree to get the right API in the right place that would let us do what we wanted.
Time went on and eventually we went into Beta release. We had a number of external customers who were excited to explore the new plug-in model and to try their hand at coding to it. One customer on the Mac wrote code to iterate through all the menus and print them out. Sure enough, s/he hit the Search menu and saw my glorious blue streak.
I don’t know how this trickled back into Adobe, but it found its way to Bob Wulff, who was the manager of the whole Acrobat team. Bob personally paid me a visit. He was clearly not happy with this being found by a customer and he made it clear that I had to clean it up and to be more careful about “colorful language” in the code. I suspect that he was also holding back.
Of course, I changed it to something more appropriate. It was my fault, after all.
Or was it?
On the one hand, at 26 I probably should have known better than to put profanity anywhere in my code.
On the other hand, the build and release process was fundamentally flawed: it was always a “sucks to be you” chain of events: core engineers made changes that weren’t communicated and certainly weren’t available. The build process was manual and summative rather than iterative. Schedules were overdone and pushed right up to the end of deadlines.
There was so much broken in the process and even though there existed reasonable solutions to every broken element, it took a lot of pushing to get even simple changes in place, such as: build begins the morning of the release, not 5:00PM.