Aperture: Senior QA (2004-2005)

Aperture: Senior QA (2004-2005)

All in-depth articles about my Apple career:

NOTE: This is just my experience on Aperture. Many hundreds of stories aren’t in here because I didn’t experience them myself.

This project is tricky to write about as there was so much positive and negative emotion involved — a real roller coaster.

Paul Marcos was an engineer on Mail with me and unofficially my mentor. He was a huge reason I joined the team in the first place. When I heard about him leaving Mail, it was like a punch in the gut. I asked where he was going, and he couldn’t say. That’s Apple for you.

Then he said ‘You could come with’. I instantly felt better. I loved Mail, but the thought of an entirely new product from scratch was very appealing.


When I interviewed, I didn’t know the assembled team had many people on it that I already knew. There was already some mutual respect or at least awareness. That sure helps!

Some of the people in that category were Randy Ubillos and Stan Jirman (co-creators of Aperture), James Dempsey, and Dan Waylonis. I loved the people I interviewed with, but I was hesitant to consider a project where no one would tell me what it was. 

My last interview was with Randy, and that helped my hesitation. When the subject of working on an unknown project came up, he said (paraphrased):

I can’t tell you what we’re working on but if you look around my office, you might get some idea.

He moved his hand across his office wall, covered with beautiful pictures he’d taken. Ok, so I’d be working on a photos app, awesome!

Early days

Aperture was more than a year away from shipping when I joined, and the software was mostly a series of demos. It was unique with a ship date set in stone. Apple caught wind of Adobe working on Lightroom and of course wanted to beat them to the punch.

They wanted to announce it at PhotoPlus+Expo in New York in the Fall of 2005. Apple likes to announce and ship at the same time or within a month or so.

The team was stellar, and most were very senior. Despite being assembled quickly, it had the feel of a team that had been together for a long time. Everyone seemed to know at least 2-3 other people. When you hire for a secret project, it’s hard to advertise for people, so you go by word of mouth.

There was so much laughter; it was hard to believe. Even when things turned sour, we had a party at Randy’s house, and I remember it as hours of continuous laughter. The team had an incredible sense of humour. They were very kind people and wicked smart.

Neither Randy nor Stan were our managers, but Rany was sort of the spiritual leader as the co-creator of the project. He facilitated a lot of debate about how Aperture should be. The discussion was spirited, intense, but civil. Everyone had their say. Or joke to crack.

Unique things

There were several unique things about how the team worked which differed from Apple practice. Even before writing any code for feature, a software engineer and a QA engineering would collaborate on a document detailing a test plan. Both parties learned a lot, and it created a great relationship.

Another wonderful thing is we hired professional photographers—top tier ones—to work on the project. One had his photos on the cover of dozens of National Geographic magazines. They were to use Aperture with their professional workflow and then attend meetings and share their experiences. Excellent idea.

We all needed to become well versed in photography. The team had a cabinet full of every supported camera, which could be checked out just like in a library. We went on field trips to learn the ins and outs of different cameras. Some of the people like Randy and Stan were photography experts and would help others out. It was great fun.

We had a reasonable number of QA engineers, which is very rare in any software product. Since this was a professional product, they knew the quality had to be high.


An interlude to take a break from the story.

At some point in the project, we were going to move from Infinite Loop 5 to De Anza 7 (I think), a generic office building across the street and down a ways from the main campus. It seemed like a demotion, but there were space concerns at headquarters, and they were trying to move Pro Apps out and into one building. It had its benefits.

The only reason I mention this is that a senior member of the team vociferously objected to this plan. He wanted to walk a short distance to eat in the cafe and other perks of the main campus. He threatened to quit if they moved us.

They backed down. Now there’s some power. So we went to IL1, right across from the executive suite. Given how close Steve (Jobs) was to our offices, I saw him only once in our area. It was clear that Pro Apps were not his thing and Aperture was not on his radar.

Going sour

Near the early summer of 2005, management started to panic as features were late and the ship date could not change. For those that work in software, you’ve seen this happen before. It’s how you handle it that determines how the product comes together.

The short version is that a tremendous amount of shit hit the fan. One of the best projects ever quickly turned into a nightmare.

