This was inspired by
- http://www.joelonsoftware.com/articles/fog0000000043.html
- http://programmers.stackexchange.com/questions/58661/can-an-agile-shop-really-score-12-on-the-joel-test
If you can check everything on this list, congratulations, you are doing it right!
-
Do you have a documentation which tells exactly what your product is?
You will explain the project to new members anyways, just document what you tell them.
-
Are you proud of your codebase?
-
Are your co-workers proud of the codebase?
-
Do you have a start here documentation for new project members?
-
Is your start here documentation so good that you don't need to explain it further?
-
Can you refactor your code without fearing that your app won't work?
-
Do you have strict conventions about project style(tab/space, indent, naming)
If you don't eventually your code will be a mess of different styles:
- Diffs will be polluted by mix of spaces and tabs
- Code is hard to read
-
Do you know how outdated your project's dependencies are?
You should have a single meter like: 6/10 of dependencies are outdated
-
Would you be comfortable to show your code to other team members?
If not, are you coding crap?
-
Can every member of your team handle rough critic of their code?
Everyone should be able to handle comments like:
- "Your code looks like shit, because ..."
- "Your technical choice was bad, because ..."
If not, members are afraid to give feedback and code will eventually rotten.
-
Do you version your product?
If you don't have a version, you'll eventually be confused what version is deployed to staging/test/prod.
-
Do you have deployment scripts in version control?
-
Do you know how outdated your hosting servers are?
-
Can you easily replicate testing/staging/production environment locally for testing?