Home
Reflecting on my first year at SpringBoard
I've started working at Apple last summer, in the System Experience (SpringBoard) team, after looking for a position that would allow me to work closer with the iPhone operating system. Little bit of interviewing later, I found myself working in one of the most important codebase of the iOS. While I won't get into what I've worked on, seeing things from the inside out is really changing my perspective on being an engineer on the iOS space.
UI programming is difficult
I've worked on many mobile apps before, and was someone who really enjoyed working on UI and interactions. Whether it was a school project or more notable apps like Google Chat or Gmail, building nice UIs always felt exciting. Being limited to the public APIs of what Apple gives developers, getting something that looked and felt great was usually what was expected, and all we could do. Also, there wasn't a huge business impact on perfecting a gesture or a piece of UI that people were using a few times a day or a week. There just wasn't enough opportunity to work on such problems, at least for me.
Well, not at Apple. Having the entire power of the operating system under the palms of your hand comes with some responsibility. All UI and interactions has to be absolutely perfect, fluid and natural. All the time. With all devices the OS supports.
Getting the interface between a human's finger and pushing pixels on the screen right requires lots of attention to detail and many years of expertise that the team has developed. A very experienced teammate of mine said, "It'll take time, this is not the stuff you can learn elsewhere, so be patient", and and 1 year in, I'm just starting to understand that.
There are many know-how and methods developed at Apple over the years, from design to engineering teams, to make interactions and animations feel the way they are. Keeping the system responsive in a setting where lots of async animations are firing every few milliseconds gets complex very quickly, and over the years great techniques are developed to make this happen. There are some structures and frameworks developed to tackle this challenge, but it's still not an easy task. Navigating this discourse really exposes you to the beautiful complexity of building crisp user interfaces. I'm feeling very lucky to be tackling such problems with the team.
Working on Apps vs the OS itself
Working on things people that take for granted is humbling but a bit bitter feeling. For example, hundreds of millions of people unlock their iPhones every day, maybe hundreds of times, but they never think about it. It's just something that has to work reliably and perfectly every single time. Same goes for launching an app, or returning to your home screen. People don't really think about how these features are built. They usually go on apps on their phones to get things done, but the glue in between is usually not something they think about. Thus, can't really point to what I do, which is the bitter part.
Apps are usually very deliberate and direct on the value they provide to the users. Send a message, do a workout, share a picture with friends, read news. They want to deliver you value and possibly keep you entertained. Perhaps some of them even focus on keeping you in the app as much as possible for their business objectives. We can even say that they compete with each other for user's attention.
It's quite the opposite opposite in the OS. OS wants to feel as frictionless as possible. No one would want to spend more time to launching an app or finding one. This is quite a big change when designing features and implementing them. Instead of taking space, you're trying to take less. Instead of being more visible to the user, you think about not letting others abuse the system and take up more stage than they should. The issues and the use cases we run into in this space are quite interesting.
That's a wrap for now, being in both sides of the iOS really is lots of fun. Hope I was able to give a little bit insight into the two sides. Maybe I'll write another reflection later. See ya 👋