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.
"If you love to code, you really don't want to work in an IT department."ReplyDelete
And that sums it up. When you work for an IT department, it's a "get it done" mentality. There's little beauty in the code you cut :-(
It's bad all over.ReplyDelete
I've worked for both types of companies, including several well known brand name software companies.
The pressure to 'ship' undercuts quality. Always. Most managers don't know what good code is or good development practice, all they know is how to look at a calendar.
Frankly, having worked at both, I prefer companies who have a material business, which needs to be supported by IT/programming. Yes, the managers are just as clueless, and nobody cares about how well crafted your code is, but at least your efforts relate to something real.
Btw, being 'asked to give more of yourself' sounds a lot like a euphemism for mandatory unpaid overtime.