The path of the programmer
I know a girl that often asks why programmers always look so happy. The answer is simple and baffling: they have jobs that they love and they have a lot of money.
Welcome to the world of programming!
Programmers make good money
Let me start by telling you about programmers' salaries. How programmers' salaries work, and the best and worst places for them to work. All the contradictory information out there can make it difficult for a non-programmer to figure all this out alone.
The main factor influencing how much money a programmer makes is not his or her skills. It's where he or she works. One programmer may be paid 2 to 10 times as much as another programmer, even though they both have the same qualifications!
Your qualifications remain fairly constant from moment to moment. For example, a programmer doesn't become twice as experienced in one month and then somehow expect to earn twice as much money. But you very well could change your place of work in a month and end up getting paid twice as much as you were before. Of course, I'll never forget the time that my wages tripled in just two months, but that's a story for another time.
Now, let's discuss the best places for a programmer to work.
There are three factors that most influence how much money companies pay their programmers:
1) Whether the employer is a software company, i.e. a company whose main product is software
2) Whether the company is focused on international or domestic markets
3) Whether the company's owner is foreign or domestic company.
It is important to pay attention to the location of a potential employer when considering how much you want to get paid for developing software. For example, if you live in Dresden, you might get paid ten times less to develop software than your friend living in New York. When this is the case, the factors mentioned above are at work.
Since salaries are different in different parts of world, I propose to take the salary of a senior java developer with 5 years of experience as a starting point and call it the "5 year maximum". All figures below will be given as a percentage of this amount. Here are some examples of "5 year maximum" salaries in different cities of the world:
|City||Senior Java Developer, 5 year experience|
|San Francisco (US)||$160 000|
|New York (US)||$125 000|
|London (UK)||$120 000|
|Berlin (German)||$110 000|
|Kiev (Ukraine)||$40 000|
|Bangalore (India)||$31 000|
Below it is shown how much a Senior Java Developer with 5 year experience may earn depending on the company he works for:
|Level||Salary, % of "5 year maximum"||Description|
|1||5%-10%||At the lowest level of pay, we have firms whose main product or business is not IT. These companies are state-owned and typically focus on the domestic market. For example, the IT department of a tax agency or other state organization.|
|2||30%||Below average – IT departments at various non-government establishments, (e.g. banks, etc.).|
|3||50%||Average – software development companies.|
|4||80%||Above average – software development companies with foreign clients.|
|5||100%||At the very top – software development companies whose clients and owner(s) are foreign entities. There are very few such companies. They rarely have job openings, and it's usually hard to get these jobs. However, they do come up from time to time.|
What's the strangest thing about this?
Half of all programmers work for Level 1 and Level 2 companies.
Would you like to know the catch?
There are hundreds of openings at Level 3 and Level 4 companies. They are willing to offer higher wages and usually much better working conditions.
I know two junior Java developers: one of them got a job paying about 3% of the "5 year maximum" (at a Level 1 company), and another got a job at 30% of the "5 year maximum" salary (Level 4). Why earn less?
The demand for good programmers exceeds the available supply, so there's no point working as a programmer for companies that don't pay very much!
Conclusion 1: Average salary for Java developers (with any experience) is 40%-50% of "5 year maximum" salary.
Conclusion 2: Your average salary in 5 years will be about 90%-110% of the "5 year maximum" salary if you go to work for Level 3/4 companies instead of Level 1/2 companies.
What can you make if you don't stop?
Additionally, if you continue to improve your programming skills by constantly investing in your programming education, then the amount of money you make, starting from today, will grow as follows:
0-3 months (Student)
You know little about programming. Perhaps you've already learned a bit about programming in high school and/or college, but your knowledge is only superficial.
Your task – Learn how to program by studying the Java programming language.
Your goal – Get a job as a junior Java developer at no less than a Level 3 company.
Keep in mind, that during the first three months of the plan, you won't get paid anything. You will only be focused on learning Java.
Also keep in mind that in the future, when you have a family and perhaps a lot of financial debt, it'll be much harder to change your career. If that happens and you end up wanting to correct your mistake, you'll have to save money for a year to finance your career switch. The take-away is to avoid stupid career mistakes.
3-15 months (Junior Java Developer)
By this point in your career, you should be working as a Java programmer. Your understanding of the language and programming skills should be getting better every day. But this is no time to relax. You have more to learn before you can rest on your laurels.
Your task – Learn the technologies you'll need as a mid-level developer. What technologies are those? The world is changing. Let me give you some advice. Find some job openings posted online for Java programmers and look through the job requirements. I also suggest that you read Bruce Eckel's book, 'Thinking in Java'.
Your goal in your first year of work as junior Java developer is to grow to the level of a mid-level Java developer. No one says that would be easy, but that's possible for a goal-oriented person. It will instantly increase your salary to 40% of the "5 year maximum" ($64K for SF and London, $12K for Bangalore).
2nd year of work as a programmer (Mid-Level Java Developer, Level 1)
You've worked well in the past year and now you're are a mid-level Java developer. You can live pretty well earning 50% of a senior Java developer’s salary. You are being given some serious assignments at work and your experience is growing significantly. You'll become a senior Java developer in two or three years. No need to hurry. Your salary won't rise rapidly anyway.
Your task – Learn design patterns and read 'Code Complete' by McConnell. Improve the quality of your code and cultivate your ability to work with teams. You might make it your rule to read one IT book each month. Then in four years you'll be 50 books smarter than your coworkers. Just be sure not postpone this learning, since you most likely never have more free time in the future, especially if you start a family.
Your goal – Choose a couple of technologies you want to specialize in as a senior developer. You won't be able to learn everything anyway. It's a good idea to become a guru in one narrow field.
3rd year of work as a programmer (Mid-Level Java Developer, Level 2)
You are now an experienced mid-level developer and you're thinking about becoming a senior developer. It's pleasant as well as prestigious. Your salary exceeds 60% of the "5 year maximum" ($18K in Bangalore, $24K in Kiev, $66K in Berlin, $75K in New York). From this moment on, demand for professionals like you surpasses supply. You'll always be able to find a job in a couple of days and you're not likely to ever earn less than you do now. That is, of course, if you don't do anything stupid.
Your task – Continue to study the technologies you have chosen. Continue to work hard, not for your employer's sake, but for yourself. Ask to participate in projects with advanced technologies, such as Big Data. You'll be spending eight hours a day at the office anyway, so you might as well get paid a little more money and, more importantly, gain valuable experience that you'll need in the future.
Your goal – Get a new job. There are good people everywhere. At a new company, you'll work on new projects and technologies. Don't become attached to your desk too soon. If you're still working at a Level 3 company, start thinking about moving to a Level 4 company. The fifth level, attractive as it may seem, is still out of your reach at this point.
4th year of work as a programmer (Senior Java Developer, Level 1)
You are now a Senior Developer. Congratulations. Maybe, you did not deserve it, and you feel that. Still, my congratulations. It does not matter whether you are worthy of your position now. All that matters that you become worthy of it in the future.
I think you'll agree it's better to get a good job and then grow to the required level, rather than the other way around.
I hope you haven't forgotten my advice to read one book a month? Any student will envy your knowledge and skills now. More likely, he’ll be praying for them. Just think of it: you're making serious money, close to 90% of the "5 year maximum" salary. You're probably still young. The world is at your feet.
Your task – Reevaluate technologies you've chosen. Maybe you need to change your specialization. The world has changed, technologies have changed, and you've gained quite a lot of knowledge in past two years. What you choose now will stay with you for the few next years. It's time to choose your favorite technologies.
Your goal – Choose the area for your further growth. There are many. Too many to list, but you must choose now. Little changes today will produce big changes in the future.
5th year of work as a programmer (Senior Java Developer, Level2)
You've identified your future and are working to realize your dream. With the correct specialization and your desire to move forward, it won't be long before you'll see results. Congratulations. I'm thrilled that one more person in the world is now happier with his or her career.
Here is one more piece of good advice: People often overestimate what they can achieve in one year and underestimate what they can achieve in five years. Think back over the last five years of your life. This is true, isn't it?
Your task – Don't make stupid decisions. Don't become lackadaisical about your goals.
Your goal – Choose an area and move forward. Did you think this was the end? Remember when you graduated from school? This isn't the end – it's just the beginning.
You can grow as a technical expert (top branch), manager (lower branch), or professional/independent consultant (middle branch). It just depends on your preferences.
A programmer's career
Programming differs from other professions. With programming, you don't have to become a manager to earn good money. In many cases, a senior programmer earns more than his boss. The more experience you gain, the faster your relationship with management will transition from "worker-manager" to "superstar-agent". Programmers who know their value can choose the most interesting projects to work on or fill the most interesting job openings. Let's applaud all the programmers who have achieved this dream!
What does a person need to do to become a top programmer in high demand around the world? You'll need to have lots of experience in the latest hot technologies. How do you do that? Keep reading.
Once you get your first job as a programmer, two things will happen, possibly without you even being aware.
1. You will quickly gain work experience with real projects. One year of work as a programmer may give you much more relevant knowledge and skills than five years of university studies. This experience is often mentioned in IT job openings: "We need a Java programmer with three years of work experience".
2. You will study new technologies eight hours a day, and you'll get paid to do it. It's hard to underestimate the significance of this. Sometimes these new skills are so valuable that you might work for free, or even pay money, to get them. If you choose your projects thoughtfully, you will climb up the career ladder.
What should I choose?
If you don't know what technologies will be useful for you in the future, you might start choosing technologies based on "I like this" and "I don't like that", or "this is in fashion" and "this is not in fashion". This approach depends entirely on luck. So it's always better to know in advance where you want to end up.
There are many ways that a programmer can progress. I'll mention some of them and give you my opinion. But don't take my word as the only truth. I'm just providing a simplified look to make things clearer for you.
Be a perpetual programmer
If your favorite thing to do is write code, then you should become a senior developer, then a tech lead, and then an architect. You could also simply work as a programmer for 50 years. The salaries of senior programmers and technical leads are often more than their managers' salaries. You can't lose.
Be a manager. Lucky you, you're special.
You've gone over to the enemy. Just kidding. If you feel that you have good organizational skills, then this could be your path: team lead, then project manager. This gives you a chance to become an executive and will help you if you want to open your own business. You want that, don't you?
Hitch a ride.
If you happen to have a family and kids, you're probably trying to build a quiet and prosperous life in a country with a stable economy. You might be thinking about moving/emigrating to Canada, the United States, Switzerland, or even Australia. You have great skills and a profession in high demand. You won't have to start from the bottom, and you might start as a senior Java developer with a good salary. That wouldn't be too bad.
See all the world
Suppose you don't have a family yet and you want to travel. Upwork is for you. Find a client, negotiate rates ($20-$50/hour), grab a laptop, and work on the go! You'll make enough money to live anywhere in the world. Why not start living your dream right now?
Silly people waste their hard-earned money. Smart people save it. And future programmers invest in themselves and their professional education. IT specialists have a bright future ahead of them!