Thursday, January 10, 2013

Methodologies, Standards, Models, and Project Success - Part 2

Let me continue from where we left in my previous post. Is there a silver bullet? If yes, what it is? If no, how can we ensure project success? Before answering these questions, let us look at how we have evolved.

1980’s were the years when different operating systems (such as Windows and Unix) and 3rd generation languages (such as COBOL, C) were popular. This is when computer education started spreading many institutions several countries.

1990’s were the years when Relation Database Management Systems (RDBMS), Structured Query Language (SQL), 4th generation languages, Graphical User Interface, DW/BI, Internet or WWW, Extended Markup Language (XML), Unified Modeling Language (UML), and several other things became popular. Process compliance based on ISO or CMM got initiated in several companies across countries.

In 2000’s, after the historic internet boom and crash, we have seen widespread adoption of e-commerce, mobile applications, Web 2.0, Service Orientation (SOA, SaaS), Social Networking, Open Source, etc.

These days (2010 and after), we are hearing about ‘The Internet of Things’, ‘Green Computing’ , ‘Cloud Computing’ etc., In my opinion, we need better decision support systems! We come across articles about failed projects - large and significant projects meant for national security and crime investigation belong to this list. There are challenged projects in all countries. This leads to billions of dollars of waste or loss every year.

For software development, maintenance, testing and production support (known as software lifecycle), we have seen several methodologies such as waterfall, iterative, spiral, SSAD (Structured System Analysis and Design), RAD (Rapid Application Development), RUP (Rational Unified Process), and Agile Methods (XP, Scrum, FDD (Feature Driven Development), DSDM (Dynamic Systems Development Method), Lean, Kanban, etc.).

There are several standards in our industry. ISO standards and IEEE standards are well known. There are usability standards, coding standards, integration standards, architecture/design standards, security standards, and performance/scalability standards. Also, there are standards pertaining to business domains such as finance, healthcare etc. Year after year, standards are revised and new standards are added to the list too.

We have models too. We have software design models (Entity-Relationship model or ER model is a good example). We have estimation models (Function Point Estimation for example). There are process maturity models and so on.

In addition to these, there are other things such as techniques, tools, etc. How do project teams do the right things in the right way to deliver results? In other words, how do projects teams select the right methodology or approach and do necessary course correction while executing the project to deliver success?

In his paper ‘The use of systems development methodologies in practice: a field study’, B.Fitzgerald observes that the ability to select the right methodology, processes, and practices comes with experience as show in this graph.

Experienced team members understand that it is very important to customize methodologies and make them context-driven. Also, they need to understand that collaboration, focus on continuous improvement and balancing discipline and evolutionary paradigms (such as agile) are necessary. Is there a way to bring in this realization at an early stage?

In 2008, a celebratory panel took place at the 22nd International Conference on Object-Oriented Programming, Systems, Languages, and Applications in Montreal. The topic of this panel discuss was “No Silver Bullet” Reloaded – A Retrospective on “Essence and Accidents of Software Engineering”. An interesting observation by one of the panelists (Ricardo Lopez, Principal Engineer, Qualcomm) said,  "Striving for excellence is the real silver bullet that will deliver an order-of-magnitude improvement through growth, both personal and professional. The silver bullet must come within, rather than without. WE are THE Silver Bullet – which we achieve by professional excellence.”

Striving for excellence is required at personal level, team level and organizational level.

With this background, where do we start? How do we ensure success?

We need to start from colleges and universities. Timely revision of syllabus is required. There has to be more than one stream (for example, one for those who want to pursue research and another for those who want to work in the industry, etc.). Students need to experience how methodologies, standards and models apply in group projects. These are few among the list of 15 suggestions to us.

How about a positive change at an early stage? Let us make engineers at all levels understand that it is very important to customize methodologies and make them context-driven. Let us nurture the culture of collaboration. Let us improve the focus on continuous improvement. Let us spread the realization that discipline and team work are essential.

It is hard to build software applications or products, which can stay long and satisfy customers. However, creating such applications or products requires excellence in terms of individuals, collaboration, team work, focus on continuous improvement, understanding customer needs and several such factors.


Anand said...

I agree. However, you've not answered your original question, neither in the Part-1 or Part-2 of your blog. I assume the answer, since it's a no-brainer. I would just want to add a little to what you already said. You've stressed enough on the need for positive change at an early stage. I say, you need positive changes ( a chain of that), at all stages - not just the early ones. I've seen people losing focus, and purpose in the course of their employment, or life at large. This is the single-most important reason why we (the team) fail.

What next? Know when we failed - many of us don't have that keen eye to identify failures. This ought to be treated more importantly than identifying and celebrating successes.

Raja Bavani said...

Thanks Anand! Good points! Yes, I have not articulated the answer directly. I have hinted in some places though. I trust readers will think through and find the answer.

I agree. We need positive changes at all stages. Also, we need to identify failures in a timely manner. Retrospectives in agile methods are meant for this. Failing early, learning from failure and continuous improvement are essential.

Karen Favazza Spencer said...

It is all in the definition..... there is a silver bullet, and it has been consistent since time immemorial. Margaret Mead expressed it best in two concise statements:

A. "Never doubt that a small group of thoughtful, committed citizens can change the world. Indeed, it is the only thing that ever has."

B. "Always remember that you are absolutely unique. Just like everyone else."

Agile taps into both concepts. Once we really accept these concepts, the details fall into place. I tried to connect that high level view with the details when I wrote "A to XP: The Agile ABC Book".

Raja Bavani said...


Great points! Thanks!