Here's to the crazy ones: lessons learned at Apple
April 16, 2021Este ensayo también está disponible en español.
After nearly six years at Apple, the time has come for me to move on. Today is my last day, so I wanted to share a bit about my journey and some of the ways my time with the company shaped me and the way I see the world.
I landed at Apple by sheer luck. I had my sights set on a technical role at a startup, so I leveraged my internship experiences to mask over my lack of a CS degree and posted my resume on every single place I could get some attention. My post on HN caught my eventual manager’s eye, and instead of joining a team of five or ten people looking for product market fit I landed at the largest company in the world. Years later, having passed through Maps, Search, and Siri Data, here’s a look back at what I learned on this wild ride.
I’ve written a bit about the habits I picked up at Apple before, but in a very abstract way. Here are a few concrete learnings, in no particular order:
- Personal Drive
- Everyone is winging it. Yes, experts too. What we call expertise is nothing but a mix of self-deception, ruthless focus, pattern matching ability, and just enough training data.
- Things happen because people make them happen. Companies are made of individuals, and no project succeeds without a driven person pushing the vision forward.
- If you don’t see how your current project feeds into the larger goal, ask. Maybe the world has shifted and your team should stop investing in it going forward.
- If your manager doesn’t understand your goals at both a 1 and 5 year horizon, they won’t be able to help you get there, and you’ll plateau. You may think they have a clear idea of what you want when they don’t. Fumbling here is extremely costly.
- If you don’t know where you want to be down the line, challenge yourself and aim for breadth. Your number one priority should be building a strategy to figure out what you want, because no one will do that for you.
- Technology
- The fact that anything works is pretty amazing.
- Code lives a lot longer than you’d expect. Something I started off as a little side project a year into my time in Maps became a fundamental dependency in other teams’ flows. Receiving questions and PRs from people across the company about it long after I was out of that group became a source of pride as time went on.
- People are willing to listen to faceless systems more than they are willing to listen to other people’s opinions. Bake opinions into CI checks and no one will break them. Pick your rules carefully.
- There’s always going to be a new shiny package to try, or a new version to upgrade to. New technologies can’t be a priority, but if you let your toolchain go stale it becomes a vicious cycle. You won’t upgrade this year because you didn’t upgrade last year, and now the jump is no longer incremental.
- Organizations
- There’s no such thing as a startup within a big company.
- M&A and hiring sprees will change a team’s culture, fast. Both strategies can impact teams for better and for worse, so tread carefully.
- Silos can be good because they allow people to focus, but they’re only good as long as there are well-defined interfaces at the boundaries between teams.
- Companies crystallize information by offloading knowledge/know-how into objects, code, and documentation, but more than anything else by searing processes into people’s brains.
- I used to believe organizational behavior and incentives management were bullshit. They are not, and the longer you are in any team the clearer that becomes.
- Project and People Management
- Breaking down projects into smaller chunks is costly. Not doing it is costlier. More small tasks are always better than a few big ones.
- Good management is about aligning incentives between each individual’s goals (including your own), the team’s objectives, and the broader organization’s ambitions. Being able to operate at all these scales at once requires constant fine-tuning and paying lots of attention.
- People will fight about ownership, tools, and programming languages, and in the time that they are deciding the color of the bike shed you can build a prototype.
- It is easier to imagine problems you might have tomorrow and to use them as an excuse to not build something now than to deal with problems you are already facing and solve them today. Don’t fall into that trap.
This list represents a sliver of what I’ve learned in the past six years.
I’m grateful to have had the opportunity to work with many really talented people at Apple, and to have had an impact at the scale that Apple does. During my time there, I merged changes that broke the build and blocked every incoming PR, rabbit-holed for weeks on the wrong details, mistakenly dropped tables that had been built up over the years, and let code slip in that led to irrecoverable loss of valuable data. In those mistakes, I learned a lot, and in the process built some amazing systems, too. Many things I learned, some described above, and some not, are embedded in those systems and will continue to live on in the work of the amazing team I’m leaving behind.
Now I get to enjoy the outcome of all of that hard work as a user. I will be keeping tabs on new features, and who knows, maybe I’ll even file a few more radars. As for what comes next, I’m heading to a startup, and I couldn’t be more excited. Come back next week to hear more about that decision.
Here’s to the crazy ones.
This is the first in a series I’m writing about my recent career transition out of Apple. See part two, on where I’m going and how I picked my next role and make sure to check back in a few days for upcoming pieces on things to ask in interviews with startups, how to evaluate an offer from a startup, and tips on how to make your job transition as smooth as possible, etc.
Photos: Steve Jobs theater, Apple Park. Visiting Apple’s old HQ at Infinite Loop 1 with my parents back in 2015.
Want to see more articles like this? Sign up below: