Dear future software developer,
I’m writing you this because it would have been great if someone did the same for me some time ago. I’m writing as a person that is involved in software development for over 10 years, but didn’t have a guideline along the way and needed to learn from mistakes. Let’s hope it will be easier for you.
So, are you ready for your first job? You probably heard that developers are today’s rock stars and you’re preparing to become one, no? Well, it’s not actually true. Most of the developers are just little workers, doing their little jobs in these huge corporations not really different from the industrial production lines from 100-50 years ago. But yes, you can become a “rock star” like developer if you know what needs to be done. In order to have a chance to ever get there, there are some (obvious) rules that I suggest you read and think about:
Searching and preparing for a job
First, choose carefully the company that you’re going to work for. Yes, I said “choose”, because this is one one the most important decisions you will ever make, so it’s very personal. It’s your life, you are the one that is choosing the company to work for, not the other way around. Don’t wait for jobs to come up on jobs sites. Discuss with friends, see what the best companies are and send them a CV and a letter of intent also, as your CV is probably pretty thin for now.
If you’re not in the position to choose your company, you’re not prepared yet to be a developer. Live with your parents for a while, go work for McDonalds if you need to during the day, but take also time to become better at programming. But, be careful, don’t take any other job that it’s only related to programming, not programming 100%, because it will be harder to switch after you got used to the job. The position should be called “junior software developer”.
After that, think about the company you want to work within. First, don’t go to companies that are not software development companies or, at least to have a medium sized IT department with at least 5 developers. It will be impossible to learn useful stuff there, which is very important on the first job. After, don’t get hired on your first job at a large corporation, but not a startup also. You need an environment where you will understand both the business (which is not possible for a large corporation), but still have a clearly defined structure, rules and regulations (which is usually not the case at startups).
In order to prepare for the job, don’t rely on the stuff that you learn at the university. Their job is not to make you a good developer on a specific technology, but rather to show you all possibilities in order to allow you to know what you will want to do and how to get there. So, you need to take the problem into your own hands, choose what to learn and learn it very well. First, decide what you want to do: do you want to build web applications? Or embedded? Or mobile?
After, understand the process that happens from the moment you write a line of code until the line is executed by the processor. Ah, yes…no matter what kind of programming you decide to do, learn a little bit about embedded programming if you didn’t do that in the university.
As you are learning this, don’t go into complicated stuff or learn very specific feature. Why? See bellow.
At the interview
I’m going to tell you a secret about hiring for junior developers. Nobody cares what you currently know, as it’s probably not directly applicable in their day to day activity. They only care what you can learn.
So, even if the interview seems to test your knowledge of a specific programming language, the interviewer tries to see how you think, how you make logical connections and if you understand how the technology functions as a whole.
A small trick for this 😉 When answering a very specific question with a very specific answer, don’t limit yourself to giving the answer. While you are thinking about the answer, talk loudly about what you are thinking. This allows your interviewer to follow you and understand how you think. If your thinking is logical, even if you gave a bad answer because you are missing some information in your ideas, you’ll have a huge advantage over the candidate who gave the good answer but couldn’t justify it.
At your first job
Great! You got your first job as a developer! Congratulations! But, bad news: there are 29 million of you in the world. Sorry for making you not feel so special anymore. But understand that currently you’re not, but the good thing is that you can become, if you work smart for it. Yes, I said “smart”, not “hard”. Working hard is a sign of a bad developer, not a good one.
The golden rule to remember at first job (actually to every job!) is to always be proactive. Try to understand better, to code better, to discuss more, to explain better… It’s hard to describe what being proactive means, best way to find out is to always ask your management (all levels), what being proactive means for them. Everyone will be glad to help, and even asking this is a great sign of “proactiveness”.
What I would suggest to do is coming up with original ideas on how to fix specific issues or develop a specific task. Also, to propose enhancements, both technical and business.
Secondly, derived from the first, never just sit and let the information come to you. Get up and retrieve it.
Understand the business of the company and what is your role in it.
Don’t just rely on the fact that people will always tell you what to do. Try to find risks, opportunities and propose enhancements in your work.
While coding, go in depth. Don’t be satisfied if something is working, try to understand why it’s working. You are a junior, nobody will complain if you take longer in order to understand what is happening and to learn.
Ask questions. For everything, not only programming. Understand why a task is done and how it’s related to other tasks. Understand what is the business value that your task will bring. Understand who are the clients that use the product that you are working on. Understand the purpose of company procedures: why you have to report, how arethe reports used, etc. Do networking with everyone and understand what other people in your organization are doing and how their role is helping the organization’s global objectives.
Also, please remember you’re a junior and you need to form a work ethic. In order to form a rigor and a procedural way of thinking you need to respect the rules of the company. Respect the schedule, the company rules and procedures. Respect coding and naming standards imposed by the company. Of course, it will be easy, as long as you already understood why each of them is needed. Also respect your promises: deadlines, high levels of quality, availability for others etc.
Another important thing to do at your first job is to obtain a certification as soon as possible, but only the most recognized in the industry(example: “Oracle Certified Professional Java SE Programmer” – former SCJP for Java). This will formally establish your knowledge in the specific domain and make it a lot easier to attend future interviews.
Ok, so you are working for 2-3 years at your first company, you became very efficient in your daily tasks, you understand how everything works, your employer sees you as great employee due to your proactivity. What’s next? QUIT! QUIT IMMEDIATELY! PLEASE!
As you reached this point, you reached your peak in this company. Your peak, not the company’s. The company will get more value from you the longer you stay, but this has a huge cost for you. If you don’t want to switch jobs and you still want to remain a software developer, the only option is to leave. Remember that this is IT, things change very fast. Technologies, methodologies, hardware…everything. If you remain at this company, you’re only knew more about how THIS company is doing things. If you want to grow, you need to learn more technologies, more methodologies, more teams, more products, more tools, more business, more everything.
Don’t worry, it will only get easier to get jobs as a software developer after your first one.
After your first job
So, now you are a good software developer, appreciated by colleagues. What to do more? Do more!
You are paid to “work” for the company 8 hours per day. Most employees don’t understand that this “work” is not just they are requested to do, but rather to use every skill that they have during those 8 hours to help the organization. If you do this, you’re simply a better employee and a better professional, which can help you a lot. Remember that doing this will not only help the company, but will help you also by learning and growing.
Learn a specific technology that it’s common in the field and you have the feeling it will be used for years and master it. It’s great to be known as an expert on something.
Find ways to create a personal brand . Write a technical blog, be useful, contribute on technical forums (any Java developer who doesn’t know who BalusC is?). Do everything in order for people to acknowledge your name and link it to something positive. For example, on a previous article that I wrote here, I included casually and unforced my name, Nicolae Andronic, in a part of the article. This made 25000 people that read the article, to know my name. Now, as you read this, there are 25001.
As technology is developing very fast, you need to keep the pace. See what are the latest trends in your area of expertise, analyze which of them have chances to be used in a professional way and learn about them.
I wish you the best of luck!