tags:

views:

119

answers:

6

What resources can I draw from to make architectural decisions for a large software project. I'm not looking for a holy war of which set up is better - but good resources to learn.

When I refer to architectural decisions here I mean choosing a thick vs. thin vs. web-based client, different stacks for the server, etc.

e.g.

  • a Java server with a Java thick client
  • a web-based front end with some kind of server (.net, java behind it)
  • PHP
  • a Mozilla XUL client application communicating with some kind of application server
  • how to layer the server architecture

Remember, the question is for a RESOURCE to learn about making these decisions.

+8  A: 

The best resource is a programmer with plenty of experience in the area.

Mark P Neyer
I was going to answer the same.
zoul
Me too. Experience is precious, and you should respect it, even if it comes from yourself. I can't tell you how many times I've had seen a punk kid disregard the advice of a wise hacker, but I can tell you that the results have never been pleasant.An experienced programmer or group of programmers that know your domain, problemset, and situation well is absolutely the most useful resource out there.
cookiecaper
zoul: me2 .........
ammoQ
+2  A: 

What resources can I draw from to make architectural decisions for a large software project.

  • Your experience
  • Team contribution
  • All available community wisdom (design patterns etc.)
Developer Art
A: 

Ultimately what you will want to do is to write down the various major requirements and constraints for the project, and sketch out how you expect the hard parts of the requirements may be implemented.

Once you have this list, then sketch out the architecture of what you expect will be needed for the requirements, then use the constraints to reject what violates your constraints.

What frameworks/languages/platforms your group knows will be a major constraint, and should be the first filter, unless this is a research project, where it doesn't matter.

James Black
+1  A: 

I would say that experience is one of the biggest teachers for this kind of stuff.

Technology, to me, is less important than the technique of doing things. If my technique is sound, I could write an ETL using BCP and DOS commands that would work just about as well as something written in SSIS - admitted, it would be more painful, but it would be very effective.

I'm sure people see a lot of cases where it is not the technology that limits the solution to a business problem, but rather the lack of understanding of the base problem and the quality of the techniques used to provide a solution.

Raj More
+1  A: 

The book "Effective Enterprise Java" by Ted Neward is a valuable resource, even if you are not working with Java. Includes a lot of stuff to think about enterprise systems.

Also check my answer on design patterns books.

As everyone should know, experience is your most valuable asset. But the most experienced and skilled programmer still will face scenarios where you can't make analogies with something you already has done before. IMHO, experience techs you to be really good at applying common sense. Once you have enough experience and wisdom at common sense, keep learning from books, podcasts, co-workers, IT events, StackOverflow and any resource that gets into your radar of interests.

Also check Microsoft Patterns and Practices. Even if you are not working with MS stack of technologies you will find valuable insight there.

JuanZe
Independently I found the Microsoft Application Architecture Guide. (http://msdn.microsoft.com/es-ar/library/dd673617%28en-us%29.aspx) I see that it is linked on the Microsoft Patterns and Practices site - that seems like an excellent resource. Good tip.
pc1oad1etter
Yes, absolutely. When I pointed out MS Patterns and Practices I was thinking on the different application archetypes which are covered somewhere in that huge source of information. I'm glad you find it useful.
JuanZe
+1  A: 

I found Ted Neward's Introduction to Pragmatic Architecture series. Thanks to JuanZe for pointing out this author.

pc1oad1etter