Taking on a new programmerAn opinion shared by Chris Maffey -
Recently we have been recruiting for a new software developer, it has been an educational exercise. I would like to share some thoughts.
Advice for Candidates
This advice mainly applies to new software developers and people looking to enter the industry.
Code, code and code some more. You do not need an employer or a job to write code. Simply pick a project you want to build and build it. Or pick a new programming language or platform and do some online tutorials.
You do not need to attend any tertiary courses or get specific qualifications. Simply write code for the sheer fun of it.
If you do not like writing code then you probably need to look for another form of employment.
Link to portfolio
A great aspect of programming, especially web based programming is the visibility. It is possible to present your work to the world with very little effort. Everybody applying for a job should have an online portfolio page showing off their work. I have my personal projects listed here.
Companies selling services to customers usually have a portfolio page such as our work page.
As a candidate for a job, you are selling your services to an employer, you absolutely should have a portfolio to showcase your work. Rent a little bit of hosting space to have your work publicly accessible 24/7.
Keep this short. Potential employers have to read your CV and potential employers are a grumpy bunch that don't have a lot of time.
Your part time job at a supermarket or petrol station expresses volumes about your character. It shows an employer you are someone who can hold down a job. Just sum this employment up in a line or two on your CV, it does not need more than that.
Likewise, with education, two lines per qualification is plenty. If you did particularly well in a specific subject, mention that on a single line: e.g. A+ in year 3 database course.
CVs are something the Americans do well with their Resumes. Resumes are strictly a single page, you need to put your best foot forward.
Answer your phone
Answer your phone properly. This might sound like I am trying to be your mother, however it makes a difference to the first impression you are laying on an employer. Always say your name when answering the phone, e.g. Hello, this is Chris. I have phoned plenty of candidates lately who just answer the phone with a bit of a grunt, and it makes a shocking first impression.
Answer your email
I am surprised by the number of candidates who send in a CV but do not check their email or only check it every few days. If you are in the process of applying for a job, consider having your email program alert you when a new email comes in. If your normal email account is full of junk, consider setting up a separate email account and having this notify you when a reply comes in.
Communication (for non-native English speakers)
This is a tricky subject as it automatically puts a bias towards native English speakers. However, our job requires constant, easy, clear and precise communication. In the agile world, programmers and customers are communicating directly. We usually talk with and write to customers multiple times everyday to discuss complex topics.
I admire people getting on a plane and leaving their home to seek a new life in New Zealand, especially when English is not their first language. On arrival, many expat candidates spend a year or two in a local tertiary institution attaining extra qualifications to boost their job prospects. Personally I think their time and energies are better spent on activities requiring total emersion with native English speakers such as sporting and recreational groups. Honing English speaking skills and confidence communicating with other English speakers significantly improves the first impression you are going to make on an employer and improves your chances in an interview.
I know this is really hard. I have been an expat in Hong Kong, Korea and Portugal. In all cases I found myself gravitating towards other expats with whom I could have comfortable conversations in English.
Another touchy subject I might get in trouble for. I have employed people with University degrees and people without. To me it makes little difference to the quality of a candidate.
I have a degree and I gained some skills at university. That said, I am old. My University days were prior to the world wide web being so broadly available. Today, there are many online courses given away for free or sold for very reasonable prices.
For someone leaving school today with plans to work as a programmer, I would advise against University. Simply spend your time writing code. If you can make yourself get out of bed in the morning and write code all day for a year or two, you should end up with the skills you need to land a programming job.
Find a family friend who needs a website or application, but cannot afford to have one built commercially. Building a complete application for a friend closely mimics what you will be doing in the programming world. You will discuss requirements with a customer, build their project, get the customer feedback and improve where necessary. The fact the customer is a friend and you are building the project for free makes little difference, you gain the same skills and experiences. You can take all the time you need to look up and learn the skills required. You can build the project several times in different languages, all just to gain experience.
Learn SQL. Whatever programming job you end up applying for, it is likely SQL is involved. SQL is the only technology which is still used widely today and has been around for nearly 50 years. It is unlikely to go away any time soon. Your time and effort learning SQL, especially mastering the select statement, will not be wasted. I have written more about the importance of SQL.
This is a buzzword used a lot today. To me, a true full stack developer can take a bare metal computer, install the operating system plus all the other components necessary to make a web application work.
This is definitely something every developer should learn and practice at least a couple of times.
You may well end up working in a large team as a speciality programmer and never have to deal with underlying operating systems, databases, web servers etc. However, it is good to have a practical understanding of the pieces that are involved.
You can get a small virtual private server (VPS) from digitalocean.com or vultr.com for $5 USD per month. Setting up a VPS from scratch is an excellent practice exercise on its own and will teach you where all the bits go to make a web application work.
Expect employers to present you with a coding test. No employer should hire a programmer without finding out if they can code or not. I am surprised how many candidates apply for a programming job who have no coding skills at all. I have interviewed people who sound like experts and can convince me they are skilled programmers, however when presented with a programming test, they simply confess they cannot program.
I understand it will be daunting for candidates applying for a pile of jobs to face programming tests from many employers, especially those that expect a test before even doing an interview. Refer back to my earlier comments, code, code and code some more. We live and breath code, we do it for fun. If you cannot treat a programming test as a fun exercise, or think it is something beneath you, then maybe coding professionally is not for you.
Advent of Code
The advent of code is a Christmas advent calendar for programmers. A new challenge is presented each day in December and coders race to complete them.
My whole team like doing these exercises. Even though we cut code for a living, we find the advent of code is great fun.
I suggest anyone looking for a job spends some time working though the coding challenges. The back catalogue is available back to 2015.
After you have finished a personal coding project, put it into your portfolio then leave it for a while, weeks or months even. Then come back to the project to make sure it still works and to review your old code. You will likely find your skills have improved and you are horrified by your old code.
Spend the time to polish your old project and improve your portfolio.
This is really simple. Write Code.
You can be a coder without being employed as a coder. Coding is an art form, other artists such as painters and poets practice their art without regard for payment, especially artists who are just starting out.
Write code, live and breath code. Publish the work you have created for the world to access.
Once you have a decent portfolio started, you can say to an employer "I am a coder" rather than, I would like to write code someday.