This is chronological, from first to last. If you want most-recent first, scroll to the end.
Beginnings
Working began at 12, when my parents put me to work cleaning up the
lumberyard for $2/hour. Eventually I learned to do most jobs at the mill.
I believe my parents' intention was twofold: to teach me the value of money,
and the value of a university education. From the latter standpoint, my
employment at Darfield Building Products was a great success - in
university, when my interest in studying occasionally flagged, it was the
thought of stacking two-by-sixes, shovelling sawdust, and "pulling on the
greenchain" that kept me afloat.
Between graduating high school and starting university, I decided that
having a job outside the family business would do me some good. To that
end, I put $50 in my wallet and jumped on my motorcycle, and rode to the
Yukon. I landed a job there, operating a Patrick 988 loader 12 hours a day.
Every day. My job was to move tailings - ordinary gravel, rocks and dirt -
from the outflow of a placer-type gold-mining operation. In the end it was
more of an adventure than a job, as the inefficiencies and egos of the place
ran rampant. It was here that I first began to understand the saying "If
all you have is a hammer, everything looks like a nail."
When I was searching for my first summer jobs in university, I left these
experiences on my resume because I didn't have any others. Now that I have
plenty of former employment that is relative to my chosen carreer to show
off, I still leave my first jobs on there because I truly believe that those
early experiences in a production-oriented environment were what formed my
notion of a work ethic.
Notwithstanding all of that, however, I was happy to reach a point in my
carreer at which I felt that I'd left resource extraction and refinement
behind me. All I had to do was find a job.
My first job in the computer industry was as a lab attendant and helpdesk
person. This was a lowly job that required no real experience; I guess the
theory was that you didn't need any to provide support to Macintosh
users. From that standpoint, I was singularly qualified.
This job proved to be somewhat prophetic, as I have found every job I have
performed since then, even pure software engineering, to be a variation on
the theme of the communication of technical things to (sometimes
non-technical) people. In fact, the whole art of UI design is nothing more
than this - designing paradigms and laying out interfaces such that they are
easy to comprehend and use is an act of communication by itself.
The NeXT Years
With the force of real on-the-job experience behind me (and little idea that
half of the undergraduate Computer Science student body had precisely the
same job on their resume) I set out to find a summer job. Luckily, a friend
and I had been the most obnoxious students of a professor, Vincent Manis,
who was kind enough to employ us both for the summer. While it was probably
true that we were ahead of our classmates in coding experience, I believe he
wrongly confused loudness and contention with brilliance and knowledge.
Nevertheless, I owe a dept of gratitude to him, as he gave me both my first
software engineering job and simultaneously introduced me to the NextStep
Operating System, which was to dominate my experience for the next five
years.
This first coding job involved writing a simple graphics interface for the
undergraduage Scheme lab. For reasons still unclear to me, the Department
had decided to purchase a whole lab of Next machines, which were then a very
new technology, and teach the Scheme language (a variant of LISP) on them.
This was somewhat ill-fitting, but worked acceptably so long as you weren't
trying to do anything real, like a GUI. What was required was a simple set
of routines, callable from Scheme, that would allow a student to open a
window, and do simple drawing on it.
Naturally, I goofed off for most of the summer and constructed elaborate
designs that were doomed to failure for various reasons, mostly the
inexperience of the designer. In the end, a week before courses were to
begin, fueled by much Jolt cola and many Mars bars, I produced a prototype
from scratch which worked. Such is the life of a college student.
In the process of doing this work, my boss Vince Manis let me know that NeXT
Inc. was obliged to hire two "Campus Consultants" to support the NeXT lab
and other NeXT users on campus. They had already hired one, and based on my
work, he reccomended me to be the other. Unfortunately, there was nobody to
reccomend me to, as the local NeXT Computer representative had just moved
on. Eventually, a new sales rep was hired, and I hounded him. Scott
Anderson must be some kind of a saint, because I know for a fact that I
called him every other day for a couple of months, eventually pestering my
way into the job. I owe him a debt of gratitude to this day for having put
up with what must have seemed to him to be a bizarre and over-enthusiastic
job-seeker.
The role of Campus Consultant was, I think, a carryover of Apple culture to
NeXT, and one that was to prove very valuable for NeXT, as many CCs later
became Software Engineers, System Engineers, trainers, marketers, and
salespeople for NeXT.
As a CC, my job was to keep the NeXT lab in relatively good running order,
help out at the Bookstore with sales of NeXT boxes, and support individual
users on campus. Now, in 1990, when the first NeXT cubes came out, the
typical low-end machine was a 1-foot by 1-foot by 1-foot cube, containing a
motherboard running an M68030, usually 8 or 16 MB of RAM, an Optical Disk
Drive, and often no hard drive whatsoever. On this was running BSD 4.3 Unix
on a Mach kernel. It costed $10,000. The big flaw in this strategy was
that the OD was s-l-o-w. I mean, really, really, slow, like 10-minute login
times slow. So one of the first things I learned, which was to serve me
well in years to come, was that lots of times, you can't solve someone's
problems. Much as I wanted to, I couldn't help the user of an OD-only
system get better performance - all he or she could do to improve
performance to the 'acceptable' level was to buy a SCSI hard drive, and
increase the amount of RAM in the machine (which was very expensive then).
To get really good performance, NeXT users were going to have to wait a
couple of years for better hardware and software.
Fortunately for NeXT, a lot of initial purchasers were what the industry
calls "early adopters". Generally, these people were technology enthusiasts
who were willing to buy into the concept with real dollars (quite a lot of
them) and wait for it to be refined to the point that it would be actually
useful to them - at which point, they would have to buy it all over again.
Early Adopters seem more than happy to do this simply for the cachet of the
"next big thing" and to be part of the revolution, so I was fortunately not
castigated too much for the shortcomings of what was a very promising
technology. Perhaps, though, it was the unfortunate bendable reality of
computer marketing and sales that spurred me in a more technical direction.
The work as a CC helped me get two other summer and part-time jobs doing
NeXT coding and systems administration, for J. Hills Radiology, and the MIS
lab in the UBC Commerce Department. These got me further and further hooked
on NextStep, which was really an aggregate of Operating System, Operating
Environment, and Development Environment.
Four years in school found me three courses short of a degree and planning
to return school to complete it. Instead I went to work at NeXT, Inc. in
Redwood City, as a Developer Support person. At this point in my carreer,
being offered real work in an innovative company in Silicon Valley made it a
no-contest decision to put my degree on hold. And it was a very good
decision. Developer Support gave me an opportunity to learn an amazing
breadth of knowledge. I supported customers troubleshooting early ISDN
installations, debugging UNIX system calls, doing systems administration,
using sound and graphics libraries, development tools, compilers, databases
and more. Everything was relevant and nothing was off-limits - a great job
to have as your first in the industry. While the job was very general, I
did have time to specialize in some things - I was interested in development
environments, and made myself an expert on the application framework
(AppKit) and the user-interface layout and construction tool
(InterfaceBuilder). To one degree or another, I've been working on GUI and
development tools ever since.
After a time, I moved on to a more senior position in developer support. I
started devoting most of my time to a smaller set of customers that we
supported more intensively - what was called Premium Developer Support.
This was an eye-opener for me; I was wearing a suit and visiting customers
on-site, filling in for trainers, and trying to communicate without creating
friction with engineers 20 years my senior. Maintaining a professional
demeanor in person is much harder than it is on the phone. I found it
challenging and very rewarding.
Developer Training in particular represented the hardest and best customer
interactions I had. It is a roller coaster ride between the agony and
frustration you feel when despite your best efforts, a student just doesn't
"get it", and the thrill of victory and common understanding that comes from
teaching someone an important and elegant concept. And, in all cases,
maintaining composure and representing your company in a professional
manner. A few times, I was fortunate enough to speak in front of larger
audiences at some of NeXT's trade shows as well, and found the act of public
speaking was much the same - exhilirating, challenging, fun, and rewarding.
While filling this great multi-functional role, I also came to the
realization that it was important to me to finish my degree. I was lucky
enough to have Scott Mattoon as my manager at the time. In fact, I had
seven managers in two years at NeXT (despite being a wonderful place to
learn, NeXT did have it's shortcomings). But Scott was among the best of
managers - he was good enough to help me arrange a system whereby I returned
to school and continued to adequately support my customers. Getting my
degree was a matter of settling unfinished business, and fully qualifying
myself for more technical jobs in the future.
I enjoyed filling in as a trainer a lot and very nearly took a job doing
that, but, with difficulty, decided that I wanted to pursue software
development with more technical depth. Although Developer Support had given
me a look at nearly every sort of coding problem in the NeXT world, there
were many avenues of knowledge that I didn't have the time to pursue
significantly. In short, I was a jack-of-all-trades; I wanted to be master
of *something*.
After evaluating my options, and certainly influenced somewhat by a love
(and lack) of money, I elected to do consulting work with Vanguard, a
Chicago-based company, one of whose founders I was acquainted with. At this
point in history (late 1992) even a dead river-otter could have found a job
doing NextStep consulting, so I was a shoe-in. I moved to Chicago and began
working for Swissbank, and commuting every two weeks to Seattle, where I
worked for McCaw Cellular (later to become AT&T Wireless). AT&T was my
customer from my developer support days, and I maintained that good
relationship into my tenure at Vanguard and beyond.
Although Vanguard was a great company, it was structured rather too much in
favor of the employees - to be honest, I think the founders, Tyler Gingrich
and Takis Mercouris, didn't take enough out for themselves, so there was no
real reason for Vanguard to continue. So it was being shut down. Also,
Vanguard was in Chicago, which is *cold*, even for someone who grew up in
the mountains in Canada. So, with this confluence of factors, I moved to
Seattle only four months later and worked with McCaw as my only customer, at
this time working through another consulting company called FOJ, another
great group of people. In fact, most of that year consulting was spent at
McCaw in Seattle, and the continuity of it was such that I still think of it
as one continuous, one-year consulting job.
McCaw Cellular Communications, later to become AT&T Wireless Services, was
implementing several applications as part of their AXIS project. The area
that I worked on was called the McCaw Application Framework. This was a
dream-team of framework developers - we had a small, elite group of UI,
database, network, and application wizards, and we all worked out tails off.
For a consulting job, it was a very tight-knit team, and we did some amazing
things. This was my first real exposure to Object-Relational mapping and
coding to databases in general, and I learned a lot. We were using NeXT's
EOF 1.0 product, and modifying it heavily. While I was there I came to be
responsible for the entire GUI framework, and several other subsystems,
including validation and a Security management application. It was, as we
said at NeXT (though I'm sure it was first said much earlier) "like drinking
from a firehose". I learned a lot. After logging a 300 hour month, I
decided that, much as I liked it, the consulting life was too much work and
not enough play. It was a good breakpoint in the project's life cycle, so I
began looking. | |
|
Sun and NeXT had come to a seemingly forward-thinking agreement; for a sum
(purported to be about $20 million dollars) and other considerations, NeXT
and Sun would re-define the API's for their NextStep operating environment
in an OS-independent way, publish this as a new open specification
"OpenStep", and port a new, OpenStep-compliant version of NextStep to work
on top of the Solaris operating system. This seemed full of promise - NeXT
had failed to make significant impact on SUN's traditional markets and
needed to redefine itself as a non-proprietary supporter of open standards
in order to compete; SUN needed a better desktop than CDE.
| |
Development at SUN on OpenStep was begun, and it was more than a year later
I joined to help with AppKit and Mail issues. I went to SUN because I
believed that OpenStep was the best shot of survival that NextStep, the
original technology that had inspired me, had, and I felt that I could learn
there. Unfortunately, OpenStep quickly languished under the desktop
politics of SUN, which had after all managed to kill the forward-thinking
NEWS desktop in favor of CDE, a bloated and slow warthog of a desktop if
there ever was one. I did learn a lot there. Technically, I learned a lot
about Mail formats, sound library internals, and the internal mechanics of
the Application Kit. These were also the dog-days of Java, and I spent as
much spare time as I could learning this, as it became clear that NextStep
and Objective-C would slowly but surely dry up and be forgotten.
Personally, I learned what it was like to operate in a large organization.
In particular I learned the valuable lesson that large companies generate
large politics. And that politics is the enemy of good engineering. Ok,
it's probably inevitable, but I don't have to like it.
Moving on to Java
| Fortunately, there's always good engineering happening somewhere. Fresh
from a somewhat mixed experience with a large company, I elected to work for
a much smaller one. Infoscape represented the confluence of many technical
goals for me - I wanted to work at a small company, in Java, with databases,
GUI, and a great UI-layout tool. Infoscape was and is all of these things
and more. In the 16 months I was at Infoscape, I worked on all parts of the
system, and learned a lot about good and bad design, and the new and
different trade-offs that web-delivery of enterprise applications
entails. Primary lessons? Good technology won't succeed on it's own
merits. Market focus is more important than the latest cool feature.
Listen to what your customers are saying. Look at what your
competition is doing. Good design is worth the effort. Teamwork
happens at your desk, not in meetings. Leadership has to be honest
to be effective. |
|
The big upside about working for a small company (aside from the pile of
stock options) is the degree to which one person can affect the product.
The downside of small companies is that they are prone to sudden direction
change and are more than usually vulnerable to marketing and sales mistakes.
After 16 months, Infoscape's direction has turned more toward custom
database application delivery rather than tool and framework development.
So, with some misgivings, I decided to move on. |
|
Initially, moving on meant a move to a temporary consulting job at
Pacific Data Images (PDI). PDI is an Infoscape customer I helped to sell to
while I was still at Infoscape, and is the maker of the films Antz,
Schrek, and Schrek 2. I was able to help PDI with their film production
tracking applications, which used infoscape technology that I had helped
develop, and to implement a framework
specific to their application needs, which added new functionality not found
in the original Fresco product, as well as fixing and working around bugs
that are showstoppers for PDI. PDI, for their part, was an incredibly
creative place with really nice people, and I was sorry to leave, but
leave I did - I didn't want to linger over what I was already regarding
as a dead technology. |
| Oracle made me a compelling offer in terms of intangibles... specifically, I was impressed with the quality of engineers on the Bali team (which is part of the Tools division). The Bali team develops a set of lightweight UI components (both AWT and Swing based) for internal use by application teams elsewhere in the company. The engineers there are top-notch, and I learned a lot. The downsides of a large company are still there however - institutional resistance to new ways of doing things, corporate HR department, stifling completion requirements. |
I should explain that last bit - Oracle tries to localize all of their products to 20+ languages including right-to-left languanges, and recently, due to the Americans With Disabilities Act (ADA), is trying to ship products that are handicap-accessible. These are worthwhile efforts. They do, however, slow down innovation.
In the end I received an offer I couldn't refuse from a promising startup. I had mixed feelings leaving Oracle, both because I was leaving behind some great people (including one great manager, a rarity in this business) and because Oracle was an otherwise accomodating place to work - results-oriented, great gym, matching 401K, ESPP, stock options. But I came to the conclusion that I needed a more stimulating environment.
Resonate was a young company in an entirely different sector of the industry than I had worked in before. Not a small company, and not a big public one either, it offered the right "sweet spot" of innovation, new technologies, and likely return combined with less risk than a ground-floor startup might have. The biggest downside was the San Francisco - Sunnyvale commute.
Resonate offered many interesting design challenges and an opportunity to learn CORBA (Orbacus) and XML. In August of 2000 we went public at $20. By October we were spiking at $50 and things were looking pretty good. By January we were at $6 and I sold in February at $4. Easy come, easy go.
For about 4 months, I developed my own project, AreaJ. AreaJ is a digital-imaging web application that is written in Perl, on Debian Linux, for Apache/mod_perl. I set out to do this mostly to broaden my knowledge of the open-source world, and to learn perl (turns out it really is a programming language), as well as to implement something purely for myself. AreaJ was a personal success, in that I broadened my knowledge of the open-source world and re-grounded myself in my areas of strength; solid design and straightforward implementations that work reliably and well.
| Since July of 2001, I've worked for Apple's Internet Services Development division. It has been without a doubt the best work experience I've had since working at NeXT. As a company with a definite sense of mission and strong esthetic values, Apple has been a breath of fresh air after the get-rich-quick internet schemes of the 1990's. |
Immediately upon arriving at Apple, I was tasked with the commercialization of Apple's existing "iTools" service suite. The result of about 10 months of effort was '.Mac', a subscription-based service with expanded capabilities for .Mac. My area of specialization was in the design and implementation of most of the commerce model; particularly integration with our credit card authorization service. I was also responsible for architecture and implementation of the signup application, which involved multifarious signup pathways, credit card authorization, activation key generation and validation, and ultimate transmittal of subscription and authorization data to SAP. ".Mac" was successful well beyond our expectations, and generated literally millions of dollars in revenue for Apple within the first month - all of which flowed through my e-commerce code. Good thing we got that one right the first time!
After the success of .Mac, I was recruited to be the first full-time developer to work on the iTunes Music Store server suite (Project Jingle, delivered April 28, 2003). iTMS is without doubt the best project I've ever been priviledged to work on. The server applications were written by myself and 6 other engineers in about 10 months. This includes an entire asset-management and versioning system, a brand new search engine, content-importation implementations for the big 5 major labels, a content-authoring framework and tools, a complete commerce implementation (my job) including risk management and debt recovery, as well as asynchronous integration with the back-end financial system (SAP). And much more. We were able to accomplish all this because of committed executives with vision, grounded and professional senior engineers, pragmatic feature and schedule management, and a shared desire to implement something better. Which, in a sentence, is probably the driving force behind Apple as a company.
| At this point, after 11 years spent mostly in silicon valley, my wife-to-be and I decided to move to Vancouver BC. Aside from the cheaper real estate, it was an opportunity to not be so immersed in the technology culture. Truthfully, I had no expectations of continuing to work for Apple for any length of time, but I pitched it, and to my great benefit my bosses at Apple gave me a shot to make it work. Which it did - turns out, for many tasks, one can be a lot more productive when one isn't on site. I have worked remotely for Apple ever since. |
| After the initial implementation of the music store, we added allowances and gift certificates in October of 2003, at the same time we added Windows support. The next major target was to make the store available in the major European markets - Great Britain, Germany, and France (Project Asterix, delivered June 15, 2004). Because we had spent considerable effort on internationalization during the design of the first store, we were able to deliver an expansion into 10 more European countries - Austria, Belgium, Finland, Greece, Ireland, Italy, Luxembourg, Netherlands, Portugal, and Spain (Project Obelix, delivered October 26, 2004). Canada on December 1, 2004. Along the way were many smaller but important features - a variety of different ways of issuing and accounting for free product codes, a number of new payment methods, special U2 discounts, you name it. |
| In the summer of 2006, I began to feel like e-commerce was becoming repetitive; I decided to branch out. Serendipity took a hand; my old boss from .Mac days was now managing a small team of engineers doing iTunesU. iTunesU is a country cousin of the iTunes Store; the main idea is to make higher-education media content available to students and professors and to provide easy tools for metadata management and publishing for those institutions. I deeply enjoyed my time working on iTunesU; contributing to the higher-education space is personally rewarding, and the technology and design challenges were refreshingly different from e-commerce. |
| By the summer of 2007, I was finding that engineering challenges were less entertaining than they once were... I was looking for something different. Enter, management. I've always had a love-hate relationship with the whole concept of management - on the one hand, it is the necessary disambiguator and force-multiplier that enables all engineering of any significant size to come to fruition. On the other hand, it's a constant distraction from the real work of getting things done. Still, I believed that to the extent that I had been the beneficiary of some extremely forgiving managers that had consistently given me room to grow and improve, I felt that so long as I followed their example, and treated my job as an opportunity to enable some extremely talented individuals (while still providing the needed direction to get the job done) I couldn't go too far wrong.
Hence, I quickly found myself with headcount and an exciting new secret project. Which got excitedly cancelled after about 3 months.
That was my first lesson as a manager... exciting new secret projects are all well and fine, but having consistent work that needs doing, that can provide a base for more speculative, cutting-edge work - that's the bread-and-butter of a successful team. Certainly of a successful team that is a thousand miles away from headquarters. Following that, our bread-and-butter became the iTunes Store's internal customer support application as well as much of the effort to cambat fraud in the store. This was a partial return to the world of e-commerce, but more importantly, it was work that badly needed doing and which benefitted real users by solving problems for real people, and which shipped regularly to do so. |
| In March 2013, I returned to work after a 9 month parental leave. Becoming a parent will sharpen your focus; I decided that being a manager on an 11-year-old project no longer sufficiently engaged my interest or challenged my abilities as a technologist. Really what I'd been wanting to do ever since the iOS SDK first came out was get back to writing code in the Objective-C client space, and see what mobile was all about. Fortunately I was able to stay at Apple to do this; I spent the next year working on the iWork productivity apps for iOS and OSX. I found it both challenging and important work. In the end, I found that the opportunity to spend time with my son while he was still young was too attractive to continue working at a job where I really felt like I'd accomplished all I'd ever wanted to. |
| From early 2015 to late 2016, I worked as a general contractor, building my own house. It's a fascinating thing to do, offering completely different challenges from writing software or managing software engineers. At base, the same issues appear - the trade-offs between time, cost, and quality; the art of fitting appropriate personell to appropriate jobs; and the challenge of being creative within severe planning and building code constraints; and managing time intelligently, to balance off the things that you can and want to do yourself, with the things better left to specialists in their field. It was a great learning experience, and I think a very successful project; we have an excellent house that we didn't break the bank building; and I learned a few things about managing that you can never learn from managing software engineers. |
Click here to return to Resume of Thomas K. Burkholder.