This outcome is not uncommon, but the first volley from management was to cut features that were actually finished and worked well. The result was merely to give the illusion of progress. I was in charge of printing, and it worked amazingly well. It had unique features that probably don’t exist even today in any other program. I had worked so hard on some of the nuked features.

This practice led to a lot of frustration and animosity for everyone involved. Engineers understand when they kill a feature when it isn’t coming together. The indiscriminate killing of features was a harbinger of things to come.

Yelling begins

There started to be a lot of yelling, even from people that were typically mild-mannered. The pressure was coming down from on high.

One day, they sent out a group email saying everyone needed to start working nights and weekends until the very end of the project. Keep in mind that the project still had roughly six months to go! People with kids would be sacrificing their entire summers.

Historically, I’ve always refused to do this. I come to work and work like hell, and then my brain shuts down, and I need to go home and unwind and do other things. Other people spend a lot of time doing unproductive things, so it’s easier for them to handle long hours.

I’m known at Apple for speaking up when people are unhappy, especially when no one is saying anything about it themselves. I had to reply to this email.

I replied that I couldn’t go along with the mandatory work hours. I said that if anyone had a problem with how much work I got done, they should let me know. I’ve long hated being measured by numeric criteria. Hours worked, bugs written, and so on.

Note that my reply went to everyone that got the original email. The person that sent that email came to my office within minutes. He slammed the door and shouted at me so loud that people heard it five offices away. HOW DARE YOU, he bellowed. I was fucking up the whole project, he said. Say what?

This yelling I’m talking about was not the only yelling that I saw. Every engineer experienced their version of it. I don’t feel comfortable retelling those so multiply my experience by 15, and that should give you an idea.

Yelling continues

Later in the project, they called the QA engineers together and told us we had a new manager. We didn’t know they were looking for one and we weren’t involved in interviewing him! We were pissed. We voiced a very, very strong objection, especially since it was no more than six months before shipping. We were so vocal; everyone knew how we felt. We refused to work for them.

At other companies, I had been in situations just like this that always ended badly. I couldn’t believe Apple was doing this.

When our protest made it up the chain, they dragged us into a meeting where they brought in an HR person. That didn’t bode well. The HR person eventually became a wonderful friend, Todd Barrett.

What transpired was this fucking crazy manager screaming at us so loud it hurt my ears. His face was red, and he was sweating. The HR person did nothing. He was not my friend at that point. 🙂

This meeting was terrifying. I had nightmares about it later. A couple of times, the manager came to my office after this and stood in the door. He didn’t yell at me but spoke rather loudly. I had anxiety attacks both times. He eventually got fired years later.

This manager was mad that we hadn’t even given the manager a chance yet. That wasn’t the point. By the time of this meeting, we intuitively knew this newly hired manager was in over his head. It was clear to us that it was going to be more work bringing him up to speed than any benefit we would get from him. We turned out to be right.

After this yelling disaster, they gave us iPod Nanos and took us bowling. Say what?

Another fun story was that I was dragged into bug review meetings several times with management. They seriously yelled at us for writing bugs. ‘This bug should never have been written!’ they shouted. They argued that we shouldn’t write bugs on incomplete features. But that’s what the engineers wanted, and we felt we worked for them on a day-to-day basis.

My feeling was if you find a bug, you have to record it, or you won’t remember to check it later. Sure, something might not be 100% done, but maybe what you found isn’t even on the checklist for the engineer. And most engineers liked it this way. But these managers were trying to keep their bug counts down, so they adopted all these tactics.

There was a lot of crying on the project, too. One person had a nervous breakdown. One person cried in one of our offices, and I remember it vividly. She thought she was going to get one Saturday off and she was going to see her kids, but now they were forcing her to work.

Interlude 2

Another interlude to break things up a bit.

The new boss they hired into our team without our approval had an uncanny ability to say unintentionally hilarious things.

For example, we discovered at one point that he worked on a cruise ship. We asked him what he did, and he said: I used to do the captain’s balls. Of course, everyone laughed, but he wasn’t quite sure what to make of it. I guess he was a bit of a verbal gaffe machine, although it was harmless fun.

He had another gaffe that became legendary, but the current politically correct climate says I should exclude it. But imagine that it was fucking hilarious.

