Before you begin reading you must watch the short 45 second clip.
This video towards the end shows a hesitant thief mustering the courage to pick a pocket. On hearing the kid snap his finger he is disturbed and out of fear drops his idea and walks away, hence a crime has been prevented from happening. It was a coincidence that the thief thought that someone else was looking at him.
I loosely compare this to the Continuous Integration server where the build turns RED for the standards we set. Most of the bad parts while coding goes in inadvertently during the rush hour of check-ins. I usually observe the rush hour to be close to the end of the day and the next day, the refactoring is put into back burner which grows into tech debts and makes you repay at a later stage. Along with the other devs in the team we set some simple rules in the CI to fail the build. The rules are
- More than 12 lines in a method
- NPath complexity more than 4 in a method
- More than 4 lines of code copy pasted across any file
An intentional check in to avoid these rules and send in a bad code could not be prevented; but someone in a hurry or tired individual checking in gets a hint that code could be bad. A quick introspection will lead to corrective action and things could be addressed then and there instead of carrying a tech debt. The rules above are neither comprehensive nor does this guarantee awesome code, but it has caught me and others red handed when looking for quick gains. We are exploring more options to configure the CI to help us keep on our toes.