Getting that first programming job
Getting that first programming job is daunting. It’s hard work, it’s daunting and it can feel hopeless at times but with the right tools, techniques and practice you will get there.
When I’m interviewing candidates for entry level positions I want to know you are hungry to learn and will apply yourself to every problem I throw at you. I don’t mind what technology you have used as long as you have a strong mental model of how programming languages work and how to design programs.
Your Cover Letter is Your Best Ally
Whether you’ve come from a bootcamp or a university, you and several other candidates will have been through the same journey and done very similar projects and will have very little to differentiate yourself. Your CV will look very similar to other people, so the place where you will really grab attention is in that cover letter.
No matter how many applications you are doing and how many cover letters you have to write, tailor each and every one to the company. Include key points such as:
- What will you bring to the company, how do your strengths align to the company values?
- Why this company, what do you hope to get out of working there?
- What do you enjoy most about programming and how does this role align with that?
Showcase your ability to work independently, but knowing when to ask for help. Use real world examples in your CV and your cover letter to reinforce this. Hammer home your enthusiasm and drive more than anything else.
Although you will have similar projects to other people, really zone in on the specifics. What did you do? What did you learn? How did you grow?
Who Are You And What Are You About?
The opening paragraph to your CV or cover letter is your chance to really grab attention.
What do you think about this:
“Valerie has recently completed the 16 week intensive programming course at CodeClan. The course covers Object Orientation, Test Driven Development, Git, Ruby, JS and Java. She is looking for a role as a junior developer”.
While factual, there’s no real personal in this and I don’t get a clear sense of where the person wants to grow and develop and what they have achieved.
“In the relatively short and intense time I’ve been at CodeClan I have worked on several projects across a variety of languages. I like to work as independently as I can to constantly improve and challenge myself but love to collaborate and support others as well. I really enjoy Object Orientation with Ruby as well as full stack JavaScript development and I am looking for a role where I can continue to be supported in my growth but can hit the ground running with my existing knowledge.”
This has a lot more flavour to it, clearly expresses areas of interest and shows the strengths of the candidate and gets me interested to know more.
Projects
When we are talking about our projects we want to get really specific. How many people worked on it, what did you ship, what challenges were there for you, what did you learn.
Try to avoid listing a massive screed of technologies floating in the middle of the page like this:
“Java, C#, .NET, Visual Studio, JavaScript, Git, Ruby, Python, VB, C, C++, JQuery, Angular, React, Redux, NHibernate, SQL Server, PostGRES, Rails, Django”
Out of context this doesn’t help me as a hiring manager. What competency level are you at with each of these, which ones did you enjoy the most? We want to couple this information with the projects or work experience that it’s relevant to.
For each project, we want to say what we made, how we made it, if we completed it on time,what we learned from it / what was challenging and if we enjoyed it. If it was a team project, talk about your role in the team and highlight what a great team player you are.
Example:
CodeClan - Trainee Developer (2016)
Project 1 - RESTFul Sinatra App (Ruby, Sinatra, PostGRES, Git, MVC)
For my first project I created a CRUD app allowing users to track their daily transactions for food, fuel and other shopping needs. This was built Sinatra, a light Ruby web framework, and raw SQL (no ORM) coupled with solid OO, TDD and Git good practice.
I completed all the desired features of the app on time and added some extra features that were not in the MVP, such as a simple JSON api. As my first web development project I found this very challenging but extremely enjoyable and I feel that I know have a solid foundation in how to use web frameworks, MVC and SQL.
Hobbies
While hobbies can add a bit of flavour and personality to a CV, if they are listed as ‘I like going for walks and reading books’ it really doesn’t help to sell you. Either leave it out or tie them to your role that you are applying for e.g. ‘I love to run dungeons and dragons campaigns in my free time because it helps me to flex my creative muscles’.
Getting That Interview
Great, so you’ve written an awesome CV. Now what? Firstly, don’t be disheartened if you have to send off A LOT of CVs and you never hear anything back. It takes time. My first job I must have sent out about 100 CVs before I even got 1 email back. A lot of patience and persistence is required.
There’s various approaches you can take to try and get an interview:
Replying to Job Adverts
This is the most obvious and straightforward route. There are tons of employment sites out there like LinkedIn, CW jobs or even Twitter nowadays.
Get on these, upload your CV and apply for as many jobs as you can. There’s very rarely ever going to be a job description that perfectly matches your skills or what you are looking for, so try to find the ones that are most relevant. Don’t worry if you don’t meet all the criteria, hiring managers know they are unlikely to find someone that ticks all the boxes. It’s more of a wish list than a hard and fast requirements set most of the time.
If you know Java, you can still look at C# jobs. If you know Ruby, you can still apply for Python jobs. If you know Java, you can apply for Ruby jobs. No one should be expecting an entry level developer to come with expert knowledge in a language, really hammer home that you know the foundations of programming and pick up new languages fast.
Even if a job ad says 1-2 years experience, you can still go for it with less. Chances are they are struggling to find someone with the exact credentials anyway. If you come along full of passion and enthusiasm, you’ll still be in with a great shot at it.
On the flip side, try to avoid applying for companies that are a wild departure from your interests or skills. A robotics company is probably not going to want to hire a web developer so you’d be wasting your and the companies time.
Attend Networking Events
Networking events can be anything from coffee mornings to tech meet ups. Find as many as you can and attend as many as you can. The more people you talk to, the higher the chance of finding someone who likes you and is recruiting.
If you do meet someone interesting, see if they are up for meeting you for a coffee. It’s amazing what a coffee chat can do for your career.
Find a Mentor
If your bootcamp or university runs a mentoring program this can be a great way to meet someone that can also find you opportunities. What to ask a mentor and get the most out of the relationship is a post for another day.
Email Everyone
For my first job, I googled “Software Development Edinburgh” and emailed every single company that came up in that list, whether they said they were recruiting or not. I fired over a simple email saying who I was and what I was after, and simply asked for a coffee with them to discuss further if they were interested.
This is how I got my first job - at a smaller company that didn’t have the budget for job ads or networking, and I loved it!
Interviews
No one likes interviews. They make us feel stressed, pressured and often like we know nothing. We’ve all been there where we’ve been asked a fairly simple question and we have suddenly become a vegetable that knows nothing! It happens to the best of us. My thoughts on technical tests is a whole different discussion for another day.
Interviews are very odd situations where it’s not like other moments in our daily lives. Our ability is under threat and we are being forced to show how good we are. It’s not nice.
However, there’s a few things we can do to make it less of a nightmare.
Be Prepared
Research the company so you can ask interesting questions:
- How are they funded?
- What does the future look like for them?
- What is the biggest challenge for them at the moment?
- What tech stack do they use?
Learn a bit about the company and where it’s been and where it came from. Who is the CEO? What is their story? Have the got a blog you can read about the company?
Make sure you come prepared with lots of interesting questions to ask. You want to come across as keen and clued up about the business, so be sure to check out their website and projects in advance.
If you are using a recruiter see if they can share anything that other candidates have learned about the type of questions you might be asked so you can prepare in advance.
Interviewers Are Human Beings
Most of the time, the people interviewing us are human beings. They don’t have tentacles and they don’t live on Mars. They have also been interviewed as well, so they know how it feels. Sure, you will always get the odd interviewer who goes out of their way to make your life a misery, but that’s probably a good indicator that you don’t want to take that job anyway.
I try to look at interviews as an interesting chat with a new and interesting person. Try not to think of it as a test, think of it as a cup of tea with a new person. They have knowledge you don’t have, so it’s fun to see what you can learn. Interviews are a learning exercise, even the ones that go catastrophically wrong. I’ve learned way more from my interviewing mishaps than my successes.
If you know the names of the people interviewing you, you can look them up on LinkedIn and see what their history is. This can help you find a talking point with them.
The more relaxed and chatty you are, the better the chance you will have at getting the job. Remember, they are also looking at how you will fit in the team and if they like you or not.
Be Honest
If you are asked a question you don’t know the answer to, be honest! Tell them you don’t know, but you would love to learn more about it.
For example, if someone were to ask me “Do you have any experience with Swift?” instead of a flat yes or no, I might say “I’m afraid not, but I have done C# and other statically typed languages, so I am confident I could pick it up quickly. I have also looked at Android and I’m reasonably comfortable with how mobile development works”.
This also stands for technical questions like “Can you explain prototypal inheritance?”. Even if you know the answer, you might draw a total mind blank. It’s totally okay to answer “We did cover this on the course but I’m afraid I can’t quite remember what it is. Could you explain?” something like that, to show you are interested. Then when they explain, if possible follow up with “Oh! Yes, of course. I actually used this a lot on my full stack JS project for my game objects”.
Practice the Performance
Interviews are kind of like a performance. We need to transform into a confident, enthusiastic person who they really want to hire. This is hard and our inner critic is going to be going wild. However, with a bit of practice we can learn to do this without pretending to be someone you are not.
We need to tap into the bits of our personality that might make us feel uncomfortable. Project a bit more confidence, project a bit more enthusiasm. The key to this is practice, practice, practice. We always tend to have a different internal view of ourselves than the outside world does. If you ask a friend or colleague to describe you, it might shock you how different it is to what you think (hopefully in a good way!).
Trust yourself to be the person everyone else sees.
Communication Checklist
You’re going to be in a very nerve wracking situation and trying to do the things in this list will be challenging at first. But first comes awareness, then with practice you’ll have it nailed in no time.
- Make eye contact with the interviewer as much as possible. Try not to look at the ground or stare into space.
- Smile!
- Be aware of any “ticks” you have, you might not even know you are doing it. Do you constantly scrub your hair? Repeat yourself? These tend to get worse the more stressed we are.
- Keep your hands under control and out of your pockets. Use them to gesture when needed, but rest them on your lap or somewhere neutral otherwise.
- Try not to interrupt or talk over the top of the interviewer.
Dress For Success
Remember to wear clothing appropriate to the situation, even on a remote call. If it’s corporate wear formal, if it’s a startup go smart casual. Definitely don’t wear a onesie.
Try not to slouch or put your feet up on a table, you wouldn’t believe how often this happens.
You Are Interviewing Them Too!
An interview is a great chance to ask lots of questions about your potential employer. Make sure to ask for specific evidence of the good behaviours you are looking for so they can’t fob you off with a generic reply.
Q: ‘What is the culture like?’
A: ‘Oh yeah we have a really healthy culture and really care about our people’
vs
Q: ‘Do people work collaboratively, and is there a lot of overtime?’
A: ‘Oh no, we only hire rockstars that can work independently and are dedicated to the mission of the business. We provide meal vouchers so that staff can buy dinner when working late’.
You learn a lot more by asking specifics. Especially for a junior you might want to ask things like:
- Is there a mentoring scheme, has it been successful for recent hires?
- Who would my line manager be, have they managed a junior before?
- How do you make sure juniors are supported in their work?
Good Luck!
I hope this was helpful. Don’t let job hunting get you down - it takes time and most likely there will be plenty rejections and tears in the mean time. But if you work hard, keep learning and improving and communicate your passion and drive, then you are doing everything you can to make that first job a reality.