Speaking of politically correct, one member of our team had his office fridge stocked with Lime Coke (apparently no longer available), which he referred to as Gay Coke. All 3 of the gay team members thought it was hilarious so I feel OK in sharing that.

I want to inject more levity into this interlude. Randy was always hilarious when he went on a rant. One of my favourites was when he ranted about flowcharts. He despised them. He went so far as to saying that anyone that makes a flowchart should be fired. We all thought it was funny!

The other rant was when we brought in some guy to write the red-eye filter. Since everyone was so busy, they just let him loose. It worked reasonably well when finished. But Randy discovered C++ code, despite the entire project being in Objective-C. Again, he went on a massive rant about how stupid that was, and Apple should fire anyone that writes C++ code. I somewhat agree.

Stupid shit

Management knew that pretty much everyone was unhappy and tried ridiculous things to appease us— rather than being better managers. This practice is not unique to this project or even Apple. What made it different was so much of it, and the effect was cumulative, especially after months of yelling.

One day they gave away gift bags to everyone to cheer us up or something. I went back to my office and started unpacking it. Some of it was cheap crackerjack style toys. Most of it was just awful candy. Artificial flavours and colours and packed with shit that is not going to make you more productive or healthy.

Then there was an iPod in there, so that was pretty cool. We were all sitting around talking later than day, making fun of the gift bags, and someone mentions that the iPod was pretty cool. Half the people said ‘what iPod’? They seriously gave away identical bags to everyone and only half the people got iPods. When asked, they said it wasn’t a mistake and wouldn’t explain further.

There was speculation that the ‘good’ engineers, in the minds of management, got the iPods and the rest got stiffed. When we saw who didn’t get them, they seemed to be people that had gotten more flak from management.

Another fun story rises from the fact that I was a prolific bug writer throughout my career. Managers love to plot bug counts and try to see if they can make the graph get to zero by a specific date. I found out second-hand that a high-level meeting took place late in the project where they were discussing risks to the project shipping on time. I was considered a risk to the project because of the number of bugs I filed. Say what?

Let’s add 130+ engineers

So they tried cutting finished features, yelling at people, and working people to the point of nervous breakdowns. Then they came upon a brilliant idea: let’s steal over a hundred engineers from other teams and then the project will magically get done on time.

Software engineers reading this are already laughing, I’m sure. There’s a very well-known book called The Mythical Man-Month, which argues that adding people to a project makes it ship later. It’s paradoxical but seems true in practice. Aperture could be a case study.

So instead of a dozen engineers busily at work on their features, the project became a dozen engineers, each with another dozen engineers lining up outside their offices. The new people needed to come up to speed on a massive project that had to ship in months. The original engineers were no longer writing code. It was more madness.

I also had a line outside my office as they brought in a three dozen QA engineers, none of which had the headstart we had on the project, and few had any photographic experience. Remember, this was before the iPhone. It wasn’t that they were terrible; it was just an impossible situation. We had some great people, though.

Every week there were new people, and I barely knew any of their names. Imagine not even being able to get to that point? People would come to my office to ask questions, and I’d have to ask who they were and what they did.

To make matters even worse, they brought in a second set of managers that were from the same teams where they snagged the new engineers. Who the fuck was in charge exactly?


So, we shipped the product and introduced it at the show as planned. Despite a long list of warts and terrible performance, much of the engineering team was proud of the product, especially given the schedule and the circumstances. I continued to use it as my primary photo app, even though I’m not a hard-core professional. Others on the team were too bitter, such that they refused to use the final product.

But management felt all the original engineers were crap and the product was crap. They blamed us for all the problems and took no blame themselves.

Given all that happened, we started looking around for jobs elsewhere right after the product shipped. Since Aperture was well known at Apple to be a disaster, we wondered how our job search would go. When you said you worked on Aperture, you’d get a sympathetic response. Oh, I’m so sorry to hear that.

Graciously, Bertrand Serlet, the head of Software Engineering told all his directs that a bunch of great engineers from Aperture were going to be sending out resumes. He told them to ignore the gossip and hire all these people. We are forever grateful for that.

On the downside, Think Secret received an untruthful leak from a member of the extended Aperture team. Think Secret is a now-defunct, but once popular rumour website. Daring Fireball, the premier Mac web site, republished the story with comments.

