Other related issues

LACK OF KNOWLEDGE WRT IMPORTANCE OF NON-FUNCTIONAL REQUIREMENTS

When the reports say that 70% of the software systems are a failure, it is not that these 70% of the software systems don't work functionally. The reason these systems are considered to be a failure is because they fail to satisfy the Non-functional parameters like Business Objective, Time, Cost, Performance, Scalability, Usability, Flexibility etc.

As I have been training the engineers on designing of systems across different types of companies, I can say with confidence, majority of the times engineers are not aware and bothered about satisfying the Non- functional requirements of the software system.

The fact that estimations in software goes awry by more than 100% means most of the projects fail to meet the business objective( both strategic and monetary objective) along severely inflated time line and cost.

LACK OF USAGE OF STANDARDIZED MODELING LANGUAGE AND ENGINEERING PROCESSES

It is unbelievable and unthinkable but majority of the engineers still start developing Software Systems by writing code with minimal or very little usage of any "Standardized Modeling Language".

This is like building Skyscrapers by putting bricks and mortar together.

I have seen managers arguing that when we can develop systems by writing code then why draw diagrams? I have seen managers saying that using UML is a waste of time.

It is unfortunate and sad to see that although India is being looked as a global destination of software development but the quality of software engineers wrt analysis and design is extremely poor.

Although it is disturbing to hear but most of our engineers have forgotten their engineering skill and are engineers because they are fluent with English and because they are aware of some programming language.

The problem is to the extent that most of them don't understand the difference between analysis and design.

Lack Analysis and Design work outsourced to India

Most of the engineers trained my me often complain to me that what is the point learning analysis and design when most of the time they are just supposed to develop and maintain the systems.

They are right as well because bulk of the work happening in India is just maintenance and development be it an Indian TSP or the other software MNCs

During my interaction with certain customers , they said that it is not that they don't want to outsource the analysis and design work but they actually don't feel that we have the right skills and discipline when it comes to higher end work of analysis and design. I actually agree with the customer on this as I have personally seen that most of the software professionals don't even know the difference between analysis and design.

Lack of analysis and design work which would have allowed professionals to hone their skills is also the reason why most of the professionals lack this competence.

I have seen numerous software professionals with more than 10 years of experience who has never worked on a development project and have never witnessed a system with an entire life cycle of system development.

A FLAWED PERCEPTION THAT SOFTWARE SYSTEMS ARE VERY DIFFERENT AND DIFFICULT

As I very frequently interact with Software engineers across different companies, one of the very common excuses given by the software engineers and the managers is that Software engineering and Software systems are very different as compared to other streams of engineering like electrical, electronics etc.

As for the past 2 years I have been working on products dealing with mechanical, electrical and electronics based engineering, filling in different roles like a manager, designer and an implementer, one thing I can say is software engineering is many times easier and forgiving as compared to other streams of engineering.

I do agree that software systems and engineering is different from other streams of engineering but in the following respects:

  • Software systems are many times easier to design, develop and manage.
  • Software systems are more forgiving and tolerant to indiscipline and malpractices.
  • The concept of interfaces and adhering to standard interfaces are practiced very strictly in other streams of engineering.
  • Software systems don't have the concept of measurements.(the concept of measurement imbibes discipline and quantification)
  • In other streams of engineering the customer will not accept a system if the target system has a difference of a fraction of an mm from the specification while in software engineering the customer will accept the system even if 50% of the functionalities are not working correctly.
  • In other streams of engineering an illiterate worker understands that they cannot afford making mistakes.

There quite a few differences wrt the discipline and the best practices used. But as I have worked on both the sides, I can say that the root cause of all these problems lies at the customer level.

If the customers are forgiving and tolerant to these mistakes, then the engineers and workers will not be forced to get disciplined and to use best practices.

While in the conventional engineering as the customers are non forgiving and intolerant to the smallest of the mistakes, the engineers and workers are forced to get disciplined and forced to use best practices.

 
Hemant Jha
Founder - VPlanSolutions
Researcher, Trainer

www.VPlanSolutions.co.in