Excellent and true points. Happy to say I do _all_ of them already (and have for several years). :)
It does amaze me though that I have to continually convince fellow programmers that these are true-isms and really don't "get in the way". Uhg.
That said, there is a time and place for the cheap nasty hack that just makes the thing work, but even then I make sure that it is heavily documented as to why the hack was even required in the first place.
I do them all now, but unit testing's new to me.
The level of unit testing that you can do really depends on the environment that that exist at your work place...
At my last job we were working on a C++ game project. On that project every component of the game had a set of unit tests that were run automatically by a c# script on a server. This was done once every morining at 3am. If the unit tests did not pass I was automatically sent an email explaining the offending section of code and giving a list of the checkin history of all related files...
This was heaven as a manager of 21 programmmers 4 of which were offsite. :)
Unfortunately most people and projects are simply not set up to do such things. Usually you must argue against management to spend the 3-4 weeks it takes to set up such a system.
I fully understand that most very experienced programmers, while very skilled, have not done unit testing or are not familiar with it due to the fact that it is so dependant on the environment you are working in...
You are lucky in the with Phase.org you can set up a unit tesing environment and then claim full experience with any new job you apply for. That is a very good thing. :)
I'm setting up Unit Testing at work in the first instance, as with all the other aspects. This should also mean I can get some training paid for as I build the team.
That's cool and very lucky for you. :)
It's great to be paid to learn new things, especially if they are things that you are interested in and can cause you to be better paid... Falling into an accelerating spiral of learning and better wages is a pretty good place to be. :)