The interviewer had a heavy French accent, so I had to turn on the Google Meet transcript. After introductions, the interviewer handed me a GitHub repo that was completely empty. The requirement was given verbally: build an app to control a Mars rover — the rover starts at (0, 0) facing north; it supports commands to turn left/right and move; and it should report direction and position after every command (note: the original requirement wasn't stated nearly this clearly).
One nice thing about Shopify is that you're allowed to bring your own AI coding tool, so I picked Claude Code. To save time I also used a speech-to-text app called Shandianshuo ("Lightning Speak") for voice input.
Step one: I fleshed out the requirement and handed it to CC (Claude Code), turned on plan mode, and got a plan out of it. For something this simple, CC nailed it in one shot.
Step two: implementation, including test cases. I reviewed the code together with the interviewer. I pointed out a few things that could be improved — for example, using an Enum to encapsulate direction and turning logic, and using the command design pattern to make the implementation more extensible. I said the point of the first version was to ship fast, so I wasn't going to implement those improvements yet.
Step three: manually testing the CLI, which CC passed in one go, of course. At that point the interviewer wanted to check test coverage — CC reported a result claiming 80%. The interviewer pointed out that you shouldn't just take the AI's word for it, and suggested actually running a coverage report instead. I had CC do that and write a few more test cases, and it got up to 99% coverage.
That's when the first version was done.
The interviewer then added a new requirement: control multiple rovers, with support for create/delete/select rover. I said a new requirement means a new context — let's first run cc init to generate a Claude.md summarizing the current functionality. Then in a new chat I gave it the requirement and told CC it only needed to touch the rover controller. Manual testing passed on the first try again.
At this point the interviewer probably felt this was too easy for the AI, so he gave me a small requirement and said not to use AI this time: avoid collisions — if there's a rover ahead, the move should fail. It was a simple requirement, I just needed to track each rover's position.
Finally, git push. The whole process was relaxed and enjoyable — except it wasn't really pair programming, it was three-way programming between him, me, and CC.
Discussion
Loading comments…