iOS Dev Stories: Marcelo Fabri
He is one of the best iOS developers that I know, with vast experience both working for companies as well as in the open source scene, with significant contributions for several well-known projects. Today I am going to talk with Marcelo Fabri about development, open source, projects, tools and more.
How and when did you start developing for iOS?
I started in 2010. We had to do a final project in our senior year and since I had just got my first iPhone (a 3GS), we thought about making an iOS game — without knowing anything about Objective-C. It wasn’t even called iOS at that time: we started the project when the lastest version was iPhone OS 3. The game itself was based on Trauma Center for Nintendo DS. You took the role of a doctor who needs to perform surgeries on patients. It was really fun to do it, although we never finished it and released to the App Store.
Could you share some of your experience? Projects that you contributed for, events you went, etc.
I’m a big fan of not reinventing the wheel and using open source projects to make my life easier. In the recent years, one of my main concerns is how to make teams work better and I think automation can really help in that.
So I’ve been contributing to projects related to CI and tests, such as danger (like unit tests, but for your team culture), Nimble-Snapshots (Nimble matchers for snapshot tests) and more actively to SwiftLint.
I like contributing to SwiftLint because the rules are very isolated to each other, so you can focus on a single problem at a time. I also like to contribute to these projects because they’re things that I use on a daily basis, so improving them means improving my workflow.
I also have a few repos of my own:
Staged is a library to help mocking View Controllers presentations and dismissals on Unit Tests (e.g. if you want to know if a View Controller was presented when a method was run)
xcpretty-json-formatter is a custom formatter for xcpretty to save warnings and errors to a JSON
danger-xcode_summary is a danger plugin that I created with Diogo Tridapalli to show all warnings, errors and unit tests results from
xcodebuilddirectly in a pull request.
Speaking about events, I’ve been to two WWDC editions so far (one of them with a scholarship ticket), two SwiftSummit editions, two 360|iDev editions and this year’s AltConf. I also attended and gave talks on several events in Brazil as well.
One thing that I like in these international events is that I was able to realize that we (as Brazilians) are not behind any other tech scene in terms of iOS. The only thing that maybe is different is the scale of the teams and as a consequence, the solutions they have. I can’t imagine any Brazilian company developing something like AsyncDisplayKit (now Texture), but I’m sure all companies face similar problems that we do. One concrete example is Swift compilation time or dynamic frameworks load time on iOS 9.
iOS Community is very active. How do you keep yourself in sync with everything that is happening in the community?
I use Twitter as my main source of information, but I also highly recommend iOS Dev Weekly. Other than that, I think the important thing is to always be curious: check WWDC videos, go through release notes and changelogs when a new iOS version is released, etc.
Whats tools do you usually use to get the job done?
Twitter to keep informed
Xcode to work on iOS and mac OS projects, Chocolate and TextMate for general text files and VS Code for ruby.
Tower to make commits in
git, Terminal for
pulland changing branches
Oh My Zhs on my Terminal
Zeplin changed how I work with designers
Reveal is worth every cent.
Jenkins, SwiftLint, fastlane and danger as part of CI
All my repos are usually on GitHub
Safari is my main browser
You have a few posts published at raywenderlich site. Could you share how that happened?
This is really not an exciting story. Basically I emailed him one day saying that I wanted to write a post about CocoaPods (0.5.1 at that time!). He said that I could write and then the article would be reviewed. Then, if it received green light it would be published and I could join the tutorial team. They liked the article and after that I wrote a few more:
Right now you are working in Germany, right? Could you share a few of the challenges of working abroad, excitements and so forth.
Yes, I’m working on a company called Onefootball. I think the main challenge for me is the language: I speak no German at all. Luckily, the offical language in the company is English 😅.
Another challenge for me is watching my team playing: usually the games start at 02:45 in the morning from Wednesdays to Thursdays. One thing that is really fun is to have people from all over the world in the company, so you can learn more about different cultures.
Other than those, working abroad doesn’t look like very different than working in Brazil. I guess work is work no matter where you live!
What advice would you give to new developers that want to succeed in this field?
Don’t settle for “it works”. Pay attention to details. Be curious. Be critical. Try to understand and have your own opinions. Don’t blindly belive vague advice.
As always any thoughts, doubts or feedback are more than welcome. =)
Ps: If you like this post, share it on twitter, recommend it on medium, or both =). This really helps me to reach more people. Thanks a lot ..