I finished reading Uncle Bob’s The Clean Coder. These are some of the things I learned that were the most important points for me:
Learn to say NO: don’t make promises you might not be able to keep. Know your limits. Take a firm stand in the face of management and pressures.
Avoid passive-aggressive stance. Don’t let others dig themselves into a hole by continuing bad practices and heading to dead ends.
If there is a problem with your project and your manager ignores your alerts, it is your duty as a professional to go over his head. Of course, warn him in advance, and do it right.
TDD is the only sensible way to develop testable software that guarantees high quality, easy modifications. Period.
Let acceptance tests drive the business rules, to ensure you build the right product. Customers always realize too late that they wanted something different.
Estimate accurately, and always include the interval of error. Practice estimating O, N, P, and calculate mu and sigma. Verify your accuracy over time.
Avoid "the zone". You lose the big picture in the zone. If you notice having tunnel vision, take a step back, or switch to pair programming.
Avoid distractions such as music. (This may depend on the person. I know I cannot work with music on, but I know that others might be perfectly fine with it.)
Make sure to get enough sleep.
Tomato method: shut out all interruptions for 25 minutes and focus on one clear purpose, nothing else. After 25 minutes, handle any tasks you had to postpone. Then do another tomato...
If your productivity is down, don’t force it. Take a power break or switch tasks.
If you don’t follow your discipline during crisis then you don’t really believe in the discipline.
"Quick and dirty" is an oxymoron: dirty always means slow .
When you realize you cannot make a deadline, communicate it, stay calm, stay clean, stick to your disciplines. Try to get help. Don’t lose sleep.
Try pair programming. Uncle Bob claims he probably produces the best work during pair programming.
FitNesse looks like a great acceptance testing tool. Could be interesting.