Oracle – 1997

I honestly don’t know how recruiters operated before Google, LinkedIn, Facebook, etc. It must have been really hard work to get by on just building up your own personal database of contacts, of people who knew people, matched by skill set, where they worked, etc.

For whatever reason, one called me. Introduced himself. I grilled him on what he did and how he actually made money.

“I charge a fee of 20% of your first year’s salary if the company hires you.”

Oh. Now I understand. That’s also fairly lucrative when recruiting software engineers.

He wanted to put me in touch with this hiring manager at Oracle. I told him that I had not heard good things about working at Oracle. He assured me that this was different than the normal Oracle job.

A few days later, a fellow with some kind of accent (my guess was New Zealand) called me. He was going to start a company that was going to be spun out of Oracle. Oracle was going to set aside a bucket of cash, and looks for other investment partners to also put in cash. In any case, they were starting a software company, and wanted to talk to me about working there. He had me set aside an hour for a phone call.

To talk to him. We talked about software methodology. We talked about nit-picky areas of the C standard. We talked about QA and its importance (where I got to talk about my recent expertise in test-driven development). At the end of the hour, he said:

“Right then. I am going to make you an offer. But first I need to see some code samples.”

“I can send you the main files for my menu work on Tk for both Mac and Windows.”

“That will be fine.”

I asked a question that had been bothering me. “What kind of software is this?”

He replied, “That’s confidential. Once there is an offer on the table, there should be an NDA, and we can talk about that to help you make your decision on whether or not to accept it.”

“Well, I am looking forward to seeing this offer.”

“What do you expect in terms of salary?”

I took what I was making and multiplied it by 1.1. A 10% pay raise sounded nice.

“That shouldn’t be a problem. There will also be equity, and Oracle is providing the benefits.”

“Sounds good”.


Two weeks later, I got an email:

“My apologies – normally the process is a lot quicker than this. Unfortunately, Larry Ellison and Jerry Baker are reviewing the hiring budget and are sitting on the approval which I am waiting for – I’m told that this will be complete by Wednesday – and then it will take me a few more days (perhaps a week) to get a formal letter into your hands.”

He then laid out the terms, which were reasonable.

“I hope that you will forgive the delay and am sure you will find the offer a good one with good upside potential – significantly better than the potential elsewhere. If you have any questions, please let me know.”


One week later:

“I’m really sorry that I haven’t contacted you before now. My hiring is still being held up because Larry Ellison is undertaking a budget review. However I do hope to hear something positive tomorrow. I really regret the delay – profuse apologies and several beers owing – I really hope to have something in your hands by the end of this week in the form of a written offer but currently my hands are tied.”


Four more weeks later, I got a phone call.

“I’m afraid I have bad news. The entire project’s funding has been cancelled. Oracle decided that even if it was spun out, the work that this company would be doing was not something that Oracle wanted to be involved in. I am going to try to get venture funding on my own. If something happens then, may I call you?”

“Sure. That’s disappointing.”

“I assure you; nobody is more disappointed than me. Thanks so much for allowing me to waste your time.”


I never heard from him again. Still waiting to have beer with him. Would have been nice to meet him face-to-face.

And that would not be the last time the hiring manager has said that he was just “waiting for the approval” for an offer to be forthcoming. It’s amazing that companies post jobs, but when it comes time to pull the trigger, they have a change of heart, and eliminate the position or reorganize or lie to a candidate that they were going to receive an offer.

And this also did nothing for my image of Oracle as a company.

Microsoft – 1996

A friend got in touch with me.

“Hey, I’m working on the Internet Explorer team for the Mac. It’s just getting off the ground. We are recruiting, and I thought of you.”

“Sounds good,” I said. “Tell me more.”

He filled in a lot of non-important details (at least 20 years later), and then dropped the bombshell.

“It’s in C++.”

I gulped. “I don’t know C++.”

“Well, everybody understands that there is not a lot of expert experience out there, so if you know the basics you should be OK.”

The interview was scheduled, and I had two weeks to learn C++.


It was a different world in 1996. There were many roadblocks to learning C++:

  • Google was not yet up and running. There were other search engines, like Altavista and Yahoo, but having all of the language knowledge at your fingertips was a few years away. I bought Stroustrup’s book, and tried to read through it.
  • C++ was still relatively young. The language itself had been kicking around for a decade, but the available compilers were slow to implement all of the features.
  • I owned a Mac. I did not own any development environments. There were not free. They were several hundred dollars, and I spent money for my personal machine on music software.
  • At work, I had access to C++ compilers on Mac, Windows, and Solaris. However, I did not feel right learning C++ for a job interview on another company’s machines with the versions of compiler they were paying for.

