Joe Cheng is the Chief Technology Officer at RStudio. Joe was the original creator of Shiny, and leads the team responsible for Shiny and Shiny Server.
After studying a BS in Management – Information Technology, Cheng worked as a software engineer for several years before joining Microsoft where he later became Senior Development Lead. In 2009, he was invited by R. J. Allaire to join his team at RStudio in 2009 where he was promoted to Chief Technology Officer in 2015.
Alison Oliver talks to Joe Cheng about the beginnings of his career, working with Allaire, what led to the creation of Shiny, arriving at his tenth anniversary with RStudio, his continued work today and recommendations for those starting a career in data science.
1. You studied for a BSc in Information Technology at MIT. What was it that introduced you to computer science as a discipline and what was it that led you to pursue it as a career?
It’s interesting that you say that, because that major is the opposite of computer science! It actually is a major in the business school, and I grew up around computers because my father worked for IBM and by the time I was a teenager, he was a a Chief Information Officer. I had started working professionally doing helpdesk support and things like that before it was legal for me to be paid, so I was 12 years old, believe it or not. So I was always around computers and I loved them. What I didn’t like about computer science, at least what I knew of it at the time, was that it seemed like there was just a lot of theory and not a lot of playing with computers! At MIT, there was a lot of math and at least what I perceived then to be not a lot of programming. In the business school, the discussions resolved around scenarios, for example, you have a billion-dollar IT budget and these projects: how do you prioritize, how do you manage, how do you allocate resources?
It’s been so many years, but I think I missed out on the chance to have a world-class computer science education because I did not realize until I graduated that it wasn’t computers that I loved so much as programming.
I went to MIT for four years and took one computer science course on probability—it wasn’t even relating to programming—but I spent the entire four years working outside of school at different start-ups in the Boston area. I learned to program while attending MIT but having nothing to do with MIT. It was 1996-2000, so the dotcom heyday, and it was a fascinating place to be. I did end up learning a lot, just not a lot of it was in school.
2. You followed this with internships at Allaire Corp, Andersen Consulting before becoming a software engineer for four years. When you look back on those early experiences, what were the main learning curves?
Working at Allaire changed my life. It changed my career. J.J. Allaire was the founder—he and his brother started Allaire Corp—and on and off I’ve been working with him ever since. Working for the people that I met at Allaire —the way they work, the way they treated each other, the culture —I didn’t even realize how amazing it was until I left and worked at a number of other companies. Fortunately, I had the opportunity to join back up with J.J.’s next start-up. I just realized just how much I love working at start-ups and how important it was (this is what I tell young people today) if you’re going to work for a start-up, especially an early stage one, the most important thing is: is the founder someone whose values align with yours, and are they someone that you can trust?
J.J. is the most trustworthy guy that I know, and he has always treated me with nothing but the best intentions. He operates his businesses in a way that represent values that really resonate with me. It’s been an incredible career that I’ve had, and so much of it is thanks to working with J.J. and that all started with that internship at Allaire Corporation.
3. You then moved to Microsoft as a Senior Software Development Engineer, and later Lead. How did this move come about?
The company that I was working for that J.J. started was called Onfolio. That company was acquired by Microsoft in 2006 and to be honest, I didn’t really go by choice. It was a small company, so it was really important that everybody go in order for the acquisition to be a successful one. Although I do still believe I’m a start-up person at heart, I did learn so much working at Microsoft in a lot of unexpected ways. I really grew to appreciate the challenges of working at a really large company. I did have a lot of challenges adjusting to the culture, but I do look back fondly at my time there.
4. How did your idea for Shiny come about?
Number one, when we were first getting started with the RStudio IDE, our first project was not intended to be a desktop app; it was only intended to be a web browser. That was the vision and was what attracted me to RStudio. Obviously, I wanted to work with J.J. again, but what an interesting challenge that was – to build a full IDE in a web browser.
When we started reaching out to the very first prospective beta testers, our pitch went something like “We are bringing R and the web together”. Danny Kaplan was a professor at Macalester College and when he heard us give this pitch, he thought, “Oh great, what you’re going to let me do is build little web applications using nothing but R. That’s exactly what I’ve been hoping to do.” When we heard that, I thought that’s not at all what we’re doing, but that is really interesting. J.J. and I had a quick conversation about it, and I remember telling him to not do it until we can do it well.
Then around 2011-2012, there was this revolution happening in the Javascript world called reactive programming. I’d been doing UI programming for a decade by that point, and I’d never seen anything like this. In particular, I couldn’t stop thinking about the Meteor JavaScript framework—how did they let you build such dynamic user interfaces without having to write all the kind of boilerplate code that I was used to? I got on a plane after some conference and I said to myself, “By the time I get off this plane, I’m going to understand how this works.” So I downloaded the source code, and sure enough, halfway through the flight I got deep enough into the source code that there was just this one fifty-line JavaScript file called depth.js and it was so eye-opening how this worked.
Fast forward to the summer of 2012 at the useR! conference that year, on the last morning I woke up and the first thought in my head was almost everything that was the first version of Shiny. It was the first thought I had when I opened my eyes: this reactive stuff happening on the server, front end that was mostly the simple HTML that used JavaScript to bind things, and I was so excited, I went to tell J.J. and I sketched out on a notepad, “Look we could do this!” and he said, “Drop everything. That’s what you’re working on from now on.” It’s been almost exactly seven years now and I’m still working on it.
5. Looking back, were you pleased with how Shiny was developed prior to launch? Were there any particular challenges?
That was one of the most productive times of my life. I look back now and what J.J. and I were able to accomplish in such a short period of time is staggering to me now. I look back and things that I remember taking months. I looked at the commit logs just the other day, and I think it was 24 or 48 hours? It was really quick. We faced a deadline. I thought of the idea sometime in June and we wanted to present it sometime in August, so I needed to get it working enough to get a working Shiny app. I will say, we wanted so badly to get it out that there were some corners that we cut that we had to go back and fix. Probably the biggest one was that R did not have a production-ready web server for us to build on top of, and when we realized how much we had built was not ready for production, I had to scramble and build what became the httpuv package, which has turned out to be a great thing for R. I look back at that period really fondly and almost all of the bets that we made paid off, and the ones that didn’t we were able to correct pretty quickly.
6. Which element of Shiny that you created are you most proud of? In turn, which do you wish looking back, you could have changed?
For me, it always kind of comes back to reactive programming. That means different things to different people, but I very consciously designed/selectively stole ideas in order to tailor this system to be particularly good for what I thought R users would like. I really have been pleased and amazed at how solid that model has ended up being, so reactivity for sure is the thing I’m most excited about.
The hardest thing I think when we’re designing these kinds of packages, that we want lots of people to use, is picking names. Picking function and object names is very difficult, and there are a lot of those that I wish I could go back and change. Whilst I think that the semantics around reactivity were all spot-on, I should have just picked names that were more intuitive. It sounds like a small thing, but it’s not a trivial regret. People interact with those things all day when they’re using Shiny, and I do wish I could go back and change them, but you know, it is what it is.
For me, it always kind of comes back to reactive programming. That means different things to different people, but I very consciously designed/selectively stole ideas in order to tailor this system to be particularly good for what I thought R users would like. I really have been pleased and amazed at how solid that model has ended up being, so reactivity for sure is the thing I’m most excited about.
7. How has the use of Shiny, R and other statistical software evolved over your working career so far, for example, looking back to what were you using at Allaire Corp and Microsoft, how has the usage and attitudes changed throughout the community?
Personally speaking, during the years before I joined RStudio, I had nothing to do with R or any statistical software; I was a pure software engineer. I did web stuff, back end transactional processing and native client UI development. I had nothing to do with statistics.
Picking function and object names is very difficult, and there are a lot of those that I wish I could go back and change.In those days, almost 100% of the R users that I’d meet at conference would say something to the effect of, “I use R, but I’m not any kind of expert.” Everybody was apologizing and seemed to be walking around with this imposter syndrome, because it felt like they were stepping into this programming world. I constantly heard this apologetic tone about, “Well, I wouldn’t call myself a programmer, but here’s the 20,000-line package I wrote.” You are programming! What are you talking about?
I think as time has gone on and we have seen this community really grow and solidify, there’s now this welcoming nature in the community, and it feels to me like a very affirming community that people feel more comfortable saying this is the work I do. I think that’s justified, because the kinds of things that people do today, like source control is almost a given. That was not the case in 2009. Today I feel like there is just this broad body of knowledge that is accessible to everyone and people don’t have to apologize for being what they are and doing what they do.
8. You are now approaching your tenth anniversary with RStudio. Congrats! What do you love about working there? What’s kept you there?
I wouldn’t have thought I’d be here after 10 years. The longest I was anywhere before that was Microsoft, which was three-and-a-half years. I really think that there is something special not just in what we do but how we do it. As I’ve become older, and as I’ve spent more time at the company and the company’s grown, how we do things and how we treat each other and how we treat our customers has become more important to me than the things that I used to care about. What technologies do I get to work with? How smart are my co-workers and what lessons can I learn about technical stuff? I see now that there are so many different companies that started for so many different reasons. There are different incentives, different goals, different values, and I really love the culture that we’ve built. I really think that we put the health and wellbeing of our employees first. We have this incredible transparency with our customers, and even the way that we treat our competitors I hope is in a respectful and collegial kind of way, and that’s just such a contrast to the more Silicon-Valley-style cutthroat competition that I’m used to.
That’s not to judge people in those companies. I can understand why they operate that way. But with RStudio, we’ve managed to build this beautiful little company that again, I think because of the values of our founder, it feels like such a rare thing, and that’s really what’s kept me there.
9. What led you to working at RStudio originally?
I always knew that I would want to work with J.J. again. He was not at Microsoft, even though we moved there together. It took him a while to think of what he wanted to do next. Once he discovered R, it all went pretty quickly.
I did appreciate a lot of things about my time at Microsoft, but one thing that was difficult about working at Microsoft in those days for me was that they preferred that their programmers focus on the technical stuff — let somebody else decide what customers want -— and I felt like that was really limiting. For me, one of the key values you can have as a developer is empathy for the customer or the user. The way things were structured at Microsoft, it was almost designed to shield developers from needing to have empathy for anyone and it ended up being a frustrating environment for me to work in.
So, at RStudio I had the opportunity to be my full self again and to not be put in a particular silo of skills. I could design features, I could talk to customers, I could support them. And to me, getting to play all of those roles was really important to me. RStudio has given me so much more than that, but that was what led me there in the first place.
10. What do you think it is that has led to the surge of interest in corporations using RStudio, for example, your impressive clientele include Honda, eBay and NASA. How is RStudio helping to address their needs?
It really depends on the customer. There’s a huge gamut of uses for R and for RStudio products because what we do is so general, in a way. The only common denominator is that people have data and they want to do something with it. We have some people that are asking a lot of exploratory questions of their data, and they have data scientists that are doing sort of hard-core data manipulation every day—they’re running experiments and trying to figure out the results, answering bespoke questions every day. On totally the other side we have people who want to use Shiny as a more powerful tableau. They’re just looking for a business intelligence dashboard, and their team wants to use Shiny to do it.
So it really depends. I think that is what’s great about being able to work on tools for programmers. We don’t tell people what these tools are for; they can decide for themselves, and the variety of things they do on top of our stuff, it’s really kind of mind-blowing. I’m constantly surprised by what people are doing.
11. Who are the people who have been influential in your career?
There are so many people. I think for sure J.J. is the number one. In a way, we are very different people in terms of how our brains work. There are things that he sees that I have no idea how he sees but he can see the potential. I don’t know how he comes up with these sorts of visionary ideas about what we should be working on. But I have learned so much from him in terms of his values and his humility and just the way he carries himself.
Charles Teague, who was very close with J.J. and I think he was the first employee of Allaire. He was my first boss as a programmer. He taught me so much about being a professional software engineer and not just about coding, but how to turn coding talent into actually being effective at shipping software.
Finally, Sam Haradhvala. He is, to this day, the most inspiringly wise software/computer scientist programmer I’ve ever met. I only worked with him for six months, but it changed the way I think about programming.
Copyright: Image appears courtesy of Joe Cheng