I had a message on my answering machine at home:
Hello. My name is _____ _______, and represent ______ Staffing. I got your name from my network of contacts. My client has a position for a senior software engineering position, with background in C and Tcl. I am hoping that I can talk to you about it. Please give me a call as soon as you can.
So, the next morning I left a message for her, giving her my work number (why did I wait so long to get a cell phone again?). She called me back right around lunch time. Since I had an office with a door at Sun, I could talk without worrying.
“The client is hiring a team to take over a product that they acquired from another company. They need somebody technically strong to take a technical lead role, and potentially run the team as a manager.”
“Could we meet for a cup of coffee this weekend, and we can discuss the issue?”
We agreed to meet at Cafe Borrone in Menlo Park (Clint Baker’s New Orleans Jazz Band still plays there on Friday nights!) on a brisk fall Saturday afternoon. I told her to look out for my Rice sweatshirt.
After we went through the line, and she bought us light refreshments, she got down the business.
The woman knew her stuff.
She grilled me on differing aspects of C and the different C standards. She asked me what the major differences between K&R C (the original book) and ANSI C. She asked me about sizes of differing data types. She asked me about ABI layout of integers on Power PC vs. Intel x86.
And then she asked reasonable high-level questions about Tcl/Tk. She also dug into my FileMaker experience, asking me what features I worked on, and high-level questions about how they were implemented.
At the end of this grilling (from a recruiter!), she told me she would advocate for me to the company. She needed references. And either she or somebody from Cygnus would be in touch soon.
She called me Tuesday. Told me that one of my references was not helpful; did I have another? And that Cygnus was definitely going to call.
I got a call on Thursday. The manager of the project I was on was hiring a bunch of people for this new team. The existing engineers were in Dortmund, Germany, so there might need to be travel. Was that OK? He asked about the QA cycle on FileMaker, and how we did release planning on FileMaker. Said he needed that kind of experience on this product. And he said that somebody would be scheduling technical interviews by email.
The next week, I showed up at Cygnus for technical interviews. I think that there were five sessions. The first one was with the hiring manager, and we talked more about the release process. He was not a programmer, and if I were hired, would leave the day-to-day engineering tasks to me and the team to work out.
I only remember two other sessions from that day, although I know I had more. One of them, an older gentleman asked me to reverse a linked-list in place on the whiteboard with a marker. My first whiteboard interview ever.
I got up there and drew boxes with arrows until I figured out how it worked, and then I wrote out the code. Tested it with the relevant cases, and handed the marker back to him. He sat there, staring at the board for about 3 minutes, went up to the board, and worked through my code himself, all without saying a word.
He turned to look at me. “This is very good.”
“Oh, thank you”
“You are the first person I have seen get it right.”
What I did not say but really wanted to was “Well, who are you hiring, then?!?” What I did say was,
“Well, I’m glad.”
We had about 15 minutes left for our session, and he had nothing else to say, so he took me to the snack bar area, let me use the restroom and get a Dr. Pepper, and then took me to the next room.
This room had two engineers. They introduced themselves. Turns out, I had corresponded with one of them when he had worked on the compiler team at Metrowerks when I was porting FileMaker to Metrowerks Pascal.
After some nice banter, the other said:
They thought that they were being clever. They were used to interviewing compiler and debugger engineers, since, before they acquired Source-Navigator, the product I was going to be working on, that’s all Cygnus ever did. Not only that, they were working with GCC and GDB, which were both open source, and most of the development for them was done on UNIX operating systems. Most programmers who worked on UNIX did not really embrace graphical user interfaces, such as Mac, or Windows, and indeed, thought that if you cared about open source, you would never buy Mac or Windows because they were closed source products, and by definition, the enemy. (After a few months, I was talking to one Cygnus engineer, and asked him whether he thought graphical user interfaces were useful. He thought a minute, sneered, and said, “Well, maybe for secretaries!” He was not alone in that attitude in the UNIX world.)
And if you did not use GUIs for development, your choices for actually editing your source code came down to vi, which was lightweight, and somewhat extensible (at the time; vim (modern vi) is much better), and emacs, which was anything but lightweight, but had it’s own builtin programming language, so it was infinitely customizable.
I said, “Neither”. That was not the answer they were expecting; they both looked surprised. I explained it to them.
When I first started programming in college, the Rice CS department put emacs on the VAX machines we were working on. They also “helped” us by customizing the default emacs environment to put most of the heavily used commands on the function keys and keypad keys on the Visual 210 terminals that were connected to the VAXen. That’s the emacs I learned.
I then went to work on the Apple II, Mac, and Windows for 10 years. I had to learn at least 5 different editors during that span to get my work done. There was no emacs or vi. I preferred GUI editors that had menus where I could at least see most of what was available if I looked hard enough.
We did have a Sun 360 at Claris that was used as our Usenet news server, and our email relay to the outside world. The engineer in charge of that machine refused to put emacs on it, because he would rather use the disk space and memory for Usenet news. There was, however, vi. So I learned basic vi commands.
I then said, “So, if you force me to choose an editor, I would choose Visual Studio”.
They were very confused.
The manager called me the morning after the interview, and said that the feedback was overwhelmingly positive. However, he said:
“Listen, I am putting together a team from scratch here, hiring 3 of you at once. Would you do me a favor, and participate in interviewing each other before we extend offers to any of you?”
This was interesting.
So, that Friday, I went back to the Cygnus office, and interviewed (and was interviewed by) an engineer, and a documentation writer. The engineer and I got along, but I thought long and hard about what to ask the writer. When the time came, I asked her:
“What is your favorite style guide, and why?”
She looked at me, quite surprised at the question.
“You know about style guides?”
“Well, my mother is an editor. I have taken writing courses before. And my teachers all insisted that we followed whatever their favorite guide was.”
So, she told me the she used the Chicago Manual of Style, and gave me several reasons why. I also asked to see a writing sample, and she pulled a manual she had written for a software company out of her bag. I was a little concerned that it was for a consumer product, not a product for software developers, like what we would be working on, so I probed her knowledge of what a compiler was, and what code looked like. She could not code, but she understood basic concepts.
We all got the job. We joined the two engineers in Germany (one was Hungarian, and one was Palestinian; we had a strange team). Found out a few weeks later that we also had an Australian in Canberra (my boss had neglected to tell me about him).
We managed to integrate ourselves into Cygnus eventually, despite being the first closed-source product in the company. The culture was pretty hostile at first, but eventually, it turned into a great job.