Why I Stopped Using nbdev

· Source: Hamel Husain's Blog · Field: Technology & Digital — Software Development & Engineering, Artificial Intelligence & Machine Learning, Emerging Technologies & Innovation · Depth: Advanced, extended

Summary

Hamel Husain, a key contributor to nbdev, explains why he has stopped using the literate programming environment despite his prior advocacy and extensive use. He notes that nbdev's idiosyncratic workflow, which integrates code, documentation, and tests within Jupyter notebooks before transpiling them, conflicts with the expectations of modern AI coding tools. These AI tools, trained on conventional source code, struggle to differentiate between notebook edits and final source code, creating friction. Husain also observes that the promised benefits of literate programming, such as improved documentation, are often not realized in practice, and AI can now provide on-the-fly code understanding and documentation maintenance. He emphasizes that collaboration with AI is crucial, and nbdev's unique system isolates developers. His current toolkit includes Amp, Cursor, and Claude Code, and he now uses different languages like Next.js for web development, moving beyond a "Python for everything" mindset, recognizing AI's superior performance on domain-specific, well-typed languages like TypeScript.

Key takeaway

For NLP Engineers evaluating their development environment, you should assess how well your current tools integrate with AI coding assistants. If your workflow is highly idiosyncratic, like nbdev's notebook-centric approach, you might find yourself fighting the AI rather than collaborating with it. Consider adopting more conventional, domain-specific tools and languages, such as TypeScript for web development, where AI models have more training data and can provide more reliable assistance, ultimately increasing your productivity and team collaboration.

Key insights

AI coding tools are shifting development paradigms, making idiosyncratic workflows like nbdev less efficient and collaborative.

Principles

Method

The author transitioned from a unified notebook-based literate programming environment (nbdev) to a diverse toolchain (Amp, Cursor, Claude Code) and polyglot approach, favoring domain-specific languages like TypeScript for web development, to optimize for AI-assisted coding.

In practice

Topics

Best for: NLP Engineer, Software Engineer, AI Engineer, Machine Learning Engineer

Related on AIssential

Open in AIssential →

Editorial summary, takeaway, and curation by AIssential. Original article published by Hamel Husain's Blog.