In an episode of Stack Overflow Podcast, Jeff Atwood made an interesting point. He spoke of the difference between companies that deliver code as their product (like Microsoft) and companies who use code to support other business interests (the IT department inside Weyerhauser for example). In a company whose business model is to make and sell software, making the software incrementally better supports the business function and is thus rewarded. In an IT department, once the project crosses a certain threshold, the returns on making it better diminish rapidly. Improving the code is often discouraged. All this has been said before. Joel Spolsky has talked on this subject as have I.
What Jeff added to this conversation was a practical application. He rightly pointed out that you need to be aware of the type of person you are and the type of company you are working for. If you love to code, you really don’t want to work in an IT department. Sure, someone will pay you to code, but you’ll be frustrated by the limitations on your work. If you enjoy programming, you want to work for a company whose job it is to produce software. On the other hand, if you are willing to program but it’s just a job, you don’t want to work in a software house. An IT department will be a better fit and you will find your career better served by working there. In an software house, you’ll be asked to give more of yourself and be more creative than you might otherwise like to.