Val Polouchkine is a recovering C# developer, currently working for Twitter as a Developer Advocate. His focus lies on supporting Twitter's mobile toolsets: Fabric and fastlane. Before this, he was a Customer Success Engineer at Xamarin, where he helped dozens of companies with their first foray into mobile. He aims to spread good information about developing 5-star mobile apps.
Who are you and what do you do?
My name is Val Polouchkine and I work as a Developer Advocate at Twitter. As a Developer Advocate, I write code, speak at conferences, organize events, help with developer support, and maintain our documentation. I focus on our two toolsets for iOS and Android developers: Fabric and fastlane.
Fabric helps mobile developers build the best apps. It provides SDKs (or kits in Fabric-speak) that address common challenges like crash reporting, real-time analytics, user authentication, and many others. We dogfood a lot of the kits in our own apps, like Periscope.
Fastlane is a workflow automation suite that saves time during the testing, building, and shipping stages of app development. Tasks like generation of ipa/apk files and management of signing certificates and provisioning profiles can be easily automated using fastlane. It also fits nicely in a continuous integration cycle.
Prior to joining Twitter, I worked in Customer Success Engineering at Xamarin, a recent Microsoft acquisition. Before that, I worked as a software developer, mainly in web and mobile.
What is your preferred dev environment (OS, language, editor, etc.)?
It really depends on what kind of software I’m writing. I write quite a bit of Swift and Ruby these days, so for Swift there’s not much choice aside from Xcode (yes, I’ve tried AppCode). For Ruby, I recently switched to Atom, an open source editor developed by GitHub. I do all my development on OS X and run zsh as my shell.
What is it you like about that environment?
I have a love-hate relationship with Xcode; some features are very well designed, while others leave a lot to be desired.
Atom is an extensible text editor based on Electron, a framework for making desktop apps. It has a vibrant community, so there are tons of packages that make developers’ lives easier. I find the linter package invaluable. Another interesting project based on Electron is Visual Studio Code from Microsoft.
zsh is an alternative to bash which ships with OS X by default. zsh comes standard with some nifty features like text completion. There is also the oh-my-zsh project that provides numerous plugins and themes to customize this shell further.
What did you use before, and what got you to switch?
I’ve wrote quite a bit of C# throughout the years, so I will always have a soft spot for Visual Studio. However, it’s rather bulky for Ruby development, so I prefer to use something more lightweight. I’ve also used Xamarin Studio for iOS development, but switched to Xcode when I started writing more Swift.
What is one thing you think a new developer should know?
Harness the power of the open source community. I’m a big fan of the Libraries.io project that aggregates open source projects across different languages and technologies. Taking this one step further, try and get involved in projects that you use in your code base. According to the article, “What is the Truck Factor of Popular GitHub Applications? A First Assessment”, over half of 133 popular GitHub projects rely on just one or two developers. File bugs, submit pull requests, improve documentation – get involved.
What is your coding pet peeve?
My coding pet peeve has got to be missing documentation. I’m guilty of this myself, as I sometimes have trouble understanding the code I wrote some months ago. Documenting code via comments and readme files is a massive help for anyone (even yourself) who will need to maintain the code base down the road.
What new tools, languages or frameworks interest you?
I’ve been playing with Go recently. Go is an open source language developed at Google that is designed for systems programming. I find it quite elegant, even with some notable and oft-discussed omissions like generics. If you want to give it a whirl, I recommend “The Go Programming Language” book by Donovan and Kernighan. And if you want to write something against the Twitter API, take a look at the go-twitter library.
On the Swift side of things, I’m following the development of the Swift Package Manager very closely.
You've worked on developer tools for a while (Xamarin, Fabric, fastlane) - what do you think makes a good tool, and what's something you personally find really useful of the tools you're working on?
I appreciate when tooling can be used by both beginner and more advanced users. For example, on iOS, Fabric kits are installed and managed via a separate Mac app. It’s extremely easy to setup and use. However, some users prefer to be more hands-on in terms of their code dependencies management. As such, we provide a way to onboard new kits using CocoaPods. This way, users have options on how to use the toolset that best fits their workflow.