Software development processes

After experience with working under Waterfall, RUP, and Agile approaches to application development, I believe that process is not necessarily the answer to the problem that each attempts to solve; producing successful released products (obviously success can be measured on many axis). If you have the wrong people in the wrong position and/or at the wrong time, a project can be made to fail.
 
There has been a whole industry created around "best practices" and defining "new" terminology to convey a distinction between one process and another; one best practice and another; one pattern and another, where authors appear to be scrambling to be the next GOF or Martin Fowler to have their name attached to the next great catch phrase.
 
Let’s face facts. If you are building a physical structure, having a poor carpenter, adequate architect, and an exquisite stone mason will still produce a building with poor structural integrity.
 
If you are creating software to run a/your company, you want talented people at all levels of whatever process you implement. The real question then becomes how to measure who is talented at their job versus someone who is adequate or even poor? The extremes on either end of the spectrum tend to be self-evident, but even the greatest of companies that develop software are not filled with 100% superstars at every level. Every person in the team must be able to fulfill a role. Are you the architect, able to create elegant and resiliant software solutions? Are you the talented developer who can implement architectural decisions accurately and with few defects? Are you a business analyst that can cut through the fluff and get to an accurate assessment of what is required to accomplish the job without getting side-tracked in the details? Are you a project manager who is talented at managing the desires/needs of customers  and the desires/restrictions placed on the project team? All of these questions are really immeasurable as it is often extremely situational; the right person, in the right position, at the right time.
 
From a company’s perspective, the crux of the problem is in how do you build a lean team of successful professionals, able to create successful projects to make your company successful. It seems to boil down to trust and acknowledging/respecting the skills and abilities of your employees. As an owner or manager or owner you have to have trust in your employees that they are going to do a good job for you. Your job is to keep the team free of impediments that keep them from doing their best, including keeping them happy, motivated, and focussed on doing the things that they are good at doing. If you don’t feel you can trust the job that they are doing for you (either their skills are not up to par or you don’t feel that they are in a state to give you all that they can), there is likely something there that needs addressing. If you do have trustworthy people in the right positions, trusting in their judgement is probably the most empowering thing you can do. When you come across a person you trust to be good at or talented at the job that they are doing, you should do everything in your power to ensure that they continue to do what they do well. This can change over time. People get bored or become unmotivated to do what they did (even well) for any number of reasons. This is evident in, even Microsoft (if we take it as having the longest history of successful software projects), losing talented people.
 
Having the wrong people in the wrong position at the wrong time can help make any software development process fail. Having the right people in the right positions at the right time can help make any of the software development processes succeed. It would seem to me that process is not the path to successful projects, but that having the right people is.
Advertisements

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s