Robert Boque has an article called Understanding the Differing Goals of Software Development on developer.com. In it, he describes three different software development environments in general terms.
Corporate Development
Robert further divides this category into two subcategories, small and large corporation. The small company basically has developers change the application until it meets the business needs. Large companies have a much more defined, and rigid I would add, process, as well as numerous applications in production needing maintenance that take away time from developers, keeping them from working on interesting new work.
I would say that the difference is not in the size of the company, but in the approach. For example, some large companies can take a “small company” approach to developing applications, continuing to tweak the existing production application until it has been beaten into shape. Some advanced small companies might take a “large-company” approach as a result of experienced management.
There is also a tendency, in my own non-scientific observations, that corporate developers are mainly interested in things other than development. Non-software corporations are generally better places to work for quality of life, with more of a 9-to-5 schedule and less pressure to be constantly updating your skills.
Pure Software Development Companies
Pure software development companies have advanced software development practices and infrastructure. Problems at this type of company include standard Innovator’s Dilemma issues. “We’ve always had this type of architecture,” or, “We’ve always done it that way” are common roadblocks to change.
I’ve never worked in a pure software development company, but I would love to work for Microsoft, which falls into this category.
Consulting Company Development
Like Robert, this is where I feel at home. Consulting software development is marked by pretty strict adherence to the requirements, whether the approach is agile or not. Software development practices and processes are generally up-to-date, if not cutting edge.
I have little to say here because I thrive in this type of environment!