Why I’m Quitting Software Development
Quitting software development has been one of the toughest decisions I’ve ever made. It should have been made years ago, when subconsiously I was already feeling the need for change. But at that time I wasn’t listening to my inner self… My conscious doubts were always met with a simple question: “What else would I do?”. There was no simple answer. After all, programming really is what I know best. At that time I was completely immersed in a fear-based mentality. Now that I’ve overcome the fears and made a firm decision to quit, here are some of the specific reasons why software development is not for me:
Too much time in front of the computer == Unhealthy work-style
Eight hours a day is way too much time to spend in front of the computer screen, even if you’re just surfing the web. If you’re actually doing challenging mental work, like software development, 8 hours a day will ruin your life. When I was working on starting my own online business in 2007, I spent no more than 4 hours a day programming and felt fantastic! After 4 hours my brain stops thinking either way, and to continue working actually becomes counter-productive, there’s a big chance of damaging something in the product instead of improving it. That’s why at work I spend half of the day just surfing the web and reading my favorite blogs; it’s just safer. The feeling of being stuck sitting in front of the screen is very depressing. As the main characted of “Office Space” exclaimed: human beings were not meant to spend their lives sitting in a cube
. The worst thing though is not the time spent at work, but the time outside of it. After work I feel totally brain-dead, unable to enjoy any other activities, be it cooking or reading a book. No money can ever compensate for that. I’d rather be washing the dishes for the rest of my life than do a job that ruins my health.
Lack of contribution
To be frank, I don’t think I’m providing that much value to the society by writing software. The computer and internet revolution is over. The vast majority of business processes in large and medium-sized companies were automated years, if not decades ago. There are no new breakthrogh features in most software packages since the late 1990’s. Just take the operating system, what changes do you see when you install Windows Vista? New icons, new animations, new menu and navigation structure? What is the value of all these superficial User Interface changes? What tasks can I accomplish that I couldn’t do in Windows XP? Out of the previous six jobs that I had, only one involved writing software to automate something that wasn’t automated already. That was my first job, while still in college, to create an electronic library card system. The rest of the jobs involved rewriting already fully-functioning software, to add some more bells and whistles or to change it to a more fashionable design. Very little value is provided by these incremental changes. I feel like doing something more useful with my life.
Too much hype
There is still an enormous amount of hype going on in the software business. Understandably, during 80’s and 90’s breakthrough technological progress was made in computer hardware and software. Of course everyone was really excited about these changes and the pace of change itself. People, wake up! These times are long gone! We are not witnessing the birth of IT here!
These days building software is no more exciting than building residential subdivisions. The basic technologies have pretty much settled and have been standardized for over a decade. In web development, for example, the user interface is made up of HTML (maybe some Flash), middle tier could be programmed by any language from C# to Java, and for back-end you can use databases like SQL Server and MySQL. These are basic concepts, and making an architectural decision of which building blocks to use is no more exciting than deciding whether to use steel or concrete for the building’s walls during construction.
The marketing departments of large corporations, of course, want you to think otherwise. Every couple of years they keep coming up with these new cool-sounding acronyms like WPF, WCF, XAML, Silverlight, etc. They try to hype these technologies up and make you believe that without using the “latest and greatest” you’ll be missing out by staying “behind the curve”. The assumption here is that with these new technologies you will create something that you couldn’t do before. Obviously, it’s all about the money and trying to sell you stuff you don’t need. These new tools accomplish nothing more than provide you a different way of doing something that could already be done before.
Not enough common sense
I can’t tell you how many times in my programming career I’ve seen things done in a way that just doesn’t make any sense. Many programmers and IT architects read way too much theoretical books that hype sophisticated approaches, and as a result overcomplicate the solutions of achieving very simple tasks. It becomes nearly impossible to maintain the code these people have written. For example, I once had to spend a lot of time and debug through seven(7!) layers of existing code to figure out how to add a new field to a contact form that sent an e-mail and stored info in a database. This task is normally done using just two layers of code. What should’ve been a trivial task became a huge headache instead.
The worst situations, of course, are when your boss tells you to accomplish a task in a specific way. Not just any specific way, but a way that totally doesn’t make sense in that particular situation. Just tell me what to do, don’t tell me how to do it, OK? I have experience and expertise to make my own architectural decisions. Judge my work by results, not by how many lines of code I’ve written, will you? After all, the clients and end-users only care about the product functionality, not about the mountain of code underneath it.
Overpaid and underworked
Believe it or not, over the last 6 years my salary increased from $200 to over $5000 per month (after tax
)! Granted, my first two jobs were in Russia and while I was still studying in college. And surely I did get better and wiser at programming over the years (without any significant leaps in productivity however). Still, I believe that my current salary is huge. Having a relatively nice lifestyle, that is renting a nice loft apartment in downtown St. Louis, having a new car, and shopping for organic groceries in Whole Foods, I still spend less than one-third of my salary per month. And the funny thing is, my current job is no more challenging than my first one. In fact, over the last six years over half of my worktime has been spent on time-wasting activities, like reading news, just to make the day go by. Don’t know about you, but being overpaid and underworked is not my idea of fun.
Fear of being laid off
In a big corporation, you are a nobody. You are just a tiny worker-bee at the bottom of the corp. ladder. You are not unique, on the opposite, you’re totally replacable. In big companies management is more concerned with office politics than with the quality of the product you make. In addition, the people who make hiring and firing decisions are often not your immediate bosses, but your boss’s bosses. You are just a number in the payroll to them, and thus have a big chance of being downsized during a recession, no matter how hard you work for the company.
In my life, the fear of being laid off was mostly unjustified, but for some reason it always existed within me. After all, I have pretty good software development skills and should not have much trouble finding a new job, even if I’m fired. Maybe I have “inherited” this fear from my parents, who have been unfortunate to lose their jobs multiple times, and had to suffer the fear of losing their mortgaged home.
Ironically, I have never been laid off in my life, having quit every one of the previous six jobs myself. The only time I really had a big chance of being laid off was this winter, when the advertising company I worked for hit the hard times of recession. Even the director of our department told me to start searching for a new job, since there was not enough client work coming down the pipeline. But then a miracle happened. Out of the blue, a 2000–hour internal project was approved by the higher management, allowing to extend my contract for another six months. The lesson: never fear the worst-case scenario until it actually occurs.
I guess what I’ve learned about my unfounded fear is that it comes from a lack of control. If I ever have my own business with multiple clients, no single person can be my boss and fire me at their whim. Being my own boss is something to strive for to overcome those fears.
Lack of passion
You don’t have to be passionate about what you do to make money. In fact, I’m making more money in programming right now, having lost any interest in it, than I was making several years ago when starting out as a newbie. But you can’t be happy in your career, unless you’re passionate about what you do.
If you are dreading waking up every morning to go to work, something is wrong. If you are working in anticipation of weekends and vacations, something needs to be changed. If you’re waiting for retirement as a light at the end of the tunnel, you’re taking a risk that that time might never come. I’ve gone through all of that, and I know how it feels. Subconsciously, I’ve been suffering for years by being stuck on a career path that I was no longer passionate about, without realizing that things could be different. Only recently I’ve come to an understanding that staying on a path that no longer gives you joy is a choice, not a certainty. It is not pre-determined, and it is up to me to quit and explore other paths in life.
Feeding the intermediaries
In my software development career I’ve mostly worked on so-called contract jobs. The main difference between a full-time and a contracting job is that when contracting you get paid an hourly rate (eg. $50/hour) for your work and get absolutely no benefits. The nature of contracting work is temporary, that’s why companies generally pay higher rates than for full-time work. The problem is, it’s nearly impossible to get a direct contract with any large corporation. The managers inside the company who are responsible for hiring decisions don’t accept any resumes that come without an agency’s approval attached. Their favorite agency’s approval. To give you an idea of how much an agency makes, it is at least 50 % of your salary. I personally know many cases where the company was paying more than $80/hour while a contractor was getting less than $50/hour with the agency swallowing the rest.
Again, the issue is not how much money I am getting (as already mentioned, it still feels like being overpaid). The issue is that there is a whole class of people who are not doing any work, but by playing golf with the hiring managers get paid rather well. If that doesn’t smell fishy to you, if that doesn’t seem like kickbacks and corruption to you, I don’t know what does.
Working for companies, whose values are not aligned with my own
This last reason is fairly unusual, since I was able to consciously perceive it just recently. All other reasons have been on my mind for years, but this one only materialized when I started to think about the ultimate product created by a company I work for. Do I feel excited about the product, or don’t care about it at all? Is the final product something that provides real value to people, or on the opposite, something that feeds their addictions (like Coca-Cola)?
If I am a part of the company that makes money by lying and deceiving people, then I contribute to that lie and deception as well. If I am creating websites that advertise pesticides and herbicides for farmers to “increase the yield” and make more profit, without mentioning the side effects like poor health of people who consume these products, then I am being part of the corporate greed machine, where money is the ultimate metric of success. And I want none of that.