views:

80

answers:

2

Hey guys,

Most of the time I have been programming little apps either for myself or for the benifit of learning. Now that my programming skills are considered somewhat intermediate, I was wondering how I would tackle a large programming project.

Lets suppose I wanted to make an application that has a lot of features and is intended for the use of others and not just myself; how do I go about planning for such projects?

Do I just jump in and start coding the thing or is there some sort of recommended process?

Thanks in advance :D

+1  A: 

Some of the things your going to want to look at is a tool chain including source code control, unit testing, documentation, automated builds, continuous integration, bug tracking etc. Programs at this level become very complex very quickly. So you definitely don't want to just start coding. you are going to want to develop a list of things the program should do. Then refine this list to must haves, would be nice and in a perfect world. From this list you can start designing a database schema, screen designs, and a class structure (assuming OOP).

This book is based on web applications, but much of it applies equally well no matter what language you are working with:

http://www.amazon.com/Developing-Large-Web-Applications-Producing/dp/0596803028/ref=sr_1_1?ie=UTF8&s=books&qid=1273632445&sr=8-1

You will also want to think about communication, most applications at this level of complexity are not the product of a single person, but rather a team. As a result effective communication and teamwork, become very import considerations.

This is by far not everything you will need to create a successful product, but should start you in the right direction.

Steve Robillard
+1  A: 

Although Steve has a good recommendation, I think that answer is probably a bit beyond where you are at.

The "simplified" version of how to go beyond what you've been doing is:

  1. gather requirements from the users. Write them down in terms of required functionality.
  2. Do simple screen layouts. The main part here is just to get functionality grouped into the right areas.
  3. Build a data model
  4. Build the actual screens and tie them to the data model.
  5. Iterate with more features.

At each point stop and do a reality check. For example, do the screens make sense? Is the information organized in a good way? What areas might you have a problem in? etc.

Above all, stay in communication with the people that will actually use this product.

Also, their are two keys to a successful project. The first is to break it down into manageable portions. In other words break it up so that you can deliver each piece quickly, call that piece done, and move to the next. This will help you to stay focused and not get in over your head.

Second, work with what you know. When moving up, refrain from taking this as an opportunity to expand your coding skills. Instead, your focus here is going to be on learning project management.

After you've done one or two iterations of this, then look into the various software development methodologies such as scrum, waterfall, etc and see what they have to offer you.

Good luck!

Chris Lively