Update 3/18/2013: This was almost a year and a half ago, and while I may still agree with parts of this, it was more of a brain dump at the time, and I no longer agree with some of the statements. I’d thought I’d leave it unedited though.
For the last few months I have been seriously contemplating leaving my job to start my own company. I have a nice job at a large corporation doing software development. It pays a decent salary with excellent health benefits. My job isn’t overly stressful, and I don’t work obscene hours. The people are nice to work with, and many of the projects that I have worked on have been interesting. Many people would think I would have to be stupid or crazy to quit in the middle of our current economic situation. Maybe this is true, but I felt it was inevitable. Being in a large corporate setting has many benefits; a steady salary, health benefits, 401k, etc. But they also have several negatives.
Being part of such a large institution often restricts creativeness. Because of the demands of a large company, by the time a project reaches you, you will have little to say on how it should look or function. Many of my projects I was given creative leeway, but many other times it was grunt work. The nature of the department will restrict the types of software you can write as well. Occasionally you may be given creative leeway, but if they hand you 2 colors of paint, an old brush, and a piece of bent cardboard, there is only so much you can do with it.
You are also expected to be working from 9-5 M-F, even if you have nothing to do. So, many days, people will have nothing to do and still stay until 5. Other days people are slammed but then are expected to stay until 9pm. Even if your company is moderately relaxed about this, people may begin to see you as lazy, regardless of how efficient you are. You are better off rewriting a bad program several times and leaving at 5 than you are writing it once but well polished and leaving at noon. If you do end up with nothing to do, you have to stare at your computer screen at some word document or with your IDE open until the magical hour of 5pm before you leave. That guy must be a hard worker!
Another big problem is the incentive to work at your full potential (More than just 9-5). Sure, you are awarded financially once a year with a small bonus and a small pay raise, and maybe even a promotion once and while, but it is really hard to see your real impact on your company, and with a mostly fixed pay check every 2 weeks, you don’t really see any change. People with X years are paid Y. Contractors may come in getting paid twice, three and even four times as much as you, and relying on you to teach them and even do most of their work.
One guy I remember in particular had a pathetic understanding of even basic programming principles (hiring processes in corporate environments are a whole different story.) and got an offer from a sister company for 96k just because he had X years of experience! Sure, it mostly makes sense that X years of experience pay Y, but if a person can apply 2 years of experience better than another guy can do 6+, then there should be a way to measure performance even out the divide.
Instead you must go through the arbitrary year long process before you receive another raise, only 20% of the members on your team are allowed to get an decent raise, and the other 80% receive only a 0-2% raise. And most of the time office politics determine who gets what. Oh, and we also got a bonus every year for a fixed amount, based on company performance and your “rating”, again, this isn’t much of an incentive. If you want to generate better workers, do more periodic incentives throughout the year for the completion of projects. Instead what we end up with is a corporate system that rewards experience over merit. This does not motivate people to be better workers. It puts them into the mindset that you need X years of Y to receive a promotion or make X amount of money, or you need A and B certificates. This system may work best for much of the corporate world, but for me, being “comfortable” and “secure” isn’t enough.
You also have no control after awhile to choose which types of projects to work on. I got hired to do intense and challenging RCP development, and ended up working with a propriety software suite where you end up playing a game of “Where do I place this 100 line script?” (Lotus Domino, if anyone cares). I don’t regret any of it though, Domino definitely taught me about application workflow and is probably irreplaceable for its cost/effectiveness, but it definitely wasn’t the type of software dev I saw myself doing. I could have switched jobs, even within the company to something more interesting, but I what I really wanted to do is go into a different direction.
I have been wanting to do this for a long time, but I didn’t think my experience level and financial situation would allow me to pursue it. Though I haven’t been in the professional world for very long, I am comfortable with calling myself a competent developer now. I was actually kind of amazed that in my last months I could provide detailed technical information to train my colleagues on processes I have worked on, as well as consult on other projects. People were asking for my opinion and I could actually provide answers. I finally felt like I was in the position to make the change. That’s not to say that the road ahead won’t be challenging. With all my complaints about corporate life, going solo I will need to work harder than I have ever in my life to be successful. I feel like the next year will make or break my life. I think it will be worth it, either it will be financially successful or I can use the experience to put me in an area of work I would rather be. We shall see.
I put in my two weeks. My last day is tomorrow.