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?”
“And you know C?”
“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.