Advice about programming
Understanding the problem clearly is the hardest part of programming
Making your design fit the your understanding is second hardest
If you got both those parts right, implementation is usually easy
So if your implementation goes to pieces, take another look at your design