I'm obsessed with theorizing everything in life. That can be a good thing, and that can be a bad thing. When you know how to stop, I found it can be quite a strength.
It happens that I write software for a living. I've done that for about 10 years now and you can guess I spend a great deal of time inside my mind creating and destroying abstract theories about what makes a successful software project.
With Shambling++, everything is so simple!
If there is one conclusion I have reached, it's that there is No silver bullet.. Of course choosing the tools is important: you don't nail with a screwdriver. We've worked with a lot of technologies, more often than not, it's always the same principles. It was available in yellow, now it's available in blue.
If your problem is solved only in using the right middleware or tool, you never had a real problem to start with.
Being agile, lean, nimble
I have a lot of interest for the lean approach, but once again, this is nothing new. For example, our process is strongly SCRUM influenced.
Unfortunately, being lean is most of all about improving efficiency. You can be efficient all the way, at some point you need something more to succeed.
Another way to see it, is that agility and nimbleness will prevent certain cause of failures, not all of them.
How to successfully deliver?
It all comes down to having talented people at every link of the chain. This conclusion will strike even stronger the day you realize that the chain is a strong as the weakest link.
Your developer must have outstanding software development skills, communicate well and be able to handle the extreme pressure of working for an egocentric lunatic (that would be me). Your assistant must be nice, spell flawlessly and have a keen sense of organization and diplomacy. Your translator know the subtleties of foreign languages and know that translating really means transposing.
You see where I'm getting at. It's pointless to design a process if the components of the process (i.e. the human beings) are not good enough.
When you hire intelligent people - because we're talking about intelligence here - and give them the right amount of autonomy - which happens to be a lot - they will see what's wrong and fix it. They will find a way around problems.
They will journey out of mediocrity. They will do this for the simple reason that talented people hate mediocrity.
When you hire less intelligent people - add snobbery, elitism and the proper amount of French accent here - they will blindly apply whatever process you have, even when it doesn't make any sense.
You might be lean and agile all the way, don't worry, they'll find a way to make that your worst nightmare to the point you will devote the rest of your life to the holy church of waterfall development.
Software is intelligence packaged in instructions that solve problems. A software company is an intricate, subtle and delicate intelligence distillery. That intelligence comes out of the brains of your employees.
Never compromise yourself with sloppy recruitment.