This post is in response to a blog post by Ali Shah, in which he talks about problems faced by software engineers, developers, and consequently by the organizations, in developing quality software. I have decided to keep the focus on Pakistan in order to keep the scope limited, because, one can write a book on this topic from a global perspective.
Why does a software project, or a product, fail? I can come up with several reasons after thinking for a while, some of which are as follows,
1. Incomplete requirements specifications,
2. Incomplete/inaccurate/inadequate design specifications,
3. Inefficient development methodoligy/process,
4. Incompetent project manager,
5. Incompetent developers,
6. Lack of quality assurance and control.
If each of the above is considered as a factor deriving the success of a software project, then, in Pakistan, all but one of the factors are either totally ignored or not given it’s due attention. The only factor that is given importance is, developers. Right from the first day of an undergraduate software engineering (or computer science) degree program, the students are taught only one lesson: Improve your programming skills. They are taught everything from advance uses of recursion to the taboo of goto command, to the most complex algorithms in computer science. Hardly any of my instructors stressed upon the importance of a good software development process, or the need for quality assurance, until I was in the graduate school. As a result, most of the undergraduate degree holders in Pakistan are very good programmers, but hardly anyone of them realizes the difference between being a programmer and a software engineer.
When the time comes that the programmer has gained a few years of programming experience, she deserves a promotion/raise. There happens to be a vacancy for a project manager/system analyst/requirements engineer (if all of these positions exist) in the company, and being a respectful programmer and a faithful employee, she is promoted to that available position, without any significant experience/knowledge in that area. This is where the problem starts. The project manager, although a hard working person, is incompetent. She doesn’t know what it takes to successfully manage a software project (in most cases). The result: the project fails, or is seriously delayed, exceeding the budget, and we need a super-hero to save the project, as mentioned by Ali in his post.
Moreover, there is a serious lack of standardization of the process within an organization (or so it seems). If suppose, after few years of operation, a company still manages most of the projects in a chaotic fashion, it’s day-to-day operations are performed in an ad-hoc manner, and finally, a miracle is needed to complete the projects, then it would be no surprise if the company goes under without a warning. There is no set rules for spending time on a particular phase of the project and the development team seems to be eager to start coding without spending enough time on requirements, analysis and design phases, which results in developing the product with incomplete or incorrect specifications, and the project ends up being over-budget.
Finally, there needs to be quality control department in every software development organization. Some of them do, but are seriously ignored and under-paid, resulting in lack of people who know about the field. Even though programmers in Pakistan are very good, they don’t follow a particular standard. Everybody write code in their own style. Even within a team, you can find several styles of code writing. This makes the debugging and modification very complex, again resulting in the failure of a project. A quality control department not only checks the final product for bugs/erros, it also enforces and monitors the coding style, and eventually, standardizes the entire development process, from concept to product launch.
It is probably because of these issues that the major projects in the US are being outsourced to India and not Pakistan.


I would agree with a few things and won’t with some other. First of all, I have read many articles all of which indicate that the problems you have specified in the beginning of your post are global (i.e., it’s the field to blame and not Pakistan).
Secondly, unfortunately we aren’t good in algorithms and computer science either. There is a general experssion of uneasiness shown by many programmers (including me) when you tell them to write, for instance, a tree control or a data grid. The first response is “can’t we download it from somewhere?”
On the other hand, I totally agree with the promotion thing. People get promoted because they had x number of years of experience and now they deserve promotion. I would like to ask the management, “Is there a defined skill set for the next level in hierarchy?” “Has the other person shown the ability to take on the challenges?” By promoting a very good programmer (who doesn’t exhibit good management skills) you are shooting yourself in the foot: you are acquiring a very bad manager and you are loosing a very good developer. I would rather advise to compensate the guy; give him a bonus; send him on a vacation; give him a free ticket to some resort; but please don’t promote him.
Lastly, the quality of India vs. Pakistan is an interesting topic. IMHO, on average we are way ahead of India in terms of quality because a large number of substandard software houses exist in India. I may be wrong but my opinion is based on the projects that get re-directed to Pakistan from India because of low quality. I have seen a few companies trying to make sense out of Indian code. I, myself, however, never worked on any such thing.
If you ask me two basic activities that can tremendously help in improving the quality of work, they would be:
-> Code Review
-> Project’s Postmortem (once we are done with development and testing)
Thanks to both of you guys, but will you plz list some practices which a developer has to follow while developing some product to enhance its quality as specified by you guys.
Mobeen, I think it takes more than just developers to make a quality software. The quality has to be maintained across the entire development process, starting from analysis to testing to deployment. However, to answer your question, developers should play their part in developing quality software by writing quality code. They should be consistent, follow the standards, and take care of small but important things such as proper commenting of the code.
Aoa omar
can u pls tell me any 3ree flop s/w project in s/w industry??
Well, I desire to be be a good software engineer. can anybody guide me what should I do to be one, remember i am looking for the best institue in Pakistan for SE. So come up with results, and show me the way to the brilliance as you all are. Consider me a younger brother and please help me out. I am pleading to all of you. Please Email me at PEACEMISSES@hotmail.com or IRFANSHAH444@YAHOO.com if you are intrested in helping a kid.
Dear irfan u should first look for ur
interest , u should first know what
software engineering is and either u r
willing to engage ur self in that field
for the whole life.
For doing ur graduation u can choose
BCSI FAST, karachi university,GIK
and or any other university of
that standard.
first of all, field of software engineering is so board that it almost enclaves every other known field from accounting to medicine. Now we all can write and make any code to work but what about following engineering design guidelines. This field is very young and will take sometime before professionals especially in pakistan, gets to realize that its not just a matter of writing a piece code. its needs analysis, design, planning and basically fitting a small component into existing infrastructure.
Usman Ali Yousaf
Senior Engineer Communications, SCADA
Consultant to WAPDA, KEMA USA Inc.
Im not a software engineer or programmer. but i just want to ask a question .have you ever given a thought to the lack of practicality in the education system of software engineering! i mean how many times have u been to a software house when u were a student.what sort of interaction did u have with real working enviroment. doctors have their wards during third year by the end of their studies they r quite familiar to their WORKING ENVIRONMENT.its not just wid enginnering!! but still… anyone of u want to say something about this………
hi,
I practiced some programming languages in my school and college age, and my mind advanced to do computer related engineering.
Now i am doing software engineering here in pakistan. while studing here, my heart and feelings are so much disorted. because universities are doing only “money collection job”. staff is not interested to teach, and what they teach is old enough. students have no concepts so they try to copy eprinted materials.
our target now is not to become a good software engineer but to have good GPAs and a degree one day.
Hi
I want to know is it possible for someone to access my computer desktop and hard drives while I am online chatting on MSN or IRC?
I am using window visa .
Fatima
Pakistan
HI,
I want 2 asked that from which university or insitute I start software engineering ???
plz tell mee complete process ..!