I strongly believe agile is the right approach for most projects, especially software development – it’s about building a close relationship with your customer and getting frequent feedback (based on incremental updates of actual running software) until you deliver what they want, as opposed to the “keep the customer in the dark then surprise them and fix everything as a Change Request (at additional cost)” approach of more traditional Waterfall projects.
As well as resulting in a product which the customer wants (thanks to the feedback loops) it can also mean projects end earlier when the customer identifies that it meets their needs (because when asked to write down everything they want, customers often write down everything!).
As a coach, I work with software development teams and the people around them (product managers, engineering managers, etc.) to help them find better ways of working. It starts with understanding the current situation (the people, tools, processes, etc.), the challenges, and building a picture of some steps towards their goal. It’s important to help people build the capacity to keep making improvements after my involvement ends, i.e. “teach a man to fish”.