Sunday, August 17, 2014

Why applications succeed/fail

This is probably one of the fiercest debate in software development that why some application development succeed and why some application development fails. There are all sorts of philosophies around this. It's common to hear that if you use Framework X in place of Y the application development will succeed. Than there is a set of people who will talk endlessly about processes. How by adopting Process X in place of Process Y will help the organization. The moving variables in case of software development are immense.
Personally I feel the most important element of success and failure are the people. It's you and me. I
am not saying that other elements are not important but beyond everything I believe it's the quality of people in your system which is a big factor in deciding the success and failure. Good technology in the hands of bad people is worse. It will bring catastrophe faster. Also when I say bad, it's not in the sense we understand bad. It's in that particular context that the set of people are not having the right temperament. They still are good human beings to have a beer with. Understand that fine difference.
However the right people itself cannot do the job. Than I think the next important thing to concentrate on is structure. Structure in simple sense is a hierarchy in which people are placed. However please do care that this hierarchy is more than the departmental structure. I try to see this structure more by drawing a communication link diagram. Which all stakeholders are connected to each other in terms of communication. Also make sure the customer is connected to right people without too many loops in middle and not too much connected to get restless every morning.Each stakeholder should get right amount of information. Not more nor less.
The next important thing to take care is processes. How the things flow into the system. Software can again be looked from the perspective of traditional input output cycles in a manufacturing industry. What processes are involved in converting the customer requirements into stable features of the product. How the requirements are captured, the quality of requirements. Who approves them? how it is incorporated into functional descriptions, designs and implementation? How it will get tested?
Getting the triangle (if you want you can call it circle ) of People, Structure and Process are I believe key things in making a software development successful.
Where technology sits in the whole scenario. Technology is important and should be looked from two aspects. The capability of technology that it can deliver and this can be answered only in the context of a project. You would not want to write web application in C++. The other aspect is the productivity that technology can bring. This is where the frameworks shine. A web application can still be written in JSP and servlet but using one of the framework will definitely save you on time and time is money.In your hunt of framework keep the people's skill set in mind. Also beware of analysis paralysis syndrome. Pick a reasonable one and spend more time in mastering it.
Last but not the least put the following in your development environments:
- Good IDE
- Source code control system
- Build tool
- Issues/bug tracking system
- Continuous Integration System
- Testing tools (including Performance)

No comments:

Post a Comment