Apple recently asked the engineering team behind its Aperture photo editing and management software to leave, Think Secret has learned.

Aperture Dirt—Daring Fireball—4 May 2006

The truth is that no firings took place. We wanted to leave because of the shit that happened, and we also didn’t feel particularly welcome. All the original engineers found jobs very quickly, one quit, and two stayed on the team.

I was incensed that someone spread these lies, so I anonymously leaked something for the only time in my career. Daring Fireball covered this leak, which other engineers corroborated.

Last week when I wrote “Aperture Dirt”, regarding Think Secret’s scoop regarding the dispersal of the Aperture development team and the future of Aperture, I emphasized that the sources for my own information were second-hand.

Since then, I’ve heard from additional sources at Apple, including a first-hand source: one of the developers from the original Aperture engineering team. For obvious reasons, these sources have all requested anonymity.

No one from the original Aperture engineering team was fired or removed from the team. Yes, most members of the original engineering team left the project — but they did so on their own volition. Why? Because of what can only be described as spectacularly bad management.

Every one of these engineers easily found other work. One left the company, the rest found positions elsewhere at Apple.

More Aperture Dirt—Daring Fireball—4 May 2006

Many people, including myself, developed long-term health problems. One person, as I mentioned, had a nervous breakdown, others just took forever to get any spark back in their careers. I would look these people in the eyes, and they had this look like someone close to them died.

An amusing aside was that in my annual review, I got the most substantial bonus I’ve ever gotten and the most significant salary increase. I guess getting yelled and screamed at has its perks. Or they felt guilty. Who knows.

Many years later

Some of the terrible stories have now become entertaining. We’ve all moved on for the most part. Overall, I think of it as a great project where the first half overshadowed the second half. I know some others share that opinion. Given how horrific the second half was, that gives you an idea of how special we felt the team was.

One of my favourite stories involves an unnamed engineer that joined the team as one of the 130+ borrowed engineers. He was arrogant and was very vocal that every engineer on the original team sucked. At that point, I was running the bug review meetings. He’d stand in the back. When a bug came on screen, his typical response was ‘That code is shit, it needs to be rewritten’.

One day, a bug he wrote came up on the screen. Everyone in the room was scratching their heads about his poorly written bug. It was vague, rambling, and incoherent. So I said ‘this bug is shit, it needs to be rewritten’. Everyone in the room laughed but him. He seemed to redden.

Fast forward ten years and the Apple Watch team offered me a job working on SwiftUI in 2015. (The project started on the Watch team). This engineer was now a manager on a team in the Watch organization. When they offer a job to someone, it gets reviewed in a high-level meeting. My future manager brought me up, and this engineer voiced very strong objections. He said I was a big pain in the ass. I can’t argue with that.

Here’s my favourite post-Aperture story, though. Everyone on the original team had this fantastic poster made from a photo taken at Randy Ubillos’ home. It was at the party that I mentioned previously. Everyone in the picture signed the posters, and everyone got one. I’ve always treasured it. Looking at it made me feel like the shitty times never happened.

One day I realized it seemed to be fading and realized it was still in kind of a crappy frame. I went to the frame shop, and I looked over the poster. I noticed Randy’s signature was missing. As a co-founder of the team and someone I very much enjoyed working with, his signature was essential to me. Did he forget to sign it?

I walked around the shop, trying to figure out what I should do. Out of the corner of my eye, I spotted some nearly invisible writing on the poster. At a precise angle, you could see the ghost of Randy’s signature. The pen he used must have been far more sensitive to light than what others used.

I decided to contact Randy and see if maybe he could sign it again. I felt weird because I hadn’t talked to him about Aperture since it blew up, so I didn’t know if there was lingering bitterness. But, he graciously accepted my invitation, and I went to his office.

We chit-chatted a bit, and I thanked him for agreeing to sign the poster. He pointed to his wall where he had a nicely framed version of the same poster. He talked about what a great time it was and what a great team it was. He said it was one of the happiest times at Apple.

I couldn’t agree more.

P.S. I never once though about leaving Apple, even in the darkest days of Aperture. Not only did it have its wonderful days, my previous jobs were so amazing that I had to stick around.