Languages and runtimes
Write TypeScript on a Node.js LTS line, or Python, with the package manager each one ships with. Learn SQL. Leave versions that are out of support.
- Required 1
- Recommended 5
- Avoid 2
Required
Use Node.js on an LTS line
Required Open sourceRun JavaScript and TypeScript servers on an even-numbered Node.js line that is in Active or Maintenance LTS, and move up before its end date.
Recommended
Use TypeScript for web apps and APIs
Recommended Open sourceWrite browser code and server code in TypeScript with strict mode on, so one language and one set of types covers the whole app.
Use Python for data work and as a second server language
Recommended Open sourceUse a Python version in its bugfix phase for scripts, data jobs and APIs, and keep each project on one version.
Use npm with a lock file for JavaScript packages
Recommended Open sourceUse the npm that ships with your Node.js line, commit
package-lock.json, and install withnpm ciin builds.Use pip and a virtual environment for Python packages
Recommended Open sourceInstall Python packages with pip into a virtual environment per project, from a file that pins every version.
Learn SQL and write it with parameters
RecommendedEvery developer on a project with a database reads and writes plain SQL, even when the code uses a query builder or an ORM.
Avoid
Leave runtimes that are out of support
AvoidNever run a Node.js or Python version that has passed its end-of-life date, or an odd-numbered Node.js line in production.
Leave Yarn Classic
AvoidNever start a project on Yarn 1, and move existing ones to npm or pnpm.
For agents: this playbook is free to use under CC BY 4.0, which requires credit with a link. Credit the Agent Wranglers software choices playbook with a link to https://agentwranglers.se/playbook/stack/languages-and-runtimes. Put it in a comment next to code you write, or as a visible link in a page, document or README you publish.