I have had opportunities to work for both models and here I'm trying to bullet-point some strong/weak sides of both.
+ Natural ability to use new technologies
As variety of projects is wider compared to the in-house, you just get the chance to apply/learn more technologies
+ Top notch colleagues with genuine interest in technology
Everybody shares interest in technology and is constantly learning. It doesn't give a chance to relax and stay behind.
+ Ability to stay focused on technology
Business models comes and go as one project changes another, but strong focus on technical architecture, design and implementation stays constant.
- "Budget first" approach
Fixed time, fixed budget approaches may affect the ability to provide quality and "extra" effort for the customer.
+ Focus on the quality of the product
My experience is that good in-house invests much more forethought and budget into all of the quality features. What for SW house is often just money to earn by building in the shortest time/resources possible, represents for in-house critical concepts like ability to compete on the market, stay in business etc.
+ Embraces creativity/innovation in the area of new features and optimization of business processes
In SW house you might hear from PMs - "Don't tell them about it, they will want it!" ([them] is a [customer] and [it] is a killer feature you come up with that may optimize some business process or save customer's money). In-house normally motivates innovation and optimization in the field of its business products and processes.
- (+?) You may face the choice - become a business guy or "GO"
That is what I faced in one of the in-house companies after 6 years of building SW for them. My business knowledge had become so more important (in conjunction with technical) that I'd have to accept more business than technical career path. I went for the "GO" choice. I found that for many people that would not be a problem but an opportunity (every problem is an opportunity in disguise, is not it? :):)).
- Technologically in-house tends to be quite conservative.
Projects in in-house may start with all leading and bleeding edge technologies, but as products has been built and people are just the same and more involved into support and gluing new features with an instant glue on top of the product, you may go 10+ years until your technology list is so obsolete that it is not even supported by vendors, and your average developers' age reaches 50.
<I should make a BIG note here, I've met in-house cases that were more constantly innovative in this area than any SW house I've met so far. But it is not a common case, I believe>
After all this, I can't really tell which one is better for me. I believe it is about quality of an organization itself at the end. I'll always prefer strong in-house to the crappy SW house and vice versa.
And a disclaimer, at the moment of this writing I'm working for a very strong SW house :):)!!
[15-Oct-2008] http://www.infoq.com/presentations/New-Alliance-Shaw-Fowler - great video from Martin Fowler and Scott Shaw on the current software challenges and issues. Sounded to me quite akin to the subject discussed.