Wednesday 19 November 2014

Never ending software projects

I've been working in medium to large scale software projects as a developer, designer, technical  and project manager. Unfortunately, some of them despite of working, never had a chance to be released. I'll try to bring some of the most important things I found as reasons for having never ending software projects. Some of them may also be a reason for project failure too.

Final decision maker
Software development can not be done in complete democratic environment. You can not vote to use a technology or doing this or that all the time, especially when making a decision has time and money costs, there must always be a reason to do something. Even if you are going to make a wrong technical decision, there must be some financial or another reason to make that decision.

If your project doesn't have someone who has the authority or power of saying the last word then, believe me, you are in a big trouble. There are many points in software development cycle which you are facing approaches seem similar and none of them has any advantage over the others. People can't make a decision at these situations, there must be someone with enough power to do this. This guy is responsible for the decisions he makes so it is better for him/her has software background too, not just a manager with administration background.

Giving job to people who think are genius in all aspects 
I never forget a project in which some C++ developers who had just little MySQL experience where arguing on something like writing a query in this or that way. You had to have only a couple of years of SQL writing skills to choose the way the query must be written, but they were arguing and trying to discover how to write a double group joined SQL statement they were arguing about.

Someone who knows all the used technology stack 
There must be someone in the project who knows all the technologies used in the project. The project manager and/or the one who makes the final decisions must trust this guy otherwise project goes to voting or endless arguments most of the time to choose what to do in technical situations or software layer coupling.

Gold plating the software
This one is one of the most important reasons for a project becoming endless. I'll talk about it later, but for now, let's have a brief talk. It means paying more than necessary attention to something. For example focusing on choosing colors of the UI more than it requires, more than the functionality itself. Even when the project has almost finished we are trying to change the colors of the UI again.

Gold plating happens both where the user defines the requirement or developer uses technologies. The team who is responsible for user requirements may always changes the requirements to make the software better and the project manager or developers may also try to change the technologies because after a while they think used technologies are not cutting edge anymore.

Getting used to what the project is
This one mostly is the problem caused by the top managers, managers or anyone else who somehow has power over the project and usually don't have any development duty ... These guys look and check the software all the time, and as they get used to it, they try to make some changes again. Funny, no? They never let the software gets finalized, because while development team tries to close the tasks to complete the current version, they get used to the current version and want some new changes and features.

User/System requirements
Having no exact user or system requirements list which both the developer team and the owner of the software have same understanding on the items will cause problem whenever you want to demonstrate a version to the owner or product manager. Defining these requirements is one of the most difficult parts of the software lifecycle. The problem gets more serious when during the development either part tries to modify the requirements, at this time people are usually busy and the project is not anymore fresh, the other part just accept at that time, but when comes to deliver something, the war begins.

Having no deadline or no money problem
If for any reason the project you are working on it has no deadline or the company has no money problem at all, your project is facing to become one of those never ending projects. The reason is obvious, the human being is a perfectionist and if has time, never stops working on the project and if has money never sell the product to market until the software satisfy him, means never.

Product managers with shallow knowledge of software
It is a huge problem if you have a PM who reads specification sheets and brochures and thinks all they write in these papers are correct or even if they are, expects the software team to do the same in short time. The problem gets worse when they forget that these fact sheets or brochures are from big and old companies and yours is just a child one.

Weak marketing
Yes this is a problem and in fact, the reason is simple, marketing can't sell the product and always brings excuses, like we can't compete in the market, then adds new features, a never ending loop.

No comments:

Post a Comment