Scientists Should Learn and Teach git First

Todd M. Gureckis · ·  2 minutes to read

Despite all the hype and grumbling, I use AI coding assistants quite a bit in my workflow. I've been coding for at least 30 years and consider myself a reasonably capable software developer. I find these tools useful not just as a substitute for memorized syntax, but as a way to accomplish tedious tasks more efficiently. In some ways, I think of it as an advanced IDE feature offering complex search-and-replace capabilities across multiple files without memorizing arcane editor commands or running endless Google searches.

However, one of the things I've noticed in my own integration of AI into my workflow is how important git is becoming to my daily work.

For the last 20 years or so, I'd recommend to students who come into my lab that what they need to do to succeed is to learn a programming language really well, whether it's Python, JavaScript, or R. However, in the AI era it turns out that learning the specific syntax of a particular language or a particular package tends to be not as important, in part because that's exactly the support that the AI tool provides. What you do need is the ability to work effectively with AI and increasingly this involves actually letting (sometimes) multiple AIs run simultaneously against your code.

AI agents can modify code in many places very quickly. Before long, you can get overwhelmed and unsure whether the edits are exactly what you wanted. This puts you in a position of reviewing code rather than writing it yourself. In that reviewer role, it's essential to know how to use tools like git and diff to see what was modified, revert mistakes, and commit incrementally before introducing new problems.

I've recently wondered if AI coding inverts the traditional learning stack. Instead of learning a language first and tools second, it now makes sense to master tools like git and testing frameworks before diving deep into language syntax.

The skills I'm thinking of include: using an advanced editor like VS Code or Cursor, mastering git and GitHub, and practicing test-driven development. These were once considered "advanced programmer" topics, but they're now the foundation for using AI effectively.

I've long taken a git-first approach in my lab. Generally, I think that almost all students in my lab need to know something about git and GitHub in order to work effectively with me. I usually make the onboarding process involve creating a GitHub account and doing some basic git tutorials. But now it seems incredibly important that people are actually power users of git—understanding branching, merging, merge conflicts, cherry picking, git worktrees, and other aspects of version tracking.

Many people see AI as a downside for education and the future of work, and there are real issues we need to address. I share the discomfort with unthinking reliance on AI. I've seen novice programmers get in over their heads and introduce bugs into their science codebases. But on the coding side, my prediction is that AI assistance will become part and parcel of how people develop software. Preparing for the workforce of the future means taking a more AI-native approach to developing code, and that's going to require teaching a completely different toolset than the ones we did the past.

· ai, education, programming