Broken windows theory suggests that
“A successful strategy for preventing vandalism is to fix the problems when they are small. Repair the broken windows within a short time and the tendency is that vandals are much less likely to break more windows or do further damage.” - paraphrased from wikipedia
I believe this also applies in Software Development. So does the Pragmatic Programmer. When I jump on to a new project, I can usually get a sense for the ‘neighborhood’ by taking a look at the build scripts. If seed data scripts or rake/nant tasks begin to accumulate dead weight, it becomes evident if people care for the ‘neighborhood’.
I recently started working on a new project, and quickly found that the seed data scripts were not functional. I tried “rake db:seed” and got errors about columns that were not there. The dev’s were seeding their database some how, but it seems like everyone had their own strategy for getting up and ready. There were disparate sql file littered throughout the project in different locations that I imagine the devs were just manually running against their database as there were not any rake tasks to do so. Lack of consistency.
Another thing I noticed was that there was no project rvmrc. I like to keep my gemsets separated from one project to another to reduce collisions between dependencies. I noticed this project had none, so I created one and ran “bundle install”. I immediately recieved an error that said “Could not find rubyzip2-2.0.1”. Apparently the gems had not been updated in a while and the version of rubyzip that they were dependent on is no longer available from rubygems.