I know a lot of amazing programmers who have been working for about five years, yet they still make less than $100K. I don't want to end up like them in my career and I was wondering how I could set my career path to earn more.
In answer to the general query for advice:<p>Short version: program things which make your employers lots of money, and get in the habit of mentioning that repeatedly when you negotiate aggressively for more compensation. Long version: <a href="http://www.kalzumeus.com/2011/10/28/dont-call-yourself-a-programmer/" rel="nofollow">http://www.kalzumeus.com/2011/10/28/dont-call-yourself-a-pro...</a><p>A personal anecdote: In 2006 I wrote CRUD apps, talked to people, and read a lot of documents. In 2013 I will write CRUD apps, talk to people, and read a lot of documents. I'll also get paid probably in excess of 10X what I made in 2006. To the extent that the difference involves programming, it's largely not because I've suddenly graduated to Guru Rockstar Ninja and more because I figured out how to apply programming to a few of capitalism's pressure points. (Mostly involving selling more software.) This turns out to be fantastically more valuable than writing CRUD apps to e.g. manage student lists for university back offices. This difference is a <i>lot</i> more important than other competing explanations like where I live, what industry I work in, or the fact that I changed from J2EE to (mostly) Ruby on Rails in the interim.<p>There are many HNers whose programming skill is a key asset to their line of work and yet would not be classified as programmers, by the way. I encourage you to not see their jobs as out-of-scope if your goals are making a lot of money while continuing to program. That's quite a bit of the solution set. (Then again, AmaGooBookSoft have many, many uncomplicated "We give you instructions, you producing working code implementing them" jobs which would meet your requirements.)
How I did it :<p>- started in a particular industry<p>- Kept working in same industry and built "domain expertise". Need min 5+, ideally 8+ years of "actual" experience.<p>- Changed jobs 3-4 times within the first 5 years. But remained in the same industry. Built a lot of networks/contacts on the way. (Job hopping is not necessarily a bad thing in today's world if you know how to do it properly). Every hop, negotiated a good raise (15-20% in US is good raise). I always sold myself using the "value" that I was already bringing to the table because I was in the same domain doing <i>specific</i> thing that the next employer really <i>needed</i>.<p>- Finally after 5 years of solid experience, decided it was time to go consulting on my own. Started talking to all my contacts in the industry where I was already known/valuable and started somewhere. Charge flat Daily rate and take care of your own expenses.<p>- Raise your rates at the end of <i>every</i> engagement. But try and get long term engagements as well. Personally, i work on 18+ months contracts (the nature of my industry and projects). So by the time you are done 1st time, client usually wants you bad enough to give you a decent raise. Won't always work however.<p>- Never settle for less if you know your worth. So first figure out what you are worth to a prospective employer whom you are interested in or who is interested in you. Always fight for the extra few grand. Why ? Because the next time you are negotiating with the next guy, those few grands will make a difference on what number you are asking for next. People <i>always</i> look at what you are making currently unless you are an expert in your field or were currently underpaid for whatever reason etc.
Fwiw, I focused on enterprise consulting.. mobile dev, training and product design. Daily rates (no hourly). Focused on high value, high impact discussions.. converted these engagements into development agreements, licensed revenue, etc.<p>Specifically, I built mobile components and server systems for mobilizing data (spreadsheet-to-app conversions, etc). I then used these components and services to help speed up their mobile strategies, provided high quality training materials, and positioned my company for long-term revenue from licensed IP.<p>I'm currently at the stage where I have a strong client list and a marketable product, which is attracting investors, more clients, etc.<p>It's just myself and one engineer at the moment. I do both design and development for mobile and back-end systems.<p>Btw, you don't need to move to the Valley or NYC. I traveled the majority of 2011. All client work started as onsite engagements, then moved to remote.<p>Hopefully sharing this will help you in some way.
JEE. I don't even speak English well, but I have a lot of experience with Java Enterprise, something that is very useful for big companies in USA. I never worked for a company with less than a 1.000 employees tough. I think you will get a better salary working with Java if you can develop enough experience.
First, you have to know your value... and probably change jobs. Unfortunately most corporations have HR policies in place that prevent you from rapidly increasing salary unless you are promoted.<p>Second, you have to be more than a programmer, you need to be someone who can blend roles into project management, business analysis, strategy etc as well as make the people around you better.<p>Third, you need to in demand skills but maintain versatility. This is hard work. I work a 40 but I practice another 10-20 every week.
Five years isn't really enough experience to be a serious tech lead or a high-end consultant. Come back when you have ten years. The guys I know who are making over $100k WERE those "amazing programmers" five years into their career, but now they're twenty years in. I was an amazing programmer five years in as well, but I wasn't worth $100k even in today's dollars. You need more experience than that!
Are you talking just salary? Where?<p>I've been working for 25 years and haven't crested the $100K mark (upstate NY & midwest) in gross salary. But that goes a long way here.<p>However I get several weeks of paid vacation, health insurance, 401K match, profit sharing. Any other position I have looked at lately is a step backwards from that.
Enterprise rails consulting.<p>Enterprise is never going to be as sexy as working for a startup. But they do have project budgets that exceed most company A rounds. The work is not very exciting and things often have to be done in ways that you wound never even fathom on a personal project but they make up for it by paying above market rates.
Market yourself correctly. Most people don't care about doing this, so they miss out. But those who do, well, really benefit. I'm on my way to doubling last year's net profits through plain and simple marketing. Its not hard, and doesn't even take much time. Does make a world of differend (in the bank account).
Learn the management side of things, not just the technical. Get certified in project management - either PMP or Agile/CSM. When you offer value on both the technical side and the management side of things, businesses are far more apt to pay you more.
Traveling Consults make good money. Also when your young and don't have a family. Guidewire is really hot right now just not sure how you get into it if you aren't already in an insurance company.
I would like to add that you need also be the type of individual that isn't afraid to ask for what you're worth in the market. Employers will gladly pay you less if you're willing to take it.
I work in operations. In the Bay Area.<p>In a year or two, I'll be moving my family to the Nashville area, while retaining my Bay Area job, and it's pay scale.<p>One day I'll sleep again.
I'm a Python (specifically Django, currently) developer. The key isn't what you do though. It's A) being an entrepreneur (1099 > W2), B)work your ass off, and C) always ask for more but act like you have some humility in the process (don't play much hardball with dev managers...).