跳转至

16 An Interview with Felix Krause

Felix is the founder of fastlane, an open-source tool for iOS and Android developers focused on making building and releasing apps easier. Just last year, fastlane has saved over 15,000,000 developer hours and is used by tens of thousands of companies around the world. He’s also the founder of iOS-factor.com, an open-source best-practices guide on how to build high-quality iOS apps. He was named as one of Forbes 30 under 30. He has published various privacy-related essays on the iOS permission system. As a result, his posts reached #1 on HackerNews multiple times and got covered by major media outlets. Felix speaks at various conferences around the world, most recently Tel Aviv, Oslo, Tokyo, Melbourne, Bangalore, Vienna, Berlin and San Francisco.

Felix KrauseFelix Krause

Connect with Felix

Twitter: @KrauseFx GitHub: github.com/KrauseFx Websites: krausefx.com and whereisfelix.today

Interview

Felix, you are very well-known for being the founder of fastlane, an amazing open-source tool for iOS and Android developers with a focus on building and mobilizing apps with ease. The tool boasts incredible numbers — it’s estimated to have saved 15 million developer hours. It has since been acquired by Google. What was the inspiration to develop this tool?

Back home in Austria, I started a company that was providing an app builder for sport clubs. Back then, it was one of the first ones out there. It would automatically fetch all kinds of information from Facebook and RSS feeds, like the news items, images, videos and more. The great thing about this concept is that you only had to build it once, and then you could sell it to multiple types of sport clubs. I wanted to build it in a way that, when I changed the core, I could update all the modeled apps without a lot of extra work. I ended up automating 100% of the process—meaning when I changed a line of code and then pressed the Deploy button, it would push 20 updates to the store that hosted the app. That’s kind of how I got started with the automation piece of my work.

Selling the resulting app was actually quite difficult. At some point, I decided, “Okay, let’s focus on the automation part.” So I built an actual product around the automation of the deployment process, and that’s how fastlane got started. I started it as a college project while I was doing my Bachelor’s degree in Software Engineering.

It’s really interesting that you knew it was time to make your app / project be something else. How did you know you had to let go of the original idea of your app and focus on something else with it—the automation? Was that difficult?

It was a challenging decision to pivot. There were two components to it: First, selling the sports app was more difficult than expected, and I noticed I didn’t enjoy doing it at all. Second, for my Bachelor’s degree, I needed a project that had the right-sized scope.

Thanks to the university, I had the time to put into starting a new project, for which I chose the iOS build automation.

From there I naturally invested less and less time into the app builder, which then slowly faded out.

In all the work you do, you are also known for leading a nomadic lifestyle—moving to a new place every month and carrying what fits on your back. Is this difficult to do while also working professionally as a developer and entrepreneur?

My nomadic life is slightly different from other nomads in that I usually stay within the same city. I spend most of my time in New York City, where Google has an office. So while I move to a new apartment and a new neighborhood every month or so, I still go to the same office. I still get the job done. I still get to hang out with the same group of friends and so on. I agree that, if you to relocate to a different country every week, it’s more challenging to be as productive, but that’s why I made the conscious decision to move within the same city. While I travel for conferences from time to time, I usually stay in the same city—I’m in between New York and Austria, where I’m from, where my family is, so I spend some time there also.

How do you deal with lacking a physical office when you’re traveling? Is there a place that you like to go, namely cafés or workspaces, etc.?

Actually, my favorite place to work is always in my own apartment or hotel room, because that’s where it’s quiet; that’s the only real thing I care about when I want to get actual work done.

There’s a big difference between writing emails and attending meetings— versus actually solving problems. Whenever I want to solve problems, I need a quiet surrounding, so I never work from coffee shops or the like. I prefer just my own apartment. When I travel, I always have a Bluetooth keyboard, Bluetooth trackpad, and a MacBook stand with me to lift up the MacBook—a traveling workstation. The one I have is the Roost stand; it’s super small, and I always have it with me. It allows you to build up your workstation wherever you go, so you don’t kill your neck when you work from your laptop.

Do you have any sort of ritual when you are starting the day?

My mornings are not the best. I generally don’t like waking up, so there’s nothing that I can recommend there! But the number one thing that has helped me a lot when it comes to daily productivity is going to the gym—usually at about 3 or 4 pm, which is a little after half the workday. The reason why I do this is because, at that time, it’s usually already a little harder to focus; I might be a little tired or something, right? And so I always go to the gym during that time, and it clears my head. I shower again, and it kind of feels like having a second day. At least, that’s how I see it, because, afterward, I go back to my Mac with a fresh mindset.

If you can do something like this when it comes to your job, I recommend doing that.

In working with other people remotely, how do you deal with the common problem of working with teams and people in different timezones?

