After developing a billing system (pure Perl application) for a company where I work during three years I've understood that it's terrible for programmers to develop some application for their company!
I can explain why. Let's see the application for some external customer. You have a specification and if customer wants to change it you can free-hearted to charge him additional payment. Also, you can (possibly have to) do it if customer will ask you make some changes after release. Another thing is release. You have to follow a time schedule and release the application timely. Especially for me, the release is associated with a milestone. I can see the product of my work after its releasing. It's like evolution!
In case some internal application very very often there are not any specifications. Moreover, sometimes developers have a rough idea how the application will develop. Dead-line in that kind of projects is not so strong and releases are not created. Because, the application is modified often (in my case, around 10 times per day).
Also, people come to you and ask "Let's do that". Ok, you do. After some time they came again and ask "Let's do this". But you already did 'that' ( the company shouldn't pay in advanced for every addition changes). And this process is perpetual! You don't have a clear specification, you don't have releases, you cannot find satisfaction in your work.
That why I hate this kind of projects and I don't satisfy my work! Sure, it's only my opinion and possibily other people have better examples of thier work.