First week at Karrot
Warning

One week in as an intern at Karrot (started 2022-05-22), a Korean unicorn.
The internship is three months, but I want the interview and onboarding down before I forget them.
Application and Interview
A Great Start
It starts at the Karrot Market Team Recruiting Site.
I could really feel how much energy Karrot puts into finding good people.
The recruiting site is clean, and it answers pretty much every question an applicant might have.
Above all, the JD (Job Description) is specific and clear.
Some companies I interviewed at didn't share a JD at all, so this felt way more considerate.
Karrot Mini R&D Engineer Intern JD
Who we're looking for.
Karrot Market still builds a lot of its mobile app with web technology.
The web is a great tool, but it still has many limits when it comes to native platform support.
The OS WebView isn't built to run several apps at once.
And because the web security model and the OS security model differ, it's hard to match the native experience.
For example, if you ask for the user's location through a web API, the consent UI/UX looks different from the native one.
The Karrot Mini team wants a breakthrough from the modern web itself, not from the OS WebView.
We're looking for someone to break through what people thought the web couldn't do, and build an OS-level experience that runs entirely in the browser.
Specifically, you will
- Research the next-generation web-based runtime for Karrot Market
- Build a sandbox that isolates multiple apps
- Provide Karrot Market integration through standard web interfaces
- Build a scheduler that can watch and control the running state of multiple apps
We're looking for someone who
- Knows web development with HTML, CSS, and JavaScript
- Is good at building programs in JavaScript and TypeScript
- Likes reading the DOM standard and implementing it themselves
- Is interested in all kinds of web standard APIs
- Has a basic understanding of the browser security model
- Wants to run an open-source project from day one
Even better if you
- Have contributed to or run an open-source project with lots of contributors
- Know OS, scheduling, and concurrent programming well
- Can work in several programming languages
- Have experience with systems languages like C/C++, Go, Rust, or Zig
Please Note...
- The position lasts three months, and in some cases it can be extended by 6 months
Procedure...
- Document submission
- Job interview
- Final acceptance
Document Screening
Karrot Market takes free-form applications.
Show your strengths however you like.
Any format works, like Word, PDF, or a web link, except hwp files.
Send your portfolio, GitHub link, and so on as needed.
Job Interview
Here we talk in depth about your experience and skills, based on your resume and assignments.
The interview takes 1 hour to 1 hour 30 minutes, with Karrot Market team members who work closely with the role.
Pretty detailed, right?
It was so transparent that I could guess what my position and responsibilities would be before the interview even started.
Applying was simple, too.
No cover letter or anything, just my existing resume.
It took less than 15 minutes.
The Interview
The interview was booked for 1 hour and 30 minutes, like the JD said.
I'd interviewed at several companies before this.
Until then, the interviews I'd had fell into two types.
Example of Behavioral Interview
-
If this happened on your team, how would you handle it?
-
What do you think matters most as a PM or developer?
-
Tell us about this project on your resume.
What did you learn? What do you regret most?
Example of Technical Interview
- ~ Please solve this problem.
- (At a Web3 company) Explain blockchain Proof of Stake. How is it different from Proof of Work? What problem is it trying to solve?
- Explain the difference between HTTP POST/GET/PUT, etc.
If you were going for a Computer Science internship, you had to prep hard for the second kind.
Either way, most of the interviews I'd had were things you could prepare for.
Karrot was different.
No quiz. 5 minutes in we were talking about real work, more like a team meeting than an interview.
First, the interviewer explained a problem the team was facing.
Then he asked me to look at the possible solutions and walk through their strengths and weaknesses.
Here's what he explained during the interview.
On Mini-Apps
- WeChat in China has Mini Programs, called Xiaochengxu.
- They let you sideload small programs inside WeChat.
- No install needed. Scan a QR code and the mini-app loads super fast, and it feels almost like an app.
- You don't need to sign up or connect a payment method, either. Your WeChat ID and WeChat Pay are linked automatically, so nothing gets in the user's way.
- In China, mini-apps already took over the market, and Line and Snap are getting ready for the same trend.
- Apple launched its own take on mini-apps, App Clips.
If you're curious about mini-apps, check these out!

