One thing to bear in mind for large scale projects:
Have *clear* requirements. Else you will get "feature creep"
Use source control!
Have a way of tracking bugs/defects
Write tests! And ensure you dont get regressions
Use a proper build system
Document how to actually use and build the system for others
jbennet
Moderator
18,523 posts since Apr 2005
Reputation Points: 1,820
Solved Threads: 600
You gain skills and knowledge by doing smaller projects first (and by looking at other people's code). This includes coding standards and debugging skills. You will also pick up modules and code snippets (and build your own library) that can be used to address specific needs when you do further projects.
If you do a relatively small project and the code is organized so poorly that you can barely understand how it works anymore; you can write it off as experience and even rewrite the whole thing if you have to. With a larger project with many modules, if you don't have a good structure and good standards to start with, then you could end up spending a lot of time creating something that you have great difficulty maintaining or changing when it's done. After spending a lot of time to create this much larger system, you would be very reluctant to throw it out and start over (but your ongoing cost if you don't could be quite high). If someone was designing and constructing a multi-storey building, you would expect them to have some training and experience starting with something small. Is software design and construction so much easier that we can just jump in and do it successfully on a large scale before spending the time to develop the appropriate skills and knowledge? I don't think it is. In both cases, I think that the end result may be something in danger of crumbling.
chrishea
Nearly a Posting Virtuoso
1,427 posts since Sep 2008
Reputation Points: 210
Solved Threads: 230