Methodology and approach
I practise the same approach to work tasks which I educate my students towards - meaning that even though the work processes you mostly encounter as a programmer essentially are agile and based on SCRUM principles, and even though the world often will change overnight, it still pays big dividends down the line to think things through before embarking on any large scale programming project. Have all possible and reasonable technical solutions been taken into account, and have you as a consequence chosen the right technical toolset for the task at hand, enabling you to finish the project on spec and on time?
A common feature in all projects I have been involved in has been at least one weekly meeting with the customer liasion, where he or she is briefed in all relevant project areas of work, and where the current set of work priorities is discussed and any changes in these priorities are agreed on.
This approach is relevant when the customer wants a one-stop solution, and hires me to take on most of the practical work involved in a development project, for example in the form of a webshop or a company intranet website. In a well defined scenario, this can be the most effective approach, as I won't need to spend any time on coordinating tasks with others, and because the communication with the client is usually in thís case very direct and on a one-on-one basis. Skype is a boon for quick meetings in this case.
Working with a team
In many ways, working in a small team of less than ten persons is the best approach I know to tackle larger projects, where some of the tasks ahead can be more or less unknown at the inception of the project. Usually, the size and complexity of the project will also mean that it is necessary to bring in many people's diverse talents at the same time in order to get the areoplane off the ground and moving.
If the team is really good, it can be an exhilarating experience where the sum total feels and is larger than the moving parts - however, maintaining this feeling in a project of any length will often involve a very good team lead or project manager with exceptional emotional and social intelligence working as an integral member of the team. I can function in both capacities when the sitiuation demands it, and I can also handle both roles at the same time - but in my experience you get the most out of me as a project manager when I don't code all the time, and vice versa.
I often use Trello.com's online kanban boards for smaller projects - this is a free service, where you can invite up to 10 other users of the same platform to collaborate online. This solution is very useful in the 'working alone for a single customer' scenario, and for managing small teams of five to six people. For a larger project, you typically will want a good platform to bing in the more heavy SCRUM artillery, to make burn-down / burn-up charts and so on - and in this case, I'd recommend going with a professional product like CA Agile Central.