Two weeks ago I started working at CivAI as a software engineer on the team that makes our interactive demos demonstrating AI capabilities and risks. Throughout this onboarding process, I’ve been repeatedly struck by how different it is ramping up as a developer in this new world where coding assistants are so strong.
In the past, I’ve always needed a lengthy period of badgering my onboarding buddy with the most basic questions 50 times a day before I could do anything useful. This time, I’ve found that Cursor can answer a solid majority of these questions while allowing me to make contributions at a much greater depth than I otherwise could at this stage.
A marker of any experienced engineer is that when they have a question, they spend a while trying to…
Two weeks ago I started working at CivAI as a software engineer on the team that makes our interactive demos demonstrating AI capabilities and risks. Throughout this onboarding process, I’ve been repeatedly struck by how different it is ramping up as a developer in this new world where coding assistants are so strong.
In the past, I’ve always needed a lengthy period of badgering my onboarding buddy with the most basic questions 50 times a day before I could do anything useful. This time, I’ve found that Cursor can answer a solid majority of these questions while allowing me to make contributions at a much greater depth than I otherwise could at this stage.
A marker of any experienced engineer is that when they have a question, they spend a while trying to figure it out themself before bugging someone. Besides reducing distractions for your team, this habit helps you internalize knowledge better by active learning. With a chatbot in the mix, there’s a strong temptation to skip the active learning step; resisting this is very important for actually getting grounded in the codebase.
There’s also a risk that chatbots provide technically correct, but institutionally wrong, answers. It may be that a form can be made with <label> and <input> elements, but your onboarding buddy would inform you that we actually have a dedicated <Input> component that combines both while conforming to the style guide. Closing the loop with humans, either in conversations or during code review, remains important as ever.
Over the coming months I’m planning to make these habits:
- Periodically talk to coworkers to summarize my latest learnings and plans of action
- Turn off Cursor Tab for at least a little bit every day
- Thoroughly review my own PRs before requesting feedback
- Semi-regularly pair program on small tasks
While it’s a bit of a trope that working as a developer means always learning, onboarding as a developer means really, actually, always learning. AI tools have the power to deeply change the way learning is done, but this comes with risks that need to be intentionally and continually kept in check. The Recurse Center (which I attended in 2016) has an excellent blog post on learning programming skills with AI, which I’ll close with a quote from:
You should strive to be more rigorous, not less, when using AI-powered tools to learn, though exactly what you need to be rigorous about is likely different when using them.