Start with design patterns – Always start with a design pattern, then try to make your problem fit it. Ideally start with the pattern you have most recently read about as this is most likely to be the best one. Do programming Katas – Repeatedly solving the same simple problem is the best way to improve your coding skills. The faster you can do it, and the more you sense a feeling of ‘flow’ when