Regardless of the field that you find yourself in, landing your first job is one of the most difficult challenges that you will face in your career. And landing your first programming job will be even more difficult, for a few reasons. But mainly, that we don't really know how to interview for a logic based job just yet. We ask you to solve puzzles, riddles and a few node traversal algorithms and you either know it, or you don't. And hopefully you don't get asked about pointers and memory allocation along the way.
Gauging skill level on a such a vast and open ended skill such as programming in 30 minutes to an hour is a challenge for the interviewer as well. Each interviewer will have their own set of questions that they enjoy asking, or that they feel are a good measure of someones success. So overall, this is a very subjective experience.
But there are a few things that you can do to help you chances at landing your first big programming job. I've tried all of these in my time and they have definitely helped me to land 2nd and 3rd interviews and eventual offer letters.
1. It's a numbers game
It never hurts to increase your odds. And the simplest way to do so, is to increase the number of interviews that you will attend. You will probably get asked completely different questions at each interview that you attend, and there's a chance that you will leave some interviews not having answered as many questions as you would have liked. It happens. You can't please everyone. Interviews are a psychological game in the end and sometimes personalities just don't match up as well. So you will need to find the right place where they do match up.
If you aren't applying to at least 1 place per day and having at least 2-3 interviews per week, then you're going slow. The current market for software engineers is growing at a relatively rapid rate, but so is the talent that is becoming available each and every month. Make it your daily practice to at least find 1 job opening that you are interested in and to submit your resume and keep track of each and every one. Keep an excel sheet of your interviews along with contact numbers and progress updates. This is also helpful in determining just how much time you will need per week for interviews.
2. Show your work
I've interviewed many programmer's in the past at previous jobs and while not required (of course), having something to show is arguably better than not having anything to show. There should be no reason why a senior web developer should not have at least a splash page with their name on it and a hello world h1 element. This is important for a few reasons, but mainly that you are not the only candidate interviewing for any position and standing out in some way will help to make you more memorable in the long run.
This also has the added benefit of introducing a new topic of conversation during your interview. You might not be able to answer very strongly about the latest trends in design patterns, but you will probably do a fantastic job at discussing your current projects and how you went about building them. This steers the conversation in your favor. As someone who has had the privilege of interviewing many a developer in his day
3. Be flexible with your salary requirements
You read tales all the time about how a brand new developer who finished a 3 week course just landed his big job for a low 110,000$. I'll say this, in my experience, this is not very likely. Not impossible. But not likely. I've known very few developers who have broken through the 6-figure range in my 10 plus years of experience. And most of them have been very skilled and can engineer and manage large scale projects with little outside assistance. Unless you work for high profile companies that is, but then a few weeks to a few months of coursework probably won't qualify you for a position.
Be willing to negotiate down, but also be aware of the salary trends in your particular city. There's no reason why you should be earning in the bottom 5% of developers in your area, but there's also no reason why you should be earning in the top 5% either. As long as you are comfortable with an agreed upon number, then use that as your current foothold until your skills increase and you either climb the ladder or you take on a more challenging role elsewhere.
Programming salaries can vary greatly based on a multitude of factors, such as location, title and the size of the company that you are working for. My salaries have never been too aggressive as I normally favor the company culture over an increase in overall salary. Personal choice of course in this regard and dependent on many personal factors.
4. Learn from your mistakes
You can only improve in life when you fail at doing something. That's what improvement is. It's the correction of some event that didn't go as planned. So learn from each and every interview that you partake in. Remember the questions asked and write them down somewhere. Analyze how you could have answered them better. Run through any live-coding questions that gave you trouble and be sure that you have an answered prepared for the next time that question pops up.
Personally speaking, the first dozen or so interviews that I took a part in were a difficult and anxiety ridden time. I was meeting with people that had been in the field for decades and attempting to answer questions that I had never encountered in my life. In the end, what got me the job was not my overall skill level, but my ability to answer the questions in a way that showed that I was motivated and willing to work myself up in the tech world.
Answering a question about a for loop isn't overly excited, but you will probably need to early on. How you answer the question and how you steer the conversation might not always be up to you. But how you choose to answer the questions completely are. So answer cheerfully and humbly until that one perfect interview comes your way.
Thumbs up if you enjoyed this post!
Suggest the next blog post
Walter G. is a software engineer with over 10 years of professional experience. When he isn't blogging or being a CTO he enjoys coding randomly complex things that he hopes many people will get a chance to use one day.