Before I joined Microsoft, I was a developer consultant. In that context, when you get hired on to do projects you try to find the easiest and most cost effective way to solve problems. At first, I used to build everything from scratch - if the client wanted a Point of Sale (POS) application, I'd write a custom application. It was a great learning experience building something from the ground up, but not really an effective use of my time. I'd spend hours on end trying to beat deadlines and not getting much sleep in the process.
Along the way, I had a "eureka" moment of clarity where it occurred to me that I didn't need to build all this infrastructure - it was all there ready built for me. As a coder, it easy to think on the code specific level, as you mature you start thinking on an architectural and solution level. Business people are really interested in getting business results - for example, "get a Web portal up right away!" You can solve the problem by writing the portal software from scratch. Alternatively, you can use a free portal framework and infrastructure (SharePoint Services 3.0) on Windows Server 2003 and build on top of something that already works! The delta of effort between building from scratch and customizing something that already exists is huge. For example, want a user group website? - no problem, here is a community kit available for free.
I personally think the big challenge in all this is being aware of the technologies that are available and solving problems as opposed to being tied up in code. Need to build a complicated rules engine that talks to different systems and a way to store and expose data as Web services? BizTalk Server along with SQL Server 2005 will do a lot of this right out of the box - if you look at the bottom line, it's often cheaper to buy or use a premade solution than spend hundreds or thousands of hours coding it. You might be thinking - "yeah, but I have to learn new SharePoint APIs then". The cool thing is that our APIs are well designed and intuitive. For example, if you are familiar with ASP.NET, you can write SharePoint controls using web parts. Because of the consistency, you can get up and running fairly quickly.
Some people refer to this concept as an "architectural mashup". Others call it "composite applications". Whatever the term you want to use, I think it's important to learn the skills involved in composing applications. It elevates developers as being more than coders, but knowledgeable contributors and architects. The business people (your boss or your clients) will love it because you will be saving them money and pushing out solutions very quickly.
If you are interested in composite applications, I have two resources to point you to. The first is the Unify Tour, a large Canadian tour where we will be visiting 10 cities talking about how to better integrate IT pros and developers, and the value of composite applications. You can sign up for the event here: http://msdn.microsoft.com/canada/unify/
Here is a list of tour dates and registration links:
The second resource I'd like to point you to is a new website on MSDN which specifically targets the topic of composite applications. You'll find there a bunch of resources and solutions for architecting applications end-to-end using existing tools. Here is the link: http://msdn2.microsoft.com/en-us/architecture/bb190637.aspx
A little while back, I blogged about composite applications (aka application "mashups") - how important