Though, most of the time, I work in Eastern Standard Time, in New York City, it can still be complex. When it comes to scheduling, I use everytimezone.com; the site lets you visualize time zones more easily. But, also, to schedule meetings and video calls, I use Calendly, which allows you to send a link to someone else, and they can choose a time slot on your calendar. I don’t use it too often. I also try to avoid meetings and calls as much as I can, and I always prefer asynchronous communication.

Why do you try to avoid meetings and calls? Why do you prefer asynchronous communication?

Many forms of communications, in particular, Slack messages, meetings and calls, encourage (or allow) a lazy communication and working style. Some people then make use of this, at the costs of your co-workers. If you use emails to communicate, it requires the author to provide all the needed context and detail to be able to reply to the problem, and it forces the author to properly structure their thoughts.

At the same time, once something is nicely written down in the form of a doc or email group, it allows other team members to read up on how a specific decision was made, etc.

You seem to have discovered what works for you in terms of productivity. Do you have any habits that are uncommon or very particular to you?

One habit is writing down ideas when I have them; I use an app called MajorKey to do that.

Another habit is listening to audiobooks. I live around 40 minutes from the Google office in New York City right now and I just walk and listen to audiobooks every day unless it’s raining. If you walk for almost two hours a day and you listen to audiobooks, you can finish one book in a week, which is pretty impressive!

Which books have had the biggest impact on your life that you would recommend to other developers?

All the books I read are non-technical. A book I read recently that I enjoyed was Homo Deus: A Brief History of Tomorrow by Yuval Noah Harari. It’s about the future of humankind, a little bit about the history of mankind over the last million years, and what the future problems will be in the next hundred, two hundred years. That was a really interesting book, and it was written in a way that it’s applicable for us engineers, but also the non-engineers. It’s a very good book.

In addition to audiobooks, what other habits have you developed?

I’ve developed some habits for when I have a project on which I have actual coding to do. Day-to-day, you contend with a lot of emails, meetings, documentation, etc. But sometimes you just want to solve technical problems. You just wanna write code. I usually clearly define that zone; it helps to have a ritual around that. For me, that was always Club-Mate—a German sparkling tea drink—that I usually have at home. It’s just a caffeinated tea. But my rule is that I only drink it when I close my email apps and disable notifications to get coding done. I put on my headphones. I usually eat a piece of chocolate for some extra sugar, and I drink the Club-Mate, and that’s the sign to myself that I’m going to get stuff done.

Aside from the ones you’ve mentioned, what other tools do you use daily that make your life as a developer easier?

I have several tools and processes that I use. The number one productivity tip that I can recommend to every professional developer is to set up shortcuts for literally every Mac app they use. The Mac operating system is built so that it’s easy to use for new users and advanced users. But we sit in front of our Mac so many hours a day, doing so many things, that we can learn shortcuts. I have a shortcut to launch specific Mac apps.

When you think about it, you use, say, 15–20 Mac apps every day, right? You use Xcode, you use Simulator, you use Spotify and so on. You can set up a shortcut for each of these using various tools. You can do it in Alfred app, you can do it in BetterTouchTool, or there are probably other apps also, and then you can switch instantly between the apps. It’s a ton faster than Spotlight, of course, but also it’s a lot faster than using Command-Tab. I wrote a blog post about this, on how to set it up. It takes a few days to get used to it, but it really changes the way you work on your Mac, and I’m always surprised that not more people make use of it.

I recently started using a new tool for Google Chrome, but it’s also for Safari, called Vimium that also make use of shortcuts. The app allows you to control any website using keyboard shortcuts, and it allows you to navigate without using a mouse. I just started using it. So far it’s been working well. I believe that the longer you use it, the more important it becomes for your workflow.

Another tip is to practice inbox zero. I make heavy use of this concept in which I work through emails in my inbox. It means that every time I’m at my desk, no matter if it’s at home or work, I open the inbox and see if there’s anything new coming in that I need to look at. And, then, whenever there is some fallout work that I have to do, I move it to a TODO; I use Trello.

Keeping track of your TODOs and ideas is important. One thing that changed the way I work and live day to day is an open-source app I published called MajorKey. It’s an iPhone app on my home screen. When I launch it, a big text field and a big text box appear. The keyboard is already there, and I just type down whatever thoughts I have. So let’s say you are walking on the street and you’re like, “Oh, wait! I can build this or I can solve it like this,” or, “Oh, when I’m back at home I need to do this thing!” You just write it down, you tap the MajorKey button, and it sends an email to your inbox to remind you of the thought later.

