Click here to Skip to main content
6,635,885 members and growing! (16,517 online)
Email Password   helpLost your password?
Development Lifecycle » Work Issues » General     Intermediate License: The Code Project Open License (CPOL)

7 secrets for delivering successful software projects

By The Code Machine

This article discusses a few key points which can make or break software projects
Windows, Visual Studio, Dev
Posted:28 Oct 2007
Updated:29 Dec 2007
Views:9,379
Bookmarked:8 times
Unedited contribution
Announcements
Loading...
 
Search    
Advanced Search
Add to IE Search
printPrint   add Share
      Discuss Discuss   Broken Article?Report  
7 votes for this article.
Popularity: 1.80 Rating: 2.13 out of 5
4 votes, 57.1%
1

2
1 vote, 14.3%
3
2 votes, 28.6%
4

5

Introduction

Folks in software development often discuss reasons for project failures, why it didn't finish by the deadline, why the quality of the deliverables wasn't great, so on and so forth. In this article I will be sharing some thoughts which may or may not be part of any fancy software development methodology. It is just pure experience. And also please bear with my English :-).

7 Secrets to Successful Software project delivery

Software development is fun as long as the ship is sailing smoothly. The moment a major problem comes up, the ship starts to sink. There are many reasons, both technical and non-technical, that can be attributed to failures. There are some best practices which can help us avoid the trouble in the first place.

1. Having Experts in the team
2. Good Communication
3. Team bonding
4. Understanding the target market
5. Blitzkrieg Programming
6. Testing your own stuff
7. Reject change requests

Having Experts in the team

This is simple. A mediocre team will produce a mediocre product. Having experts in a team delivers results faster and with good quality. Even if you have excellent entry level developers, you need experts to guide them. Academic excellence needs professional guidance. Along with the experts in the team, always include mediocre people with great attitude. Give them tasks which require them to interact with the experts on regular basis. They will learn a lot from the experts. Who knows they may get motivated when they get to know how the expert himself/herself became an expert. After all, nobody is born expert. This way you can build your army of future experts.

Good Communication

In a good team, even a minor change (e.g. in requirements, design or implementation) is communicated in advance to everyone in the team. This warns and prepares everyone for a probable calamity. This avoids "Tsunami effect" (A minor change at one place can cause a big issue somewhere else). Otherwise a minor change can later cause major rework elsewhere, which surely brings a project closer to its dreaded end.

Great communication definitely doesn't mean long meetings or using complicated software tools. It has to be done in way that practically requires no schedule changes. Unnecessary activities kill productivity.

Team bonding

On a more personal note, it's very important for team members to enjoy each others company and always be comfortable in the group. Personal understanding among team members surely helps the project.

Understanding the Target market

Its extremely important for the development team to understand the market for which the product is being developed. Questions like, why to develop this product, who is the end user, how they work, what the end user might be looking for in the product, other than what is mentioned in the requirements specification. Marketing people will get the requirements specs but development team must feel those requirements when developing the product. This applies to all the people on the project. Team should also understand the risks the users might get into while using the product being developed. E.g. a team working on banking application has to be careful about the security of data being handled and manipulated by the application. A lot can be at stake. On the other hand, a team developing a game won't have such issues.

Rapid Prototype Programming

This is my favorite. It essentially means to complete a prototype in shortest time possible. Prototype is something which proves whether the suggested design or implementation approach is feasible and/or worthwhile. Since it may or may not get included in the final product, time spent developing it must be minimized. Use open source code (You won't ship it, right!). Rewrite it if the prototype is accepted. Use third party softwares. If possible use their trial versions. Simulate everything you can and reduce the total prototype development time.

Testing your own stuff

Developers can't imagine presence of bugs in their code, unless the product goes to Test and Validation and truck loads of bugs are sent back. Well, statistics show that if bugs can be identified early in the development cycle, costs (in time and money) can be reduced. The key to testing your own code is to be "brutal" about it. Make it a game, as if for every bug you find, you are going to reward yourself with something. This will make your life easier during the last phases of the project. You can't be lenient when testing your own stuff. How you do the testing is up to you. You can write your own test plan document, use existing ones, automate the test procedures etc.

Rejecting frequent change requests

Having a brave manager with good negotiation skills always helps. The person should have the courage to say "No" to frequent change requests. As a general rule, a new change request should be rejected by all means and pushed back with evidences on why it should not be done. This puts the customer (or marketing people) into a situation where he/she needs to think over the change again. Let them convince you why it's important rather than just accepting it easily. Key to this is not be show any arrogance and be prepared to defend your point. Of course don't fight if you think that the requested change is a valid one.

Summary

As I said earlier, these are just my learnings from experience. Do let me know what you think.

License

This article, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)

About the Author

The Code Machine


Member

Occupation: Software Developer
Location: India India

Other popular Work Issues articles:

Article Top
You must Sign In to use this message board.
FAQ FAQ 
 
Noise Tolerance  Layout  Per page   
 Msgs 1 to 4 of 4 (Total in Forum: 4) (Refresh)FirstPrevNext
Generalwhat were you expecting using Wingdings ? Pinmvptoxcct7:46 29 Oct '07  
AnswerRe: what were you expecting using Wingdings ? PinmemberThe Code Machine8:02 29 Oct '07  
GeneralWingdings is the secret to success? PinmemberTodd Smith7:45 29 Oct '07  
AnswerRe: Wingdings is the secret to success? [modified] PinmemberThe Code Machine8:07 29 Oct '07  

General General    News News    Question Question    Answer Answer    Joke Joke    Rant Rant    Admin Admin   

PermaLink | Privacy | Terms of Use
Last Updated: 29 Dec 2007
Editor:
Copyright 2007 by The Code Machine
Everything else Copyright © CodeProject, 1999-2009
Web09 | Advertise on the Code Project