Categories
Podcasts

Christian Cho

Christian Cho shares his experience in startups, learning from mentors, what it means to be a senior engineer, and the value of real user data.

Show Notes: https://catchingup.dev/podcasts/christian-cho/

Catching Up With Web Performance
Catching Up With Web Performance
Christian Cho
Loading
/

Links

Video

Transcript

Tanner
I can’t imagine doing this live. I have way too many pauses and ums.
Christian
Oh, yeah.
Tanner
Hello, everybody, and welcome to Catching Up With Web Performance, a podcast about stories of people in web performance. Today my special guest is Christian Cho. Christian, how’s it going?
Christian
Things are good, things are great. The heat in San Francisco is finally a little bit subsided, although now we have a smoke in the air. So you win some, you lose some.
Tanner
If it’s not one thing, it’s another.
Christian
Exactly.
Tanner
Well, hey man, I’m so glad that you could be on the show. I’m so excited to have you.
Christian
Super excited to be here, yeah.
Tanner
Let’s dive right in here, like web performance. How did you get into this world of the web? And when did performance become a thing for you?
Christian
Can I say by accident?
Tanner
Yes, 100%! How?
Christian
Yeah, I… So I’m not you know, I don’t have a CS degree. I went to bootcamp in 2016 and I have a master’s in counseling psychology. So I guess you could argue that I have that sort of human perception kind of background a little bit.
Tanner
This is fantastic, by the way, because our last episode, Ethan was a master’s in education and now he’s in engineering. So we got another master’s in something that’s not comp sci!
Christian
Yes, counseling psychology. Also from the Boston College Lynch School of Education. But yeah, you know, I went to bootcamp, got my first job, and really enjoyed frontend. I kind of knew CSS and HTML early on and I could be, I knew enough to be kind of dangerous, but I didn’t know how to make any applications or run client-side code.
Christian
And my first job was kind of just learning, you know, learning the trade, learning the tools, just becoming a better engineer, increasing my velocity. But at my second job is when somebody had created something with the Performance API. And I remember thinking, “Well, what is that? It’s called ‘performance.’ Never heard of it before.” We were actually using it at the time to listen in on events being fired by other trackers. So we were kind of snooping in on stuff that browsers were putting into the performance queue. But then I find out that it actually has nanosecond performance where you can actually go down to the nanosecond and help things, to figure out how long things are taking. And that was sort of my first foray into performance tooling.
Christian
I’ve always been a fan of, I think just better, good UIs in general. That’s what led me to frontend. I think most of the people who are in frontend really care about the perceived performance of web applications. And I was, I always used to read a lot about sort of best practices in UX and UI development.
Christian
So that was my first foray. But in terms of, I think, my formal introduction into web performance is aside from obviously when I was applying for jobs and thinking about algorithms and performance, which especially in the context of frontend, can be a little bit contrived. I don’t think your algorithms are really that important frontend, for the most part. Some with very few exceptions. But most interestingly, you know, now that I’m at a company called Karat, it was the first time that I’ve actually been able to apply some actual tooling and to sort of lead the drive into gathering metrics on performance on end users.
Tanner
Okay, so I’m gonna backtrack and let me know if I got this right. So you get your master’s in counseling psychology?
Christian
Yes.
Tanner
Go to a bootcamp. First job, increasing velocity, learning how to get comfortable with development. Second job, performance API, “What’s that?” Then keep working, keep working. And now you’re at Karat where you’re actually building out like a whole suite of performance tooling.
Christian
Yeah, it’s the first, it’s sort of the first… Well, first baby steps into tooling for web performance on the UI and in between. So I mean, I’ve lived a fairly, I guess a fairly long—it’s weird to say—I’ve lived a fairly long life, but you know I’m in my late thirties. So I’ve had jobs before in education, in higher education, actually doing student affairs. And then this is my fifth engineering job. And with every job, obviously we learn something new. And I’ve only worked on startups, so I think the pace of learning is really accelerated in startups. And so I just sort of got to, I was exposed to so many different things in frontend.
Christian
People often make fun of frontend being like, “Well, you’re only really putting borders and colors on things.” But it’s much richer than that, and much more complex. I think more than… I mean, I kind of hate saying this, but more than the backend, there’s a lot of frontend where things are not in your control. And that puts an interesting twist on things in how you think about web performance. Because on the backend, you control the server, your resources, where it’s hosted and all that stuff. But on the frontend, you’re running code on the client, on any kind of device, anywhere in the world. And so who knows…
Tanner
Any kind.
Christian
Yeah, any kind. Who knows, right? Like someone could be looking at your website on their Tesla display or…
Tanner
Yeah! Oh no, oh no! Design for cars!
Christian
Right, yeah exactly.
Tanner
So take me back here because this, I think, is a fascinating angle that I don’t get too often. You working so much in startups, and especially coming from a bootcamp, like, talk about accelerated learning here. Walk me through this a bit here. Because you go from the bootcamp, you jump in to your first job, and you’re learning. How were you learning here? You mentioned some books about UX and UI, like trying to get more… How do you learn in such a fast-paced environment?
Christian
Honestly, it’s just the matter of being thrust into those work environments. You know?
Tanner
Like I’m just here, I have to do it.
Christian
Exactly, yeah. And being one of the, again, being one of the few frontend people. So I didn’t really have a choice but to learn to do the job effectively. And I made a lot of mistakes along the way. But I that’s the best way to learn, is to make those mistakes.
Tanner
Is there a particular mistake you can remember that you learned a lot from?
Christian
Oh yeah. Oh yeah, there is.
Tanner
Let’s go.
Christian
So there was a… I don’t know if I can share too much information about this company, but basically I had to create like a… At the time, engineers were tasked to build ads one by one. It was still very early stage at the company, it was Series A, kind of still scrappy. And we were still using Trello, so you can imagine the mess of twelve engineers on a Trello board. And with every single client we signed on, engineers had to literally like run a script and deploy the ad manually. And right when I joined they said, “Your first project is to automate this.” And I was like, “This is my second engineering job. I’ve been doing this for a year and a half. I have no idea what I’m doing.” And my very naive approach was to take the Webpack configuration and deploy to a node service. So basically it was Webpack as a service.
Tanner
Naturally.
Christian
Where you were just, literally there was a giant form that you filled out, and all the values were then pushed into files that were created for some reason. And then, instead of just having a really good templating engine, it was using Webpack, we were Webpacking using renderToString(). And so React, we were using React renderToString() and there was a custom JavaScript handler that was then attached on top of that. And so that was all bundled and served up on S3 behind a CDN. But basically that’s what it was and I would have done things very differently now.
Tanner
So I’m curious, at what point did you realize this was a mistake? So far it sounds like it worked?
Christian
It worked. And please don’t do this, to anyone listening. I didn’t write any tests. Maybe I wrote one test, like one integration test and I was like, “I just want to make sure this core thing is working, but let me get this rest out there.” And it wasn’t so much that it was a major problem, but it just wasn’t a scalable solution.
Christian
But I also, I think part of me is very grateful for it because it taught me to be okay with solutions that work in the moment and that need to be changed later on. I think a lot of us have a tendency to think about the perfect, elegant solution at the cost of getting the business up and running and getting money for the business. And so that’s often the tension that I think engineers have with where the business needs to be.
Christian
And what I learned was, it seems ridiculous, but a lot of the brands had their font files or typefaces that needed to be custom. And I made the very dumb move to pull down TTF font files from Google and re-upload them on their CDN. Two problems with that: One, TTF is not a web standard. It’s not a file format you’d be serving on the web. And two, why not just use the Google imports already? They’re built-in! It would’ve probably taken a little bit of work to get the strings, but definitely serving like 200 kilobytes for mostly a mobile service was not the move that I would have made had I knew then what I know now.
Tanner
That’s so interesting because you have these moments that you look back on, it sounds like these are mistakes in reflection. Like you haven’t, there weren’t too many catastrophic moments where you said, “Oh shit!”
Christian
There were!
Tanner
“I broke everything!”
Christian
There were not any—oh, well, there was a catastrophic moment at one point with using this exact service I created, but that’s a whole other story for another time, which we could go into. It doesn’t really have to do much with web performance, it has much more to do with sort of not giving production access to your CS team. But uh… Where was I going with this? Oh yeah.
Christian
In the moment they didn’t feel like mistakes because I didn’t really know any better. Right? I just, I was working within the constraints of my knowledge. And because I didn’t have people, mentors to guide me during the process, I didn’t really know what was right outside that boundary. And I think now, being a senior engineer, I think it’s my job to make sure that I understand where the boundaries are for a lot of the more junior engineers, and to give them just enough information so they can continue learning.
Tanner
Yeah. Man, I feel like too, that’s so… This is the reality, right? Like so many of us, we only have the information that we know. Unless there’s somebody else to coach us, unless there’s some feedback system, this is what I got!
Christian
Yeah, totally. And that’s why we make, I think that’s why I made a lot of mistakes. And again, very thankfully, nothing huge, nothing catastrophic, but just sort of mistakes in design more than mistakes in the actual implementation or production problems.
Tanner
And I guess, how is this, because I have two angles I’m thinking about going here. On the one hand, I’m wondering how this has influenced your thinking and where you are now. And on the other hand, I’m curious more about the “eureka” moments. I wonder what are some of the eureka moments where you look back now and you know these are mistakes, or at least you consider them mistakes. When did you reach enlightenment, I guess?
Christian
Oh yeah. I think the first sort of foray into thinking about how what I built was a problem for a potential user was when someone showed me, and this, you know, I was playing with the developer tools in Chrome for a while. But I think to be encouraged to use the mobile view, and especially CPU and network throttling, to simulate some of the problems. That’s when I realized, “Oh yeah, serving 200 kilobytes of TTF files is probably not the best for some users.”
Tanner
Yeah. Did you have, do you have a moment where you actually, like, you remember a first time opening DevTools and looking at throttling? Did you, were you watching, I don’t know, a presentation from someone?
Christian
No, it wasn’t, it was just what we were talking about. You know, more senior people just showing me the tools. It was somebody who knew enough about the frontend to give me the information about that. I will say, at my very first job I had a lot of mentoring. And so I think that really catapulted me into the industry and really helped me establish myself. But my second, third, and… especially second and third jobs, I didn’t really have a lot of mentoring. I was sort of, again, one of the very few frontend engineers and the most senior, but not senior at all, you know what I mean? So that was, there was certainly a period of time when I was a little bit arrogant because of that and I was like, “I’m a senior engineer!” I didn’t know what that meant.
Tanner
Oh really?
Christian
But I feel like that’s a learning that a lot of people go through, right? There’s a moment where you think you’re this badass engineer, you know, there’s the peak of confidence and then you realize, “Wow, I know nothing.”
Tanner
Oh, man. Okay, so tell me that. We’re going through the seven stages of grief. When do you recall having that moment of, “Oh, I know nothing.” Because you’ve gone through this spectrum, right? On the one hand, you’ve had a whole other life in counseling and then switching over to bootcamp. Well, let me correct that. It wasn’t, was it counseling per se? Like you were helping colleges…
Christian
Yeah, it was more like I was working with college students and programming and putting on events and all that kind of stuff.
Tanner
So you go from working in higher education, go to a bootcamp, “I know nothing,” become a senior engineer, “I know all the things,” and then you hit the next trough in this sine wave. You hit, “Oh wow, I know nothing again.”
Christian
Yeah. I will say, you mentioned being a senior engineer. I thought I was senior. I think that’s the key difference. You know, I think there was so much arrogance around… Because in some weird way, because I was, there was nobody around me to teach me, mentor me, and challenge me on the things that I felt like I was an expert in. I didn’t have that feedback to sort of help me slow down, to be more tempered around things that I thought I knew. I think if I had the same mentorship I had at my first job all throughout my career, I’d be in a different stage. I wouldn’t do anything differently. I think I’m very grateful for all the experiences I had. Especially when, you know, your stock options are worth something, which is always great.
Christian
But there is that, I think, the feedback loop is super important. So I would say for people who are listening, especially if they’re looking to either break into engineering or looking for their next role, is no matter how senior you feel like you are, always look for an opportunity to be mentored and coached and challenged by people who are better than you. That’s I think so, so critical.
Christian
At my last job, there was a staff engineer who was really critical in my development into what I felt like finally is the senior level engineer that I am today, because he provided quite a lot of information for me and talked about frontend engineering beyond just the UI. And so that really helped me solidify some concepts and realizing how rich and how hard frontend is, and how web performance is literally like maybe 5%, but also a 5% that has incredible depth.
Tanner
Yeah. What are some of these other concepts? Like take me back to this moment where you’re sitting with your mentor, the staff engineer who taught you so much. What are some of the lessons that you got or some of the concepts. Paint the picture for me. Like I’m learning. What did you learn?
Christian
Oh yeah. I mean, there’s all this stuff about, you know, because when I was, I think when I was going through bootcamp, we talked about N+1 queries, like DB level, like latency issues. But then I didn’t know anything about things like CDNs or edge computing or…
Tanner
I still don’t know anything about edge computing.
Christian
Yeah, it’s just like, I think people just call it “edge computing.” I’m like, “You’re talking about global distributed software.”
Tanner
That’s like Bitcoin, right?
Christian
Yeah. It’s just a new name for something.
Tanner
It’s in the cloud!
Christian
Exactly.
Tanner
CDN. Cloud Delivery Network.
Christian
Yeah, exactly, it’s just something. But I remember just learning so much about different things about frontend. So performance is one of those things, design systems—I’m a huge design system person. I love design systems. The implementation of one is a total different ballgame than talking about it. I think it’s really challenging to get a design system implemented.
Tanner
Could we talk about it? Is it possible to speak of?
Christian
Oh yeah, absolutely. We talk about design systems in general and how, again, like design systems alone are, can be a full-time job, right? There’s so much depth to every single aspect of frontend development. So you have web performance, you have design systems, you have tooling, you have considerations around how you deal with production issues, especially with caching. There are things between development and production you have to think about. Your tech stack, do you have a uniform tech stack for frontend all across the company? How big is your company? How many engineering teams do you have? Do you need the ability to spin up projects and bootstrap software really quickly? There’s just a lot that goes into this. Yeah, it’s so much more than just, again, add a green border.
Tanner
Right. And then here we go, performance, maybe 5% of this. Tell me more about that, because I think what so, I’m so interested to hear from you is, like, you’re on the front lines here. You, you’re in an accelerated environment in these startups and, “I don’t really have time to just focus on performance.” Right?
Christian
Right, yeah.
Tanner
So tell me more about this. You’re learning, you get it, we have this whole world… What am I trying to ask here? Tell me more about the 5%, I guess.
Christian
Yeah, so…
Tanner
How do you how do you view all of this?
Christian
I think for me, I’m not a performance expert by any means. I think there are people who are really good at performance, but where I think I come in, and what I’ve been able to do is… Remember, I think 1% towards something is better than 0% of everything. And so even if you make incremental steps towards getting more data or measuring your performance, it’s going to be better than being paralyzed by the idea of performance or, even in the worst case scenario, being defensive about it. Right?
Christian
Because I think, again, looking back to when I was younger (this is like three years ago), I took a lot of things personally, you know, and especially with UI development, especially when I was at the second job that I talked about with this Webpack-as-a-service thing. I was also given the task of developing the internal dashboard and I kind of owned the whole thing. I created all the components from scratch, everything, all of it. And so, you know, sense of ownership and pride but also came with that some…
Tanner
Ego?
Christian
Some territorial, yeah, territorialism and ego and… Yeah, I mean, I’ll say it, I was kind of an asshole and I wish I wasn’t, you know, but I learned a lot from making those mistakes.
Christian
But when it came to, again, the idea of performance, and the 5% is still very big, do something that you know that’s within your bounds. I think for me, I’m a voracious, I’m not, I don’t read books, I love blog articles, I love technical articles and technical blogs. Videos are really, really powerful for me. That’s the best way to learn. But there’s no better way to apply that until you do it, right? You’re not going to internalize all that data, or internalize what it means, until you’re actually doing it yourself.
Christian
And so one thing that I knew going into… So a little background story is we’re doing work right now on Karat of modernizing our tech stack a little bit, so bringing React and GraphQL and all this, a few things into the production. But what happened was, before I got there, I know we tried to implement something for internal users and they immediately started saying how slow things were.
Tanner
Interesting.
Christian
So when I joined right around that time I said, “Well, okay, let’s get some data.” How do we get data and not listen to the five people who are complaining? Because even if five people are complaining and people say, “Well, they’re just complainers. They’re the squeaky wheel.” I’m like, “Well, there’s probably a lot more people who are not saying what they’re thinking.” And so to put numbers to that, we implemented Datadog RUM (Real User Monitoring) to start getting information about how long is it really taking for someone to start interacting with the page, or for the whole page to load.
Christian
And to think about sort of how React was done, and I’m really grateful in the last few years that we’re moving back towards server-side rendering. But you know, I think when React started really hitting its prime time and a lot of people were learning React and using Create React App, which is a great tool, but one of the challenges of it is when you first run it, it’s all client-side rendered. The JavaScript has to execute, it has to then get your data, and then render on the page. And when you’re talking about real life data, and real life users distributed globally… Imagine if all your data centers are U.S.-based and we’re, I think we’re certainly guilty of this in the U.S., of being sort of U.S.-centric and thinking that we’re the, we’re not, we don’t actively think we’re the only people in the world, but we sort of forget that there are people around the world who have different resources, different infrastructure and all that stuff.
Tanner
Yeah.
Christian
And if all your data centers are in the U.S. and most people have broadband, but then people are trying to access your data from around the world on a phone, if you’re not serving up the markup immediately, what you’re doing is you’re, in a client-rendered world, you’re serving up the markup like the outer as a wrapper, right, the wrapping HTML, then you’re serving up the JavaScript, which is an additional fetch that the browser needs to make, or the device needs to make, and then it has to execute. So there’s a third round trip to get the data.
Tanner
That’s a lot.
Christian
Exactly, it’s a lot. And frameworks like Rails gets a lot of shit nowadays, but Rails did something really nicely, which was it got data and it served the markup all in one trip. And so I think we’re, you know, I think we’re in a world now where we’re getting the best of both worlds in terms of server-side rendering with some client-side code. And how do you, you know, this idea of software streaming is now big in the JavaScript sort of Jamstack world.
Christian
But for the user who’s on the other side of the world, they’re not, they don’t care what your tech stack is really. They care how slow something is! So when there are changes made where what took 1.5 seconds before for them is now taking 6–7 seconds because of this triple round time… it’s not good. Right? And you don’t really know the impact of that until you have the numbers in front of you.
Christian
The one thing that really stuck out to me at least when we implemented real user monitoring, is the P75… For your listeners who don’t know what a P75 is, it basically means if you order all your requests, for example, all your requests for a page from fastest to slowest on a histogram. What is the 75th percentile? That’s the P75. That’s like a really rough estimate of how performant your pages are.
Tanner
So it’s like 75% of those people.
Christian
Right, and so your P75, 4 seconds would mean 75% of all your requests fall under 4 seconds. And 4 seconds is like right on that edge of being not good.
Tanner
Tolerable?
Christian
Right.
Tanner
“I’m out of here!”
Christian
Yeah, exactly.
Tanner
“I can’t take it anymore!”
Christian
Yeah, and think about it this way. I think for the most part, especially SaaS companies, B2B companies, we’re guilty a little bit of the fact that our users kind of have to use our software. But if you’re talking about an e-commerce site, or you’re talking about a blog, where those critical seconds really matter for whether someone stays on the page or out of frustration they leave, you’re potentially losing out on, depending on the scale of your business, millions if not billions of dollars.
Tanner
Yeah. So your application, you have this moment, you’re working and then, “Hey, people keep complaining that this is slow,” or, “We had five people complain. Nah, they’re just complainers.” And you say, “No, no, no. Let me look into this more. Let’s get some data.” You implement a RUM solution, you get Datadog on there, and data starts flowing in. What did you see?
Christian
Yeah, we saw… Well, back to that point, I think other people were concerned about the five people who were complaining. People said, “We should’ve got more data. We should fix this.” But I think in order for, in order to make a generalizable solution, I think that’s the key thing, is you want to listen to the people who are complaining, obviously, and a lot of people at Karat did. They were all totally valid. But I think what was missing is, “How do we come up with the generalized solution that can solve this problem?”
Tanner
Yeah. And maybe, paint the picture for me a little too. Like, what are these people doing that it’s frustrating that they’re waiting so long? I’ve got a picture of a person with a phone in my hand right now and they go to Karat something, but what are they actually trying to do?
Christian
They’re sort of internal users, so they’re actually people who are hired by Karat to conduct interviews.
Tanner
Okay. So interviewers, people using Karat, interviewers around the world using Karat to interview people.
Christian
Right. They have their workflows, they have to get paid, they have to do certain things on our dashboard. Though, their interview experience itself is actually separate. So this is, all their workflow is around the administrative tasks they have to do. And that can be frustrating, right? When they’re like, imagine an interview engineer about to conduct an interview at, let’s say, noon on whatever day.
Christian
It’s 11:55 and they’re like, “Oh crap, I have to get on the dashboard.” In those few minutes they’re spending 10 seconds of it waiting for data to load onto a page. That’s not a great experience.
Tanner
No, that’s stressful, especially with only a couple of minutes to go.
Christian
Right. And we want to make them happier. We want to have them spend less time doing the admin stuff so they can focus on giving good interviews, which is what we do. Which, a big reason I went to Karat was actually a lot of those interviews right now we’re providing to black engineers because we’re trying to double the number of black engineers in the country within ten years.
Tanner
Yeah.
Christian
That’s like the primary reason I’m at Karat, and so those things are really important, and we do have a social mission. So those critical few seconds may not seem like much, but in the overall context of what we’re trying to do… Imagine, I mean like, I don’t, I can’t imagine this actually having happened, but I can hypothetically think about a similar situation where an interview engineer is so frustrated with their experience using our dashboard that their ability to give the interview to a potential candidate is affected.
Tanner
Yeah, yeah. I mean, there’s all those little factors that play in and influence how you talk to people, right?
Christian
Right.
Tanner
So here we are. We get the data, we’ve got the back story, I can see what’s happening now, I can feel like I’m an interviewer. There have been a couple of complaints. We know we need to fix that. We want to get a generalizable solution, though. And now we’ve got data coming in. What did you learn? Did you, was there a flash of inspiration? Where you said, “Ah! I know exactly what to fix now!”
Christian
Well, there were a few things. One thing is there were fixes that we could implement without that data, right? We knew immediately that we wanted to batch some of our queries, that we wanted to not have five loading spinners, you know, that those are just all sort of anti-patterns in UI in general. But what the data did tell us that we weren’t really thinking about is that because we have interview engineers all around the world, we offer 24/7 options for scheduling your interviews. People, there were people who are globally distributed whose experience was really, really, really marred by our not paying attention to that.
Tanner
Yeah.
Christian
And what we also found was really interesting is that depending on the country they’re in, the ratio of people on their phones to desktop is very different from what you would see in the U.S.
Tanner
Like what?
Christian
In the U.S. you’re looking at probably, like, maybe 20% of users are on their phones, which is, I think was still high for administrative workflow and dashboards that are not made for phone at all, but they’re still doing it anyway.
Tanner
Right.
Christian
But in some countries we’re looking at 30–40% of users on their phones.
Tanner
That’s like double.
Christian
Exactly. Which is really significant, right? And so that started to give us more information about, “Well, are we building for the right, are we building things the right way for these users?” I think the answer is no. But now it’s like, “What do we do about it?” And I think without that data, without that information, we…
Tanner
Would have been completely blind.
Christian
Exactly. And I think that’s part of, you know, there’s a great book, the Staff Engineer book, I think by Will Larson. I think there’s a section in there talking about tech debt and some of the—and this is not just tech debt, I think this is also if you think about the debt that you accrue as bad user experiences. It’s the engineer’s fault. It really is.
Tanner
Yeah.
Christian
Because no one else is going to put the tooling around capturing information unless engineers do it. And so I think when engineers make all the right intent, all the right intentions to pick the tech stack, to do all those things. But I think, especially being senior, the thing that I think for me was the paradigm shift for me entering into this, like, what we call senior, what I, how I feel as senior, is that I saw it as less about the experience for me as a developer and way more about picking the right tool at the right time with the right constraints for the user. Right? And if we had, let’s say, that monitoring and web performance information way earlier on, we might have had, you know, we might make different choices about what tools we use.
Tanner
Yeah. I want to dive completely, I hear that and I go like, “Well, how do we make this better?” Right? Like if we’ve got, if it’s on the engineers, if it’s our responsibility, how do we, how do we all get better at this? Because not all of us have mentors, not all of us are necessarily self-starters, like, I don’t know. How do we get better at this thing?
Christian
Yeah, well, I think first of all, use the internet. Use social networks to connect with people who… You might not have somebody at your company, but you certainly probably know somebody, or you know someone who knows someone, who can help you start thinking about these things. It might be a little bit of an investment, but there are people who are very seasoned who will offer hourly rates for consultations. So it might be a really good—I’ve done it recently, actually.
Tanner
Oh nice.
Christian
I paid someone, I think, I forget the exact amount of money. It’s not, it wasn’t a trivial amount, it was like $150 an hour to sort of get their idea about how I can approach frontend development at a company where, for a lot of companies this is just how it happens and frontend is just not really an investment early on, right? And so, because the thing is with the limited amount of hours you work per day, and the limited amount of days you work per week, hopefully, if you have a good job that respects your time…
Tanner
Yeah.
Christian
You can’t accomplish everything. And so how do you focus? Where, how do you know where to focus your time? If you don’t have your performance metrics that users are capturing? Tools like Lighthouse are great. You can use tools like Lighthouse and UI monitoring from Datadog, all those things, to inform some of your information, but it’s no replacement for actual user data. And luckily we have tons of vendors. You know, we use Datadog but there are other solutions out there. It doesn’t take that much to just add a script to start gathering that data. Right?
Christian
And I think it’s an easy sell to especially leadership. If you’re an early engineer, or you feel like you don’t have support from some ideas, I think spending even one day to put up a tag to start gathering data… Obviously, check with your security team to make sure you’re not capturing data not supposed to be, make sure you do your due diligence, all that stuff. But no, I will guarantee you, no manager or VP is ever going to say “no” to you when you bring up the idea, “We should start capturing user metrics.” Every, like, I think everybody in leadership is going to be thrilled that you brought that up. Because it’s so, that’s how critically important it is. And in a lot of, I think, startups, that’s not something people often think about. That’s not always true. I mean, obviously, there are exceptions, right? I think at least from my experience in every startup I’ve been, it wasn’t really something…
Christian
There’s a lot to think about.
Christian
Yeah, yeah. Especially when you’re like, “Well, we gotta get a product out there, we gotta get investors, we have to keep selling, we have to keep getting more clients.” It’s like the attention is survive, survive, survive.
Tanner
And oh yeah, by the way, add some analytics, add some monitoring to this.
Christian
Right, yeah exactly. But we’re in a world where now there are tons of tools out there that make it pretty easy, and so I think even gathering that data would be beneficial. And if there’s any pushback at all, you can just say, “Listen, we can just take it, like if it’s not helpful, we can just take it away.” Right? Because you only need to have it deployed for a week or two just to even see if data coming in is useful.
Tanner
Let’s try this, see if it helps.
Christian
Oh, and they also, as engineers, be willing to be proven wrong. I think that’s a big thing too, is we have assumptions about how things should be done or where we should be investing our time. But if the data comes in and tells you something different, be excited about that, because that means that now you’re making better informed decisions.
Tanner
Has that happened to you recently? Or do you have a memory of…?
Tanner
Never… No, of course!
Tanner
“I have never been proven wrong!”
Christian
Yeah.
Tanner
“I am an eternal font of wisdom.”
Christian
I think, you know, I think it’s just generally… Again, if I met myself from like four years ago, I’d be like, “Who is this guy? Why is he such an asshole?” But I think it’s certainly really important just to have that mindset in general, to be proven wrong, to be okay with being proven wrong, and being excited about that. Because that’s, again, in the same way that you make mistakes is how you learn, you learn by being proven wrong too. And being okay with that, I think it’s also, like, it’s not catastrophic that you’re wrong, or that you make a mistake. I think it’s okay. I think that the key for all of us, too, is we want to work in a place that is okay with that.
Tanner
Well, maybe in closing here, what would you tell yourself from four years ago? Is there any parting words of wisdom or advice you’d give?
Christian
You know, it’s interesting because I would want to say, obviously, like, “Hey, listen to people. You don’t know everything. You’re not senior.” But I remember distinctly one person telling me that and I’m being like, “What the? You don’t know anything about me.”
Tanner
You couldn’t change my mind!
Christian
Right. And I think, again, I mean, in hindsight, obviously, I would have done things differently. But if, had I not done those things, I would not be in a place today where I feel like I have much more influence, and where I feel much more successful in my career, and that I at least have built up enough expertise to sort of actually feel comfortable leading certain things. Yeah, I think it’s really important. I think the biggest thing is just for people to be humble again about making those mistakes, of being okay with saying that, “You are wrong.”
Tanner
Yeah.
Christian
I think that’s good general advice, like, period, regardless of the work that you’re doing, in your personal life even. I think for me, you know, it’s really, it feels, up until the moment you say you’re sorry that you did something, it feels really, really weird to do it, but once, the second you say those words, everything feels so much better.
Tanner
Yeah. Man… Well, let’s see here. I don’t know, do you have places that people follow you? Or should I be like, “Hey, here’s where you can follow Christian.”
Christian
Oh yeah. I mean, I’m pretty active on LinkedIn. So LinkedIn is a good place to find me. You can just search for “Christian Cho” and I’ll be working at a company called Karat, K-A-R-A-T. We’re also going to be starting at Karat, actually, an engineering blog. So hopefully I’ll be putting out some articles here and there for it as well.
Tanner
Yes! I’ll be on the lookout for that.
Christian
Yeah. I’ve always wanted to start, like, I know you have a website and you have a newsletter, basically, and all that stuff, and I’ve always wanted to do it but I’m just…
Tanner
I don’t have a newsletter.
Christian
Oh, like, alright I see blog posts, right? I see at least something going there. I just, I get so…
Tanner
Yep.
Christian
Maybe that’s what I should do, I should just be like a podcast guest for multiple podcasts. I should just jump around.
Tanner
Hey, you can come on here again.
Christian
Yeah, exactly. I’m more than happy to talk about anything frontend.
Tanner
Fantastic.
Christian
Yeah.
Tanner
Well hey, Christian, I wish we had more time, but it has been so great talking to you. I want to talk more about mentorship next time, I think that would be great.
Christian
Oh, yeah, that’s my pleasure. Thank you for having me, and very much would like to come back and talk about mentoring. I think it’s a really critical piece of, I think, paying back your dues as an engineer as you move up in the career.
Tanner
Awesome. Thanks so much again and we’ll catch you next time.
Christian
Alright. Thanks, Tanner.

Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.