At Box, we are very proud to say that our developers are some of the best and brightest in the business. We strongly believe that every engineer has a unique perspective that they bring to their work, and it's this diversity and creativity that make our teams so successful. This is the idea behind Inside Eng, a regular segment where we sit down with software engineers to pick their brains on their experiences, the projects they've worked on, and their life outside of work.
As problem solvers, developers are in their element when they are free to apply their ingenuity to a complex task. However, as any developer knows, software engineering often involves a lot of tedious, time-consuming work that can interfere with a developer's process. As an engineering organization scales, quality and speed can sometimes seem to be in opposition; for example, testing is essential to maintain code quality, but can slow the development process down and impede an engineer's creative momentum. This is where Box’s productivity engineers come into play. These engineers are responsible for removing barriers that hold developers back, as well as actively building and supporting new tools that save devs time while maintaining code quality. I recently sat down with TJ Lee, who works on the Productivity Engineering team, to learn how he's helping Box developers do what they do best - write great code.
Karna Warrior: Tell me a little bit about how you got interested in software development. Was there something you built early on that you were really proud of, or a particular project that got you excited about programming?
TJ Lee: This is actually a little embarrassing, but everything I've done up to my professional career I've not been very proud of. [Laughs]. I always felt rushed just trying to get the project to do what it's supposed to do, so I'm not going to lie, I can't think of a single moment where I knew... Like, a lot of people have these stories or they talk about these moments when they were like, "Oh my god, that's so cool, I know I want to be an engineer now!" I didn't actually have one of those, it was a very gradual progression for me.
KW: Why do you think that is? Was it a matter of context, like you were just always working for deadlines in class or something like that?
TJ: Yeah. I'm not one of those people who grew up being asked what I wanted to do in the future. For me everything was just a matter of, you know, getting good grades and finding success that way, and I approached software development the same way. [Laughs]. It's kind of sad.
KW: Not at all! I think most people would really identify with that; I know that was definitely my mindset until I entered the workforce. Besides, that kind of results-oriented attitude seems perfect for your role here as a productivity engineer.
TJ: I think what really made me interested in this field was the company I worked for before Box, the only job I had before this one. The company was was entirely product-based, so engineering projects like cleaning up tech debt were not always prioritized. The code quality got so bad that it was really hard for us to write anything without being afraid of releasing it, because so many things could go wrong. I love programming, but when you run into roadblocks like that, you can't really do your best work. I came out of that job wanting to solve that problem.
KW: That's actually a really great transition to get into your job here in a little more detail. I think most people don't really think about productivity engineers, but they are a really critical component of any successful engineering organization. Can you tell us a little bit about how you're making developers' lives easier?
TJ: To put it in a couple sentences, there's a lot of work and automation that goes into building and releasing software beyond writing the software itself, and so much of it people take for granted. Like, when people think of Box they think of the Box product, but there's a lot of infrastructure involved in order to actually deploy the code, and give developers confidence in the code they write. We provide a platform for people to test their code and make sure that their code is in good shape, and to automate these systems such that you don't need QA engineers working manually around the clock to keep code quality up to par.
KW: What would you say are some of the major barriers that hold back productivity in an engineering organization?
TJ: I think that there's a lot of really basic things that can get overlooked. For example, being able to know what the status of your build is -- when developers want to merge code, they want to make sure that it passes all the builds. Right now, viewing the status of the builds, parsing the build results, getting notifications for it, all of that is kind of pieced together a little haphazardly. That's a really basic feature that we want make sure we get nailed down so that engineers don't have to do a bunch of busy work to get the information they need.
KW: At Box we have a big culture of open-sourcing some of the productivity tools that we build internally, has your team open sourced any of the tools you've built?
TJ: Oh yeah, for sure. I think the most popular thing that our team has open-sourced is called ClusterRunner, a tool that's designed to speed up the testing process. If you run tests by calling shell commands, ClusterRunner can likely execute those same tests faster, safer, and more efficiently. So far it's been really successful internally and we're definitely encouraging adoption by other organizations.
KW: Shifting gears a bit, what are some of your interests outside of work? How do you decompress?
TJ: I play video games and lift weights, pretty much just to have an reason to hang out with friends. I have a group of friends I see twice a week at the gym and a group of friends that I play games with. I'm pretty sure that if we didn't have something like that to do as a group, we'd never see each other. I'd be like, "Hey, you want to hang out?" and they'd be like, "Why?"
KW: [Laughing] Yeah, I can totally relate to that. What games do you play?
TJ: I used to play Starcraft pretty competitively, but now I play this game called Heroes of the Storm, which is like DotA (Defense of the Ancients) or LoL (League of Legends), but it's a lot more relaxed.
KW: Do you see any connection between the stuff you do for fun and your work?
TJ: [Laughs] Absolutely not. Well... I guess the thing about lifting weights that I like is -- I mean, I'm not an athlete or anything, so there's not really a reason for me to lift weights; I'm not in bad shape health-wise or anything like that -- it's just the idea that you're making yourself better. It's like when you're playing an RPG, one of the joys is seeing your character level up. It's just that idea of self improvement that makes it fun.
Are you interested in joining the Box Engineering Team? Check out our jobs page, and look out for the next installment of Inside Eng, coming soon!