Lately there has been some controversy about how important a GitHub profile is to get hired as a developer. I don’t think that requiring source code published on GitHub is neither helpful nor fair –you are leaving out smart, hard working people who can’t afford to work for free after their normal job, or who have to take care of their families, or who have other hobbies.
However, I noticed that some people who were trying to get into the industry were distressed about this. So I decided to write a post with the advice I would give to any junior developer or student asking me about this. I hope it can be of help!
There are some misconceptions about the industry that are really common. So what is really expected from you? What can you expect from your employer? Here are some notes about expectations at a healthy, good company. There will always be companies that will try to get advantage of you, but there are plenty of good places to work at.
What is expected from a junior developer:
- Interest and curiosity about the industry and technology you are getting into.
- Willingness to help the team. You might be assigned tasks that you might not enjoy much, such as writing documentation, tests, or fixing bugs. But somebody has to do them, and you will probably learn something out of them.
- Humility and ability to learn from senior developers. Set your ego aside and accept constructive feedback. Remember that you are not your code.
- To ask questions. If you get stuck, definitely spend some time trying to figure out the solution, but don’t remain stuck for days.
- Hard work: do your best in the time you have available for it. Don’t half-ass stuff.
- To follow instructions: if you are told to do a task in a certain way, do it. If you have concerns about the task, or the method, definitely raise them and have a discussion, but don’t just ignore what you are being told. Most of the times, there is a good reason behind doing things in a certain way –you just don’t know yet.
- Professionalism: show up on time, dress appropriately, take care of your personal hygiene, don’t make inappropriate comments / jokes at work, etc.
What is not expected from a junior developer:
- To be an expert in the tech you are working with.
- To be able complete highly complex tasks unassisted.
- To work countless hours of overtime.
- To have a big, fancy portfolio in order to get hired –you’re just beginning!
What you can expect from the company:
- To have a contract according to the law (never work without a written contract).
- The working conditions, salary and benefits that the law establishes. You might be under a Collective Bargain Agreement: find out, and if so, read it.
- To not be discriminated based on gender, race, etc.
Finding the right job
The best advice I got when I was a junior developer, came from a lady I just met:
Your first job(s) have a lot of influence in your career. Be mindful of which one you pick.
And this turned out to be very true. Be picky.
“But I need cash ASAP! I can’t afford to be picky, I need a job right now”. Yes, that happens. And if you need cash ASAP, definitely get a job. Any job. It doesn’t even have to be a tech job if it helps you to pay the bills or save for a relocation. But if possible, try to find a job that will allow you to allocate a few hours a week –and the energy to do so!– to keep searching.
Because you have to keep searching for the right job. At the moment this industry is very privileged because: 1) it pays better than the average job; and 2) there’s virtually zero unemployment –though unfortunately sometimes we do need to relocate–. This give us a better leverage at the job market. Set aside some hours each week to invest on finding the right job for you.
And once you find a job that is the right fit for you, don’t be afraid of quitting your current job. You might thing it might look bad in your CV. But you already found another –and better– job, and it will have more influence in your career if you kick ass there than quitting a job that didn’t fit and you were unhappy with after a few months.
How to know if a job is the right fit for you
Do your research. First figure out what kind of role you’d like to be at in 5-years time and which companies have that role available. Then look if they have some entry-level positions –and if they offer career progression opportunities. Sometimes you might need to ask around and/or do some online research to figure this out.
Speaking with people who are currently performing the role you aspire to in the future also helps a lot. Don’t be shy and ask for their advice. Most people like to help, and will probably answer your e-mail and/or point you in the right direction even if you cold e-mail them.
When you are doing interviews, remember that they are not just about you being evaluated, you are evaluating the company too. Ask questions about career progression, training, who you would be working with, what they expect from a junior developer, etc. Asking these types of questions will not offend anybody and are actually a good sign that you take things seriously.
Once you get the job, you will be in probation time. This depends on the country and industry, but will often be in the range from a few months up to a year. Remember that probation works both ways: if you are not the right fit for the company, they will probably let you go. But if you find that the company is not the right fit for you: let them go. Some questions you should be asking yourself:
- Do I like working with this tech / sector? Sometimes we don’t find out if we really like something until we work professionally on it.
- Am I learning? Am I receiving training? This could be either formally (i.e. you are giving opportunities to attend conferences/workshops) and/or in-the-job (i.e. you have somebody senior to ask questions to, you receive code reviews, etc.)
- Can I support myself with the salary I’m receiving? If you are struggling to pay the bills –or even getting into debt– and cannot reduce your living expenses further, it’s time to see if a job with a higher pay is available out there.
A big disclaimer here: there is not such a thing as “the perfect job”. In tech we have this pervasive culture that this is a vocational job, “work hard, play hard”, and that since we all love what we are doing, we should be ecstatic about it 100% of the time.
Even if you get whatever you think your dream job is, there will always be tasks that you must do that you will dislike:
- Maybe you get bored to death in meetings with other teams.
- Maybe you hate having to check your e-mail a few times a day –I certainly do.
- Maybe you stress a lot about meetings with higher management.
- Maybe you don’t like to dress up when visiting clients.
And it is OK. Just do it, so you can go back to do what you do best.
How to leave a company or reject a job offer
Don’t be a fool. This both means that you should stand for yourself, and that you should not burn bridges.
If after all the interviews, you get an offer and decide that the job is not right for you, don’t feel bad about rejecting it. Yes, they have spent time and money in interviewing you –and so did you–. But remember that an interview work both ways, that you are also interviewing them, and that rejecting a job offer is part of the professional world. Any reasonable person should not be mad about being rejected for a job, and any reasonable person who is hiring should not be mad about somebody rejecting the offer.
If you are working at a company and decide to quit, respect the notice period and the procedure that is outlined in the contract or in the Collective Bargaining Agreement. Speak to your line manager in person first, and then give them your resignation later that day, or the next day. Be calm, be polite, be grateful. But do what is best for you.
Working during your notice period is hard because you have your mind set elsewhere, but do your best and be professional. Don’t work overtime for free to finish whatever you were working on, but don’t skip your duties.
Do I need a GitHub profile to be hired?
No, you don’t need a GitHub profile or contributions to open source software in order to get hired.
However, when you have zero experience in the industry, having some projects you can show will help you land your first junior job or internship.
Be smart and leverage the projects you have done as part of your learning. It doesn’t matter whether you went to uni to get a degree, or to a bootcamp or if you are self-taught: projects are a core part of learning software development and you will probably have a bunch of them. Pick your favourite ones that are relevant to the position you'd like to get, polish those projects, and ship them.
Sometimes GitHub is the best place to release your project –for instance, if you developed a npm module. But sometimes it’s not: if you made an iOS app, the right place is the App Store, or if you made a desktop/web game, upload it to itch.io, and so on.
After polishing a few of your favorite learning projects, you might be tempted to keep developing more of them before applying for jobs. Ask yourself:
“Is this the best use of my time?”
Some things you should be doing before developing more projects include:
- Be comfortable with technical English. If you are not a native speaker, this should be one of your top priorities. As a bare minimum, you should be able to read technical English. If you understand spoken English, and can express yourself in a technical discussion, even better.
- Researching the industry and the companies you want to get into.
- Getting to know the people in the industry, either face to face (meet-up’s, conferences, etc.) or online (by joining a mailing list or a Slack community).
Other activities that you can do –but have less priority than the ones outlined above– are writing technical articles (this is also a great way to improve your technical English), doing a lighting talk in a meet-up, participating in a hackathon, etc.
How to get hired
When looking at job specs, remember that you don’t need to tick all the boxes of the requirements in order to get hired. Job requirements are usually over-inflated and you might have different skills that would be useful for the job. You already have a “no”, so submit your application anyways.
Put some work on your résumé and your cover letter. They should be "shiny and chrome". Do some research about how to write effective résumés and cover letters, but some tips are:
- Have somebody else (an English native speaker if possible) to check your spelling and grammar.
- Be concise. Your résumé as a junior developer should fit in just one sheet of paper. The same applies to your cover letter.
- Do customise these documents for every job to apply to. Specially the cover letter, since it's probably the main tool that will help you to get the interview.
And for the love of all that is good: DO NOT LIE.
One thing is to write your résumé the best way you can. But a totally different thing is to lie. It’s not only unethical, but eventually you will get caught and it will be bad for your career.
Definitely advocate for yourself, but do not give yourself credit for something that you didn’t do. Also, when you are just right out of school, you are probably not a “C++ expert”, no matter how many assignments you did in C++.
Once you get an appointment for a job interview, prepare it in advance:
- Again, do your research about the company. What are they working on? Which technology and tools they use? What is their culture?
- Ask about the interviewing process: how many phases it will have? What are the technical interviews like (practical coding assignment, algorithms on a whiteboard, questions…)?
- Ask a more experienced engineer (or a professor) if they could “fake-interview” you. This will help yo to be less rusty and more confident when doing the actual interviews.
- You will probably be asked about the stuff that you mentioned on your résumé or the projects you spoke about in your cover letter. Some questions you can expect are: Why did you decide to do this? What did you learn from it? What problems did you encounter and how you solved them? How did you develop (i.e. which technique you used) this feature? What was your favourite part about the project?
And this is what I have come up with! I hope was helpful, and all the best getting your first job in the industry :)