So, how did it go?
Each answer led into the next question.
Interview Questions
- WeChat builds its own native client, and that client runs the mini-apps. But that means the mini-apps don't follow web standards and use their own security model, which makes them hard to take global. Karrot Market is imagining a similar mini-app environment. What's the right strategy?
- → It'd be enough to build a general-purpose mini-app that follows standard web specs and the web security model perfectly. In other words, you want to run a WebView inside the web. The first thing that comes to mind is an iframe. What's the problem with doing this in an iframe?
- → Code inside and outside an iframe runs on the same thread, so if the mini-app freezes, the client app freezes too. How would you fix that?
- → With a Web Worker, you can put the mini-app and the client app on separate threads. But then the Web Worker can't access the DOM API. For example, you can't call
getClientBoundingRect. How would you fix that? - → Give Web Workers a virtual DOM API they can access. Google built a model called WorkerDOM for exactly this. And an open-source project called PartyTown, which moves third-party JS into its own Web Worker, came out recently. So how would you build a mini-app system with these?
- → Say we build the mini-app system on top of Web Worker and WorkerDOM. Can we then do force-quit and multitasking on the web, inside the web? How?
It wasn't a typical interview. It was about seeing how I'd come up with ideas and find a solution at a practical level.
It felt like a coffee chat, and I felt really well taken care of, even as the one being interviewed.
You could see the people team's effort everywhere. They promised to tell everyone, pass or fail, within three days, and when the results ran late they emailed to apologize.
Curious about the answers above? These cover them.
- How to build a plugin system on the web and also sleep well at night
- WorkerDOM: JavaScript Concurrency and the DOM
Interesting Things about Karrot

Interns with Power
We're 8 people, and it felt like joining a tiny startup as a core member, not interning at a unicorn.
Interns get a real voice. Nothing is held back, information or opportunities.
Even as an intern I could pitch ideas, ship to production, and suggest new directions for the product design.
On my first day, the team lead encouraged me to speak up more, and that helped a ton.
I was learning on the job, for real.
Great Power and Responsibility
Karrot trusted me first and gave me as much freedom as it could.
For example, I come in whenever I want between 9:00 and 11:00, and I don't say bye when I leave.
Nobody tracks hours. I just have to show results.
Being an intern, I asked about a million things, and I loved hearing "We trust you, go ahead however you think is right."
Working Anywhere
Related to the above, our team has never all met in person.
For the last few days I was the only one from my team at the office.
Right now one of our developers is living on Jeju Island for a month.
Still, everyone on the team kept doing their best work.
Asynchronous communication impressed me, too.
As more work goes remote, meetings where everyone shows up at the same time just eat too much energy.
Instead, we document and record everything and handle it all over Slack during our own working hours.
Of course, this only works on top of trust between team members and the freedom and responsibility above.
(i.e., it runs on the belief that nobody is free-riding like in a group assignment.)
Transparent Information

Interns get no restrictions.
You can read Karrot Market's server code, check how much local advertising sold, and read the minutes of meetings with Karrot's investors.
Reading this, you're probably thinking of Reed Hastings's book No Rules Rules.
At the company meeting every Monday, each team shares its updates.
What impressed me is that nobody uses slides. Everything is written in a shared Notion doc, so it's easy to look up later.
Overall, the culture pushes people to speak up, boldly and creatively.
And because the company trusts people first, people act responsibly.
Endless Debates

I saved the one that impressed me most for last.
The culture of debating with mutual respect was amazing.
Two days in we had a 6-hour meeting, then hundreds of Slack messages until dawn on where the product should go.
I've done plenty of group assignments and student startup projects, but I'd never seen people care about a product this deeply or argue about it this hard.
Watching them debate how to spend limited resources to win the market was inspiring.
Everyone argued with logic, tried to understand the other side, and looked for a middle ground.
And it was cool that it never got personal. Everyone respected each other.
Moving Forward
From here, I'll be working on sandboxing for the mini-app standard.
Put simply, it's building a web inside the web, the foundation for the mini-app environment.
Lots of technical and product goals. I'll post again after the internship.
No backlinks found