Now, there are many, many free resources with free compilers for any language you want. Then, however, it was really hard without spending lots of money for the off-chance I might get the job.


Interview day. This Microsoft office was in Foster City. There were the only team there. Most teams, of course, were in Seattle.

  1. Resume deep-dive: The hiring manager went over my resume with me, asking me about each position, my education, etc., and tried to feel out whether or not I knew what I was talking about and whether or not I had social skills.
  2. Technical discussion: Discussion of some computer science concept. I don’t really remember the topic for this particular interview, but hash tables were very common for this in the nineties.
  3. Open-ended question: Here the Microsoft people were famous for asking strange questions. They asked me the famous “Why are manhole covers round?”. I talked about the fact that circular shapes minimized the area-vs-perimeter relationship. Oh, and it keeps them from falling in. (I’m ok with talking about this question, as it is one of the most discussed questions in the early days of the Internet).
  4. Coding example: “Write a C++ class for managing shapes”

How hard could it be? It is the quintessential example in almost every object-oriented programming book. I read through one.

I wrote all of the member variables and methods; they were straightforward. Then I had to write a constructor.

And I froze. It was painful. It was obvious to me that the interviewer wanted me to succeed. The vibes from all of the interviewers were awesome, and if I could just write this very simple constructor, I would get an offer.

I did not get an offer.

 

Connectix – 1996

One of my friends that had been at Claris contacted me about a position at his company, Connectix. They needed Mac engineers to work on Virtual PC, an application that pretended to be PC hardware so Windows could run. At this time, the Mac processor was on Power PC, but Windows was running Intel. So, Virtual PC provided an emulator that took Intel-compiled problems and ran them on the Power PC.

At the interview, we talked a lot about my assembly language experience, and my API experience in Mac and Windows. I thought it went well.

Not well enough. I was informed that they liked my experience, but really needed somebody with more low-levels Windows experience, like device drivers. They would keep my resume on file in case something came up.

Still waiting for that call…

JavaSoft, a division of Sun Microsystems – 1996

I was a contractor when I started in the Sun Microsystems Laboratories, and as a result, my security in the job was suspect. Oh, I think I was doing fine working on Tcl/Tk. I was learning something about X Windows, and I learned Test-Driven Development. Learning Tcl/Tk taught me an entire new paradigm of programming, that of scripting languages. Learning Test-Driven Development has been amazingly useful for the rest of my career. And befriending an industry pundit like the head of the Tcl/Tk team was exciting. In more mundane concerns, it was one of the best commutes I have ever had, 12 minutes from Menlo Park to Mountain View. The campus was next to a small lake, and adjacent to the Bay, and the walk I took everyday through that park was good for me.

But being a contractor bothered me. I had to go through hoops to get my badge to work (Sun reset them every six months). I did not get paid vacation, had any holidays forced upon me (and they weren’t paid either), and the medical benefits were non-existant at first, and then later, they were poor. And expensive. I was not treated the same by other personnel in the labs as everybody else was. And, as a contractor, I would have been first on the chopping block if there had been problems.

And there were problems. Our team was in a political competition for resources. We had a lot of people on our team compared to all of the other groups in the labs. We supported platforms other than Solaris (which is why they hired me).

And we weren’t Java.

110px-Duke_(Java_mascot)_waving.svg
Is this the first time a programming language had a mascot? I think that this is a 90s thing.

Java 1.0 had been released a few months earlier by developers in the Labs who had worked on it for 5+ years. It was the Labs’ biggest success story. Java 1.0 spread like wildfire throughout the industry, as it was much easier to develop websites with it than with C and C++, popular at the time. Sun Labs was pushing it for use everywhere, going so far as to develope a computer with everything written in Java. (Customers never saw this one. It was SLOW!) Java had all of the political clout and money, and Tcl/Tk was a weird little corner of the labs that was NOT Java.

Sun spun Java into another division called Java Soft. Late in 1996, Java Soft had an opening for an engineer to work on Java for the Mac. I interviewed for the position, not knowing anything about Java.

I honestly don’t remember much about the interview. They asked some technical questions, and gabbed with me about culture fit.

I still have two emails from that period. The first is a “well, we aren’t saying yes; we aren’t saying no”:

