Rules of thumb for developing software