Here are some of my gathering thoughts and personal opinions working as non-outsourced employee,
System Engineer maybe fun for the start (designing and implementation stage) but things started to get gradually the same or some minor changes for every company's policies. There are still some challenging part when it comes to $$$. The hardware, software (especially licenses) the company is going to pay which account to some restriction and control you cannot implement and have to workaround on it. When everything is up and running you will be stuck in maintaining and supporting stage. If you are not that kinda wanna just spending time doing administrations and waiting for new changes to come, then that is a job for you but not for me.
For Software development, there are tons of things to explore and different ways of expressing your codes. You just need your main development tools and fire up the program and start working. I always believe in this sentence,
Users should control the software how they want it to be and NOT software should control the user how it want they to be.I have encountered this many times before usually its more to the vendors not able to get the exact requirements from the users. Ya, especially when it comes to after-sales support, they will just put you into low piorities and ditched you aside. To make it more worst is that, you paid for maintainance fees and it take days to get an email reply and give you instructions to work on it. If the problem is unable to solve it will take another days to get it done or you might not even get a reply from them. Even if you call up the support, if he/she cannot provide it, they will tell you they will look into it and call you back later. (which means no reply from them)