Skip to content
Valuable programming principles from John Romero
Branch: master
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Type Name Latest commit message Commit time
Failed to load latest commit information.

John Romero

John Romero's Principles for Programmers

Valuable programming principles from the early ID Software days as shared by John Romero in his talk at GDC Europe 2016.

Watch the talk here:

Alternative videos:

Principle 1: No prototypes

No prototypes. Just make the game. Polish as you go. Don't depend on polish happening later. Always maintain constantly shippable code.

Principle 2: Fallbacks on load failure

It's incredibly important that your game can always be run by your team. Bulletproof your engine by providing defaults upon load failure.

Principle 3: Simplify

Keep your code absolutely simple. Keep looking at your functions and figure out how you can simplify further.

Principle 4: Focus on tools

Great tools help make great games. Spend as much time on tools as possible.

Principle 5: Don't rely on testers

We are our own best testing team and should never allow anyone else to experience bugs or see the game crash. Don't waste other's time. Test thoroughly before checking in your code.

Principle 6: Fix bugs immediately

As soon as you see a bug, you fix it. Do not continue on. If you don't fix your bugs your new code will be built on a buggy codebase and ensure an unstable foundation.

Principle 7: Target less powerful systems

Use a superior development system than your target.

Principle 8: Don't write code for future projects

Write your code for this game only - not for a future game. You're going to be writing new code later because you'll be smarter.

Principle 9: Write modular code

Encapsulate functionality to ensure design consistency. This minimizes mistakes and saves design time.

Principle 10: Transparent coding

Try to code transparently. Tell your lead and peers exactly how you are going to solve your current task and get feedback and advice. Do not treat game programming like each coder is a black box. The project could go off the rails and cause delays.

Principle 11: Embrace differences in programmers

Programming is a creative art form based in logic. Every programmer is different and will code differently. It's the output that matters.

Attribution and Fair Use

This repository contains copyrighted material; the use of which has not been specifically authorized by the copyright owner. The repository is making such material available for the purpose of criticism, comment, review and news reporting which constitute 'fair use' of any such copyrighted material as provided in section 107 of the US Copyright Law. Not withstanding the provisions of sections 106 and 106A, the fair use of a copyrighted work for purposes of such criticism, comment, review and news reporting is not an infringement of copyright.

The image used is used under CC By 2.0. Image source:

All principles, except the headers in this document are attributed to John Romero, the Game Programmer God.

You can’t perform that action at this time.
You signed in with another tab or window. Reload to refresh your session. You signed out in another tab or window. Reload to refresh your session.