TL; DR
Working in an industry I didn't like, quit job to work on independent projects for a few months to get a job I did like, got another job that I liked. Do what you want to do if you can as opportunities are not available forever and for everyone; however, set realistic goals. Life is short. Want something and go after it. Results may vary.
Table of Contents
Inspiration
I went to my first Startup Weekend event and had plenty of fun. However, I didn't feel that I contributed enough to the team as a software developer because my team was doing something web-based, of which I had little experience. Therefore, I decided that whatever I had been doing on the side wasn't working. I needed to step it up a notch.
I ended up stumbling on a Hacker News thread about quitting not long after. The stories of others were comforting. I wasn't alone.
Why to Quit
I didn't like the industry norms, company culture, and advancement paths at my employer. When I joined, I was interested, but I couldn't imagine doing it for much longer. Times change. Hackers have certain luxuries in the software industry that I was denied (for example, working from home). I needed to leave before the incentive to stay was too large to abandon (employer match on 401k, domain experience, etc.).
You might be able to switch teams within your company to find a better opportunity. This option can be viable at big companies but only can provide limited change and might be not different enough for your liking.
You can work on what you really want to do on nights and weekends. This allows no decrease in compensation while slowly building skills to transition somewhere. However, this can be tough and may take forever depending on what you want to learn. Consider sacrifices that have to be made in one's social life, health, etc.
You could work part-time at your employer. This is a balance of compensation with time available for your future aspirations. However, this is not always an option.
One should consider all of these options and weigh the pros and cons. For me, I wasn't making enough progress on weekends and part-time was not allowed in my employment situation. Company culture was going to be the same regardless of what team I worked on. The recession contracted the opportunities at my former employer, reducing options. Quitting was the best option for me.
Quit, Really?
Depending on your risk tolerance and experience, the idea of quitting can seem reckless without another job in your hand. That is true to a degree as risk is undeniable. However, risk is relative. The software industry offers many opportunities; there are plenty of openings. I had savings, low debt, no dependents, and felt I had the potential to do better. Life is short; don't waste it.
Many people do not have the same opportunities as you. According to the UN, almost a billion people in the world are undernourished (download the publication for a definition of undernourished). And that's just food. Consider education, security, family, health, and more essentials that we take for granted. Human history is littered with pain and suffering. If you can't save those people, at least make the best of what you have and appreciate it.
Preparation
A small amount of work needs to be done upfront before one quits. The recommendations below are anecdotal based on my needs. Adjust accordingly.
Goals? What do you need to do after you quit to get the next job? Consider multiple projects to learn several skills and open up more opportunities. For example, I wanted to do web or mobile development. Therefore, I built an application for Android with Java and an application for the web using Ruby on Rails, learning client-side and server-side fundamentals. Also try goals not strictly about programming; for instance, I started a blog to share thoughts and also demonstrate communication skills. Consider the company and role you want.
Time? You'll need time for skills development, job applications, and moving if need be. I chose 3 months, but I can't imagine anything less: 7 weeks of hacking; a month for job hunting, hacking, studying, and apartment search; and remainder for moving. In hindsight, 3 months was a bit of a rush; consider 4 to 6.
Cost? For simplicity, you should have saved at least double the expected costs of unemployed time. This allows for new costs like private health insurance, a buffer for expenses until the first paycheck of the new job (received as late as 1 month after starting), and a general buffer for unknowns. Of course, this assumes low debt (for example, typical credit card debt). If you have large loans to pay off, quitting might not be viable.
Employer Notification. Company policies vary. The norm at my employer was 2 weeks notice, but I ended up giving a few months notice to figure out my options. Holidays can screw your planning.
Health Insurance. Definitely consider your health needs before quitting as you'll be footing the bill entirely for your insurance. Forget the employer-subsidized, generous health plan. Apply for a policy at least one month in advance. Approval can happen sooner (2 weeks for me), but the policy won't start until the beginning of the month anyway (align with job termination date if possible). COBRA coverage can be quite expensive so it usually isn't practical; however, the COBRA option could be retroactive, allowing one to deal with a lapse in coverage while waiting for approval. In my situtation, a high-deductible plan for around $100/mo. was reasonable. I chose a BCBS because I didn't want to spend a lot of time shopping and just aimed for a reasonable, reputable insurer. Even though it sounds like the right plan in this scenario, don't go with short-term health insurance: it only lasts for a certain amount of time, forcing you to reapply and potentially be rejected for a condition that occurred during your previous short-term policy.
Apartment Leases. For the apartment renters that might be moving to a new job, remember that lease cancellation notices might be required as early as 60 days ahead of move-out and relet fees are at least a single month's rent. Line it up so that you can quit, do your own thing for as many months as you need in your current place, and then just let the lease expire (with timely notification of course) when you move to the new job.
Confidence. You might be the only person to have done something like this. Your friends and family might be only reluctantly supportive or even scared, disappointed, or angry that you would take such risk. Ultimately, you have to make the right decision for your life. Do your best to maintain confidence (not easy) and keep your eye on the prize.
Happy Hacking
Stick to goals. Creation is quite satisfying.
One benefit of the free time is the opportunity to experiment. For example, how do you learn best? I prefer reading light overviews (lengthy but not too complicated) and then learning things incrementally as I need to develop features or fix bugs. For Android, I read two-thirds of the developer's guide and felt it was beneficial to get started even though it was a lot of reading. For web development, W3Schools was great for light overview with various blog posts, guides, and short book excerpts as supplements. I found that some resources provided very little value despite highly positive reviews (e.g., PeepCode screencasts).
Try to give back to the community via open source contributions, blog posts, or more. For example, I found a bug during my Android development in one of the stock applications. I submitted a patch, and it was merged into master branch within 2 weeks. I put the code for all of my projects on Github for public consumption as well as for potential employers to see. It is easy to belittle these small contributions but remember that something is better than nothing.
Take the projects to completion by publishing them; ideally, get some users. I was able to get 70 users within the first week on Android Market for my song alarm application without any promotion effort. For web applications, many hosting services offer free plans. Heroku was extremely easy to use for deploying Rails applications to the cloud. Share on Reddit, HN, Twitter, and elsewhere.
Consider going to tech meet-ups to meet others with similar interest and find potential job opportunities. I visited an HN meetup and met some interesting people doing start-ups and solo adventures like myself. For a platform-specific meetup, it's best to have started working on a project to at least demonstrate your interest.
The Hunt
Job-hunting can suck. Even though it's only like 3 paragraphs, writing a cover letter seems like a pain in the ass. It's especially encouraging when sending a job application and not receiving any response ever. This time is the low point, testing whether your decision to leave was worth it or a foolish mistake. Many postings are a reminder that you still don't have enough experience. Some of my favorite sites:
- Stack Overflow
- Who's Hiring
- Monthly Who's Hiring? on HN
- LinkedIn for recruiter solicitations and finding jobs where your connections work
- Craigslist
- GlassDoor for the salaries and reviews
Ending
I ended up getting a job at a late-stage startup and am quite happier now. I got a decent compensation boost too in addition to the improved work environment and responsibilities. Quitting worked for me. Hopefully, this post is a call to action for another hacker out there on the sidelines with potential to do better.