Sorry it has taken so long to get back to you.  The team thought you
would fit in here, but wants to interview some more people to see if we
can get someone with a bit more relevant experience.  So you are still
under consideration, but it is going to take some time for us to make a
decision.  Please feel free to ping me for an update on the situation
any time.

Note that there are hard carriage returns in that text; that was what email was in 1996, folks!

And then later:

Things have changed, and we’re not actively looking for a Mac person
at the moment, pending discussions with Apple on how we can work more
closely with them.

Well, it turns out that Apple basically agreed to take all of Java’s Mac development in-house, so Java Soft closed the Mac developer position.

So, no Java Soft for me. They did not have any Windows positions open…

 

Sun Microsystems Laboratories – 1996

I worked on FileMaker Pro a long time – 6+ years. I worked on the lowest level code on the Mac version. I helped implement libraries to encapsulate and emulate the Mac system calls for Windows. I ported FileMaker to Power PC, away from 68K. I developed the first Developer Edition. And I was on the team that finally brought relational power to FileMaker. I did a prelimary investigation of moving the FileMaker code base away from Pascal, and into C++. I brought version control to FileMaker, and I worked with IT to figure out why the Ethernet network they provided was not working for the FileMaker team. I wrote the internationalization test plan for all of the new FileMaker 2.0 features, and for all of the Windows-specific features.

The team was awesome, and it was stable. It was well-run; management shipped FileMaker 3.0 on schedule with a 3-year release cycle. There was a blend of manual QA and automated QA. And it sold like hotcakes.

After 5 years, however, I felt pidgeon-holed into my area of the code. I was bored. I was not spending much time developing core features.

I was also stagnating. During my time on FileMaker:

  • C++ became a first-class development language.
  • The World Wide Web was announced, and the Netscape IPO was fresh on my mind (Motley Fool’s 2013 history of Netscape stock price)
  • Windows 95 shipped and started hammering what little market share the Mac had, despite not having TCP/IP support in its initial version (which made it hard to get on the World Wide Web!)
  • Apple was gasping and dying. The stock price was low, what options I had were underwater, and sales were falling.

I was restless.

At the beginning of 1996, I was at a hot-tub party with some of my friends, when one of them started talking with me about work. I didn’t think much of it. The next time I saw him, he and his wife hosted a movie night. At the end of the movie, he said to me:

“You program both Mac and Windows, correct?”

“Yes.”

“And you know C?”

“Yes.”

“Could I get your resume?”


I interviewed at Sun Labs a couple of weeks later. I did not know anything about what my friend had been working on going in. Turns out, it was a scripting language called Tool Command Language, with a corresponding graphics environment called ToolKit, otherwise known as Tcl/Tk.

I was ignorant about scripting languages going in. The only one I was really familiar with was the built-in language of Macintosh Programmer’s Workshop (MPW) from Apple. So I was pretty ignorant on what I was getting into.

I don’t remember much remarkable about the interview process, other than the resident Mac guy asking me about a field in the TextEdit data structure. I replied,

“Well, I don’t know that field specifically, but if you hand me that Inside Mac Volume V on your shelf there, I can look it up.”

He laughed, and handed me to book. I turned to the TextEdit chapter and read to him out loud what the field was for, and APIs related to it. Remember when programmers were judged by the size of their libraries of technical books, pre-Google, pre-Stack Overflow?

He laughed some more.


The head of the Tcl/Tk team was John Ousterhout. He had been a professor at Cal Berkeley, where he had developed Tcl/Tk. He had then brought it to Sun Labs, and had been hiring people to improve and expand on it.

John was up front with me. He could not hire a permanent engineer; I would have to be a contractor. However, they worked with a firm that I would actually be working for as a salaried employee. That firm did not have a health plan (or retirement plan). I was getting a raise, but not a huge one, and it would have been mostly absorbed by health costs had not I been on my wife’s plan. He hoped that we could convert my position to permanent later.

I took the job. It was an easy decision to make. After 8 years at StyleWare/Claris, I was spreading my wings.


On the one hand, being a contractor had other drawbacks, like being let go earlier in down times. I had to fight with Sun about my badge often. Outside of my team, I was ignored by other teams in the Labs.

But I made some good friends. I learned new technology. I taught people some of what I knew.

But the biggest takeaway from the Tcl/Tk team I got was Test Driven Development. Every line of code we wrote had automated tests written for it, if at all possible. Often, we wrote the tests first. It was eye-opening, and even when I don’t or can’t use it now, it made me a much better developer.