Skip to content

Ram N

Facebook

He works for Facebook on React Native. He loves working with developer tools and frameworks. Before Facebook, he was at Microsoft, working on CodePush, VSCode editor for React Native and Cordova, and App Center.

Inteview image for Ram N

What led you to become a developer?

I have always been fascinated by computers from a young age. I am from a geography and era where user interfaces were text-based, yet I managed to spend countless hours playing those (now) retro DOS games. I figured that the only way I could explain my time on the computer to my parents and teachers was to pretend that I was majoring in Computer Science, and that's what I did. Lucky for me, I realized that I was also something I would like to do for a living. I started picking the courses that would lead me to a Computer Science major, and eventually my way into a small software development company.

What’s your setup and development environment?

Hardware
Dell Ultrasharp 32 inch curved monitor
Kinesis Freestyle Ergonomic keyboard
Logitech M750 Marathon mouse
Apple Magic Trackpad
Startech Dual Monitor KVM Switch
Apple Mac Pro desktop
Apple MacBook 32GB
Pixel 2
iPhone X
USB hub
Standing desk

Software
Since I work on React Native code, I have Xcode and Android Developer tools setup. I frequently switch between XCode, IntelliJ, Nuclide (Atom) while using VSCode for personal projects.

What’s your favorite stack to work with?

Since I work on React Native, most of my work is mostly front end, involving developing apps for Android and iOS. I use Flow for type checking, BUCK as a build wrapper around Gradle/XCode and Node for most other tooling. At work, GraphQL is pretty much the way to talk to the server which itself is written in PHP/Hack.

When working on personal projects, my stack also usually revolves around NodeJS with Mongo on the backend. I usually deploy on Heroku and AWS. I also like trying new things and try to pick up the flavor of the season when starting new personal projects.

What are your top 5 go-to repos?

While a lot of my code gets committed into the React Native repository, I also closely watch the changes in React, either because those changes eventually make it into React Native, or just to try out the new ideas they experiment with. Other repositories like Jest and Metro also have pieces that impact my daily work, and I do keep an eye out for issues and pull requests. To keep abreast of new proposals, I also frequent repositories like React RFCs and React Native discussions and proposals.

I have also recently started to learn Flutter and am going over the Flutter repository to understand how the system works.

What technologies are you most excited about now?

I have been working on building frameworks and libraries that let us build mobile apps using JavaScript. I started with Apache Cordova/Phonegap and eventually became a committer in the project. During my time at Microsoft, I was also pretty close to the Xamarin team and have also had interesting conversations with folks from NativeScript. I have now moved to React Native, and the trend I have seen in using a single way to write apps for multiple platforms is pretty exciting.

I am particularly excited about React Native since it is the first time in my knowledge where a "hybrid" framework can be eased into an existing, fully native app. I believe that as more apps are developed, and as frameworks like React Native and Flutter enable smooth and performant apps, software development shops across the world will want to leverage the advantages that come with learning once and writing for all platforms.

What does your ideal workflow look like, from messing around to production?

As a web developer, many features like live reload or instant updates are taken for granted. When writing mobile apps, I have still had to deal with less than ideal build times and cases where developer tools don't connect as seamlessly.

My ideal development workflow would be the ability to use a single editor for multiple languages (even if we need multiple languages) and being able to connect my favourite developer tools to those systems.

I am a big proponent of open systems and I love how Chrome made the debugger protocol like a specification, or how the format of the traces from a profiling session is well documented. These APIs/specifications let me bring in my own toolchain to connect to the system, enabling even more innovation.

What are you currently learning?

Instead of riding the hype train this time, I decided to go back to the basics. The last time I wrote C or C++ was back when I was in college, and I thought this may be a good time to brush up on that. Like Javascript, languages like C++ have also undergone a sea of changes.

I am starting to get into the new C++ world, a world with smart pointers and lambdas. I eventually want to get to Rust after I am able to rebuild my C++ foundations.

What project are you most proud of?

Back in the day, I build a project to automatically measure the performance of a web page. The project was called browser-perf and was an end to end testing tool that would run specific user scenarios to give metrics around scroll performance, frame rates, memory usage, etc. This was a port of Chrome's performance suite but turned around to test the performance of web pages instead.

Many companies working on automation web performance have picked up this project and contributed to it. If I can talk about a second project, it would be a polyfill that I wrote for IndexedDB. I was associated with the specification and was sad when I realized that it was not supported on Safari. I wrote up the polyfill that relied on the older WebSQL specification, and an active community continues to maintain the library.

What are beginner developers not learning that is critical in this day and age?

I believe that improving one's understanding of the basics always helps. While many developers look for the next big thing, I believe that with a solid foundation, it is easier to pick up newer ideas.

I also like to emphasize the balance between depth and breadth, that would help someone compare the different solutions present for their use cases.

What tech challenges are you facing at your company?

I work for Facebook on React Native, and not surprisingly, we are working on solving problems that also exist for many technology companies across the globe. To infer patterns from the interesting discussions at the company, there are conversations around server-side rendering, code reuse across web and mobile, and faster mobile apps with JavaScript.

Anything you want to promote or plug?

Not a product, but I would like to promote the idea of respecting our fellow developers, especially people who maintain open source projects. Some say that the JavaScript community loves drama, but I believe that we can learn a lot when we respect the diversity of people and idea in our community.

Interview image for Valera Zakharov
Valera Zakharov

Slack

Valera leads the mobile developer experience team at Slack. Prior to Slack, he worked at Google on the first few versions of Espresso (among other things). Valera likes cake and hummus, but not necessarily in that order.

Interview image for Minko Gechev
Minko Gechev

Google

Minko is an engineer in the Angular team at Google. He is working on compilers, tools for static code analysis, and machine learning. Minko received awards from the President of Bulgaria for his impactful open source projects.

Interview image for Burke Holland
Burke Holland

Microsoft

Burke Holland is a front-end developer living in Nashville, TN; the greatest city in the world. He works on the Azure team at Microsoft on behalf of JavaScript developers everywhere.

Be the first to read new interviews just like this one with Burke Holland. from top developers.