SwiftUI (2015-2016)

SwiftUI (2015-2016)

All in-depth articles about my Apple career:

This was not only a challenging and intense project, but it was also very exciting new technology. For reasons I’ll explain later, I only worked on it at the very beginning of assembling the core team.

SwiftUI was entirely new UI framework, written entirely in Swift. It ran on every Apple platform. This was hugely beneficial because developers typically use UIKit for iOS, AppKit for macOS, WatchKit for watchOS, and so on. What a pain if you want to write a cross-platform app.

Applications written with SwiftUI not surprisingly were also written in Swift. I won’t go too much into the technical details as many are above my head, but so much information is available if you just DuckDuckGo it.

What made SwiftUI exciting to me was several things:

  • It was entirely new and I had the chance to learn it organically
  • It was in Swift. I love Swift.
  • It was a way to do UI programming that I could comprehend
  • It was a chance to work with some of the smartest people at Apple

How did I end up here?

My entire career at Apple, I always worked on either macOS or iOS applications, so this would be my first job on a framework. If I’d seen the job listing, which couldn’t have revealed details anyways, the word “framework” would have crossed it off the list.

Just like all the great jobs I had at Apple, networking was the key. The person who would become my manager, Josh Shaffer, and I had been casual friends for years and he was aware that I produced high-quality work. Hey, I can say good things about myself, right?

He and I had something in common. We both worked in the same organization when I worked on Calendar so we shared some of the same gripes. We had lunch sporadically.

One lunch in particular, I was nearing the end of my Calendar job and spent 45 minutes unloading on him while he nodded knowingly. Then he said “let me tell you what I’m working on”

Josh loved to say “I’m not supposed to tell you this but…” so he proceeded to tell me about SwiftUI, codenamed Amber at that point. I was intrigued. A brand new framework, all in Swift, it sounded interesting. But it still was a framework so it didn’t quite sound like something I could see myself working one.

I never asked Josh, but I wonder if the whole point of the lunch was to recruit me. I’ll just think that to flatter myself.

The John Harper effect

When I worked on the Eye Candy team, we collaborated with a fellow named John Harper (who was always called Harper). He is by far one of the smartest and most valuable employees Apple had for a long time. In his own time, he wrote a framework called CoreAnimation, which you could argue was the reason the iPhone existed at all.

Without CoreAnimation and its efficiency, all the killer animations on the iPhone wouldn’t have been possible without being sluggish or battery killers.

On the Eye Candy team, we used CoreAnimation for everything.

Back to lunch

Anyways, back to lunch. At the very end, Josh says “Do you know Harper?” and of course I returned with an enthusiastic YES. Josh says “Well, he’s joining the team” — for me, this was the stamp of approval. When can I interview?

Interview

Man, this was an enthusiastic team. Not to give them too much of an ego, but I felt like I was on the original Mac team. These guys were bent on world domination and were confident as hell they could pull off this feat.

I was extremely intimidated, but they hired me anyway.

The Watch

An interesting aspect to this team was that it was in the Watch group, working alongside the WatchKit team. Even though the destiny was a cross-platform framework, I believe the plan was to use the Watch as a test cast since it’s relatively simple.

It’s also possible that it was a more favorable group to this project and so it ended up there. Josh may have known Kevin Lynch, the leader of the Watch organization.

The job

I kid you not, Josh (my new boss), when I asked what he wanted me to do basically said “I trust you to figure that out”—this was pretty much what I always wanted. I felt like I worked for the engineering team not the boss and I would do whatever they needed to maximize the productivity of the team.

It was right in my strike zone, to use a metaphor from a sport I hated.

Continuous integration

With the help of two of the core engineers, Jacob Xiao and Kyle Macomber, we developed a continuous integration system that was unlike anything I’d seen before.

A continuous integration system runs every time someone checks in some code, makes sure it builds, looks for errors and warnings, runs unit tests and performance tests. We even had it install the build on a device and more tests.

With typical systems at Apple, you get responses back in 10-30 minutes, depending on the size of the project. Remember, a big company has millions of lines of code. With this system, we had it down to the minute. An engineer could check-in code and before switching contexts, get an email pointing out an error. They could fix code they had just written.

It was brilliant and everyone on the team bought into it. You could check out our project at any time and it always worked. What a productivity win that was. Otherwise, someone could update to the latest code and it wouldn’t even build or it would have an egregious performance problem.

Demanding

I won’t lie and say that the engineers were very, very demanding and also micromanaged a lot of things that I didn’t always agree with. But I loved that they cared so much about the work I was doing. In other jobs, I often felt like I was doing all this work and no one was taking advantage of it.

I was also responsible for writing tools and everyone was expected to write SwiftUI projects. This was very difficult for me, having no experience with anything but very, very simple graphics. I was so excited to even draw a box on the screen with a line or two of code.

Disintegration

Unfortunately, this project had an unhappy ending, and only for me. Craig Federighi, the head of the iOS group, wanted Amber in his organization, so they got slurped up. They offered me a job in a different group, NOT on the Amber team.

The reason they did that is because I was a tools person and their tools team was an organization-wide team, rather than team specific. Plus, it was back in the same organization I had left from the Calendar team.

I pondered long and hard and I actually changed my mind several times. Ultimately, I declined. I don’t regret it. I wanted to work on Amber, not UIKit and Springboard. Nothing against them, it just didn’t interest me.

Conclusion

So, in less than 2 years, I went from being elated to deflated. When they eventually shipped Amber as SwiftUI, I was thrilled. It’s a great technology and I like to think I had a small part in it. I heard that some of my systems continued to be used even after I was taken from the team.

Thanks to everyone I worked with, including some that I didn’t mention such as Tom Witkin, who was so patient with me in learning SwiftUI.