Experienced programmer, novice designer. Please help!
December 2, 2008 12:05 PM   Subscribe

Tips / resources for designing / implementing and application from the ground up?

I am a fairly seasoned C# programmer from a systems admin perspective - I started with python and moved to C# for scripting purposes primarily, and lightweight development.

What this leaves me lacking is ANY experience with design, forethought, and really truly planning out any application.

And now a coworker and myself have something we'd like to put together, but I'm looking for resources, tips, advice, etc on how a novice should go about designing the application from the ground floor.

What should I be looking into? Are there any worthwhile web resources? If not (I did not find much), are there any particularly good books out there?
posted by yarrr to Computers & Internet (2 answers total) 1 user marked this as a favorite
 
Best answer: Well, first of all, in my opinion software development is very much a learn-by-doing field so you'll probably make a lot of mistakes designing your first major software project just because you've never done it before. You should be able to learn from you mistakes, though, and as with any software project the code can always be rewritten.

Specific to C# development, you'll probably want to read up on Obect-oriented design. Most of the language constructs are built around the assumption that you'll be doing things the OO way, so things will tend to be easier if you choose to follow the rules. You should also read up on design patterns, which are generic solutions to common design issues.

Most of the material you'll be able to find on software engineering and sotware development methodologies in general will assume a larger team than two people, so most of it won't really help you very much. UML, for example, is very useful for describing OO design structure to other people, but if there's just one other person on your team it's probably overkill. Agile methods, which focus less on planning everything out ahead of time, might fit your needs more. I personally think agile development is better in general, because in my opinion it's easier to write flexible code and respond to changes than it is to plan everything out so that few changes are needed.
posted by burnmp3s at 12:36 PM on December 2, 2008


Response by poster: Thank you for the insight! I am well versed in OOP, I have strayed a little bit from JUST scripting!

UML is something I've been toying with utilizing, it seems it could have the potential for making teamwork a bit easier, but also we have a decent bit of documentation of the code structure as a result. Might be overkill though, who knows? (not me!).

I'll do some reading on design patters / agile methods - neither of which I've looked into previously.
posted by yarrr at 12:56 PM on December 3, 2008


« Older How do you cope with the public loss of a close...   |   Life expectancy by race. Newer »
This thread is closed to new comments.