It’s so simple and so useful; so often when I’m walking around, talking with a friend or I’m at a meeting, I want to write something down that’s really important but I don’t want to keep it in my head. I want to write it down so that I can forget it for now and then do it at work later on. The app is available on GitHub also at GitHub.com/KrauseFx/MajorKey. It’s not in the App Store yet. I might publish it at some point, but, for now, you have to compile it yourself. I also wrote the same for Mac as an Alfred extension—Alfred is the alternative to Spotlight.

What would you recommend to prospective developers who have no experience with open source to get started with it? How should they start contributing? What should be their first attempt?

That is exactly the title of a blog post I wrote: “How to Get Started Contributing to Open Source Projects.” The most important thing is to just submit for requests; that can be as simple as recommendations for changes. I always appreciate it when people submit core requests to improve or fix a recommendation. Even if it’s just fixing grammar or spelling mistakes, that’s all great because we need that, right? That is, of course, the best way to get started.

You can also subscribe to a GitHub repo, and that will give you a sense of what kind of discussions are currently happening—what are the maintainers thinking about? When building something, make sure to check with the maintainers—the owners of the project—because if it doesn’t align with their vision, they might not accept it. And, finally, always start small, don’t think about the crazy new feature you can build; maybe fix a bug or improve a recommendation, or build a nice little feature.

As developers work on their projects, it seems security and privacy are an important thing to consider. You’ve done a lot of research on privacy issues in the world of iOS and Macintosh. Do you believe security is an important field for the average company to consider?

Of course, security and privacy are expected, and it’s a big investment for companies, especially startups, to spend money and time on it. It’s tricky for a small company to justify spending a lot of time and money on security, but it’s necessary—it’s very necessary. I do believe that GDPR is kind of tricky. GDPR is great in that it exists. I think that some engineers might not agree because they got hit by it pretty hard and they have to buckle up now to comply with it. But many of the rules themselves make sense, and it’s good that there’s some movement there. The problem is that it is easier for big companies like Facebook and Apple to follow the rules because they have the resources to do it. For startups, it’s a little more difficult. But, on the other hand, if they cannot comply with the rules, do you, as a user, actually want to use those products if they don’t have the right backups and security systems in place?

What security tips could you offer to developers? Particularly, mobile developers?

Third-party SDKs are important. Every dependency you add to your app adds risk because it runs in your app. The trickiest piece is that every SDK that you bundle in your app runs in the same permission scope as your app, which means that, if the app has access to the location data or photos, every SDK also has permission to those. This is something that can be abused very easily. Be very careful of all code that you include in your app, especially if it’s binary post source, because there’s no way for you, as a developer to verify the integrity of the SDK.

The second piece is your actual Mac. If your Mac becomes compromised in some way, and if it’s a good hack, there is almost no way for you to find out. Then, you’re in serious trouble because hackers can access your API keys and your build secrets. They can access your source codes and so on. Just don’t trust any Mac apps on your Mac. The MacOS X is very new and not very stable yet. It’s going in the right direction, but it’ll take a few more years until that MacOS X is usable. Every Mac app, even if it’s sandboxed, has access to your whole screen at any time on your Mac, even if the app runs in the background—without permission dialog.

“Let’s say you have an idea for an app that you want to build. I would recommend you start building it and then learn along the way in the process of building the app.”

As a very senior developer that has gone through many stages, what other advice could you give to people who are starting in coding today?

I would tell them that there are so many good, free resources out there. Stanford University offers iTunes iOS development classes. MIT publishes a bunch of sessions. I recommend to everybody to make use of those. And, at the same time, I believe that learning is one thing, but, more importantly, you must use those skills for something. Some people constantly learn and learn, reading and reading books, but they never actually build, say, an app; they just learn. I think that it is really important that you build something.

Let’s say you have an idea for an app that you want to build. I would recommend you start building it and then learn along the way in the process of building the app. I think that’s cool, and then you also have something to show once it’s ready! Having something to show, even if it’s just this small sample app that you build and publish in app stores, is already very useful. It didn’t take me long to build MajorKey, but that’s already something that I could have shown if I were interviewing at a job.

Another thing I always talk about, of course, is the contribution to open-source projects. Let’s say you apply for a job you want—it’s a really cool job and you can imagine that a lot of people applied for that role. But let’s say that you contributed to a project like CocoaPods, that forced you to learn about the spheres. You contributed to this improvement and that makes you stand out, right? Those things are always good, and it shows that you not only know about systems, like CocoaPods, but you know how to work on an existing code base, existing project, understand how it works, and work on a solution. Collaborating in open-source projects is great, and you get to work with some cool people who help you get that pull request merged.

Felix’s Recommendations

  • How to Pick a Career (That Actually Fits You) | Tim Urban
  • Travel Is No Cure for the Mind | Lawrence Yeo
  • Your Life in Weeks | Tim Urban