It really does not matter which methodology you use (Agile, waterfall or Test driven programming) the main issue is to plan right. It also does not matter who does the planning but it makes everything much clearer when you have a plan.

The Most Impotent thing about planning is to follow it. In my early years I was a Dive Instructor and one of the most famous saying is “Plan your dive and dive your plan” meaning it does not really matters that you had a wonderful plan, if you don’t follow it it won’t help. This is why as part of the ALM you have to connect the planning to the programming and keep a direct link between code changes to requirements which are connected to the planning.