The AAA software project rating system
Are you in the software business? Are you a programmer? A tester? An analyst? A product owner? Wouldn't you like to work in a project with the best possible setup? In a AAA software project?
But hey, what's a AAA software project? What makes it an AAA or a simple A or a B project? There's no such rating system in the software business like in the credit business. Of course, there are other software project rating systems like CMMI from the Carnegie Mellon University.
A much easier approach for checking the setup of a software project is the Joel Test (slightly outdated), containing a simple list of 12 points with things like version control, daily builds, having a bug database, etc. These are things every programmer has heard of or uses everyday. A while ago, I asked the readers in a Google+ post about what they think is important in the setup of a software project. I discussed this topic also with my co-workers. Lot's of things were named, but we didn't find a satisfying answer.
In the eleven years as a professional software engineer, there was not a single project or company using CMMI or any other project rating system. Of course, the projects and their setups evolved to this or that direction. We identified problems and made plans to fix them. To whatever conference I went, I discovered new practices which I didn't know and weren't used in my current project. Of course, me and my collegues wanted to apply them in the current project and the discussion started! When? How? Costs? ...
The thing is, I never knew if the current project was a BBB or a A or a AAA project. There were lots of good things, lots of things with potential for improvement... but no clear overview and no sexy term attracting people.
I like the AAA term because it is as catchy as the term "clean code". Everyone wants clean code! Few programmers I know were really interested in e.g. the liskov substitution principle (LSP), but everyone wanted clean code. But hey, LSP is part of clean code, so you'll have a look at it if you learn clean code.
So, enough bla bla and introduction. Let's try to put some things into a list, which I consider helpful for a software project:
AAA
Continuous delivery through one click with at least one productive deployment per day, without interrupting the users
AA
Applying design principles like SRP, OCP, LSP ... as for example described in the Clean Code book
Pull-based workflow like Kanban letting people solve tasks which they are really interested in
Having some kind of executable specification (e.g. BDD) allowing seamless development
A
Using design- and architectural patterns
Having a clear and documented software architecture
Continuous integration with automatic build and test of the software after each check-in
Working some kind of agile and shipping a release every 1..3 weeks
BBB
Having automated unit tests, integration tests and acceptance tests
BB
Having automated unit tests and integration tests
B
Having some kind of automated tests
Having an issue tracking system for new features, bugs, change-requests
Having a solid financial funding for the project
CCC
Using a version control system like git, mercurial, subversion, ...
CC
...
C
...
D
...
Thank god, I named my blog "Peti's Braindump". This is just a brain dump, too. The topic of the software project rating system seems to be quite complex. I think the different aspects from above should be better grouped, the items probably moved up or down, additional practices added, etc.
I gave it a try using this Google spreadsheet:
Feel free to change the spreadsheet. To extend it. To move things around. To delete things. Let me know, what you think! Google will keep track of the changes.
Best regards, Peti


















