08. August 2016
I have some good news to share with you all at the end of this post.
My life (and my career) has been a sequence of random steps that felt right to me at the time, and somehow the dots have started connecting for me lately. I actually spent most of my childhood in the swimming pool, as I did competitive swimming for almost 15 years of my life. I wasn’t one of the genius kids who showed promise for technical fields early on, I just jumped from wanting to be a journalist to being a translator or a theoretical physicist, depending on the season. But I mostly swam.
I only started learning programming at university in 2010, when I took up the Robotics course at the Czech Technical University in Prague. The reason I chose Robotics over Computer Science is for my interest in soldering when I was a teenager, so I wanted to learn more about how computers work instead of how to program them.
Well, that was a mistake. While I enjoyed the electrical engineering course, the very few classes we had in programming were the ones that really captured my interest (being wrong about what I thought I’d actually enjoy). We were taught Java and a little bit of C, but that didn’t stop me from quickly falling in love with programming. Since then I’ve been passionate about building tools I can envision saving people’s time, enabling them to do more or even tackling problems like robot locomotion.
It was interesting then, how I transitioned from robots to iOS. My parents bought my sister an iPad 2, I knew I wanted to build apps for that. So, the summer after my first year I was lucky to land a job as an iOS developer, even though all the experience I had was one book read about iOS development and about 10 months of Java experience. That was it.
I happened to be looking for a job at a time when it was nearly impossible to hire an iOS developer in Prague. I was willing to work for any salary they’d give me and spend most of my summer in the office. While I was struggling the first couple of months (I was learning how to use a Mac while learning how to do my job in Xcode), I loved every minute of it. The little time I didn’t spend at the office I dedicated to reading iOS-focused articles, tutorials and even in-depth posts (most of which I didn’t understand at all, obviously, because my “experience” with iOS could be measured in weeks).
It wasn’t all smooth sailing from the start. I wouldn’t have an iPhone until later that year and I remember my first assignment was building a sorting option into a settings panel, where you could choose a VoIP provider (I worked at a company that built SIP clients). It was a blend of C++ and Objective-C code, two languages that I first had seen mere days before. My first implementation did a bunch of unnecessary copying and in fact blocked the main thread for seconds every time you tried to sort about … 30 entries in an array. Yeah, it was crap.
Luckily my bosses were extra patient with me, letting me ask silly questions that hopefully got less silly with time. As I enjoyed the job so much, I managed to get up to speed in the matter of months and got my own project before the end of the year - a new iPad app. It took me (and a few people here and there) more than a year to build that app, which became my learning playground. I can’t emphasize enough how much I enjoyed being given a big task and the time to dig deep into it. I rewrote big chunks of the code multiple times throughout the project, but I managed to get it shipped (eventually).
I learned tons about iOS while I was there, but the time came that I wanted more. I had worked at that company for over two years, full-time during the summer and school vacations, part-time when classes were on. I graduated in 2013 and wanted to get out of the Czech Republic before going back to get my Master’s. The search for a job abroad (USA, UK, Switzerland) was not easy, as I’ve sent over 200 applications, only getting responses from a handful of companies and nothing good coming out of any of them. One of the issues might have been that I had a strange expertise - I was looking for an iOS dev job but had education in artificial intelligence. One company reached out to me eventually and we quickly found ourselves on the same page. I flew to London for the interview, covering the cost myself, and got the job.
The company is called SwiftKey and I spent almost two amazing years there between 2014 and 2015, learning a ton about development, AI, tools, but also how a startup works on the inside. I was lucky to meet many smart and welcoming people there who I could learn from and collaborate with on SwiftKey for iOS, which ended up being pretty successful (I don’t think I’ll be able to type on anything else on my iPhone). One of the biggest advantages of being in London in person ended up being able to meet @mennenia, who introduced me to the London iOS community, which made my years in London much more productive and enjoyable. Meeting people in our community has become one of the most fun experiences of being a developer in the Apple ecosystem.
While at SwiftKey, I worked on many very different problems, from learning the basics of OpenGL in two days to ship the original Flow visuals (when you drag your finger around the keyboard to insert words), to memory optimizations of the custom keyboard extension (you’d be surprised by how little 40 MB is) to creating a testing and continuous integration stack for our team.
The last problem interested me enough that I found myself thinking about it, even outside of work. I ended up building a tool in my free time called Buildasaur. That forced me to dig very deep into Xcode Server to stretch what it can do to make our team more productive. Eventually I ended up blogging and speaking about it at meetups. Thanks to a few friends I made at iOS meetups in London, the post got retweeted and spread quite beyond what I expected, eventually ending up on the front page of Hacker News.
All of these things each contributed to my Xcode Server articles getting all the way to people at Apple. They reached out to me and we started talking. I’ll skip over the details, but basically I asked them to wait, because I had been planning to first get a Master’s degree in London. I realized that this might have been an opportunity that would never come again, but I felt it was the right thing to do. I knew (and still know) that I have so much to learn and getting MSc in Advanced Computing at King’s College in London ended up being the absolutely right thing to do.
This past year I was taken to the depths of algorithm design and analysis, cryptography, machine learning, AI and distributed systems. Without this new knowledge, I would struggle to work on many projects that I did. Therefore I cannot say a single bad thing about attending university. I appreciate others might have a different opinion, but I know I wouldn’t be half as confident in what I do if I didn’t go through with it. You can get work experience for the rest of your career, but studying what you love at university is a short window you don’t want to regret missing. I’m glad I pushed myself to go back this year, and while it wasn’t easy, cheap or always fun, it was definitely worth it.
University naturally took up a lot of the year, but I still found some spare time. I worked on many open source projects this spring (mostly in the open source Swift community). I also went ahead and prepared for my time after university. I got back in touch with people and interviewed. The process was long, hard, but fair. Never did I get asked any of the classic bullshit interview questions that certain Search Engine and Social Network companies are infamous for. I got an opportunity to show what I know; and I was lucky for it to be enough for them.
And so, I got offered my dream job in the Developer Tools organization at Apple.
I can’t believe how many things have changed since my previous post on this topic from last year, when I was excited to go to WWDC for the first time. Now, I’ll try my very best to help make the next WWDC great for others.
I have always wanted to end up at Apple, but I’ve also learned that the only way to stay happy (or sane, for that matter) is to do what feels right at any point in time. In 2010 it was learning programming, in 2011 getting an iOS job while having no experience whatsoever, in 2013 leaving my country to chase after the only company that looked right to me, in 2015 it was risking everything and going back to school for a year. Now, in 2016, it’s accepting the honor I’ve dreamed of for years, and seeing where it takes me.
Wish me luck.