In teaching programming and software engineering over the last thirty years, I’ve become increasingly convinced that the determinant of success when you’re developing software isn’t whether you use the latest programming languages and tools, or the management process you follow (agile or otherwise), or even how you structure the code. It’s simply whether you know what you are trying to do.

— Daniel Jackson, The Essence of Software