Let's be honest, getting your first job as a developer isn't as easy as we would all like it to be. It's a competitive field, and there's a huge amount of people trying to break into it. So how did I do it? I'll tell you, as well as provide some tips on how to land yourself a job as well. (Feel free to skip straight to the tips if you want.)
First, a little about myself, and my lack of qualifications. I'm purely self-taught. I've never paid a penny for any training or courses. I didn't have any professional experience in development, and at times, I can be pretty thick in the head. As the icing on the cake, the only college I've done was a little bit I did for my senior year of high school. Really, the only thing I did have going for me was the fact that I loved making things, and I enjoyed hacking away for hours at something, even if it was trivial.
The first time I started applying, I had (what I thought) was a decent resume. It had some experience that was almost somewhat related experience, and it also had some projects that I had made. I spent a few days sending out applications through all the sites (Indeed, Glassdoor, Github Jobs, Stack Overflow Jobs, etc.), and I did hear back from a few places. The only issue was that most of those got back to me saying I didn't get the job. I did end up having two phone interviews. For one, I even got to a code screening, which I'll touch on a bit later. Overall though, the number of positive responses I got back was incredibly slim for the amount of applications I sent out.
After I sent out the first round of applications, I took a short break (about a week or so) and rethought my plan, since it obviously wasn't working. During that time, I did some research and refactored my resume a bit (does refactoring apply to text documents as well?) I also asked the person I had a code screening with why I didn't make it to the next round (their process had quite a few tiers), and the feedback they gave me was fantastic. It was good enough that I was almost happy I didn't get the job because the feedback was so good. (TLDR: Don't be afraid to ask for feedback; you might be pleasantly surprised.)
During this interim period, I also spent a good bit of time working on my website. I made a few visual changes, but I think the most important changes were the additions that I made to the about me section and adding a projects page.
After updating my resume, website and putting a few finishing touches on a couple of my projects, I started sending out some more applications. This time, I didn't send out nearly as many, but I had better results. I got a couple of phone interviews, and from those interviews, and I landed an in-person interview with each of them. Now I was a bit nervous going into the interviews, because I had never had a formal interview before, and wasn't really sure what to expect. Needless to say, I took the time to do some research about the process and wrote down (on paper) a few questions that I thought would be good to ask. The first interview, I still ended up making a huge mistake though. I hadn't looked at the company website. Why I hadn't I have no idea, but it may have had something to do with the fact that I didn't really want to work at that company. The second interview turned out to not really be an interview. The guy was ready to hire me after the phone interview, so he ended up showing me their stack and a few other things for what I thought was going to be an interview.
I ended up getting an offer from the first place as well (coincidentally, I had a missed call from the first place when I got out of the second "interview"). So I ended up having two job offers to choose from, and also a little leeway to do some negotiation and comparing of benefits and such.
So now the important stuff
Here's a list of things that I believe will help you land a job.
Before you start applying
Practice: You need to keep practicing your skills and making things. If you don't keep using what you know, you'll lose your edge, and also fall behind on the newer technologies and best practices. You can practice on anything. A side project, a little freelance gig, volunteer jobs, etc. Just make sure you are constantly pushing yourself to learn and do things right.
Set up a website: It doesn't have to be perfect, or even good for that matter (This is especially true for backend jobs since you most likely won't be doing much on the frontend). It doesn't need to be fancy either. You just need a place to tell a little about yourself and show off some of your work. When telling about yourself, don't be afraid to share stuff that isn't strictly programming related. There's plenty of places you can host a site for free (Github, Netlify, etc.) so don't let that be a deterrent. I didn't even buy a domain name for mine ;)
Interviews and the like
Start applying early. (Like a few months early) Even if you probably won't be able to make it to an interview. You never know when things change, and if they like you enough, they might save a position for you. Plus, you can get some practice with phone interviews and the like. Additionally, if you have plenty of time, things will be less stressful. If you need a job, don't be afraid to get something unrelated to hold you over until you can get a better job.
Don't be afraid of failure: Look at failure as an opportunity to learn something. You can always ask why you didn't get a job, and you might learn something really important.
Companies take time to review things, so if you don't get a response in a few days, don't worry. If things go a couple weeks without hearing back, though, that might be a good indicator they aren't interested.
Even if you don't want a position, you can still apply for it. Worst case scenario, you don't hear anything back. Best case scenario and you get an interview practice that you can use for the jobs you really want. Even if you get offered a job, you can always turn it down.
Apply for jobs that you may not be a perfect fit for. The job I applied for that I ended up getting was posted as a web designer. I am by no means a web designer, and I ended up getting a full stack development job. That said, if after the interview you feel as if you can't do the job, don't lie your way into it.
For code screenings, don't waste your time making sure everything is perfect, and if you need to, do it in pseudocode.
Be chill, yet professional for the interview. Don't be afraid to let your personality show. It'll help the interviewer better judge how you'll fit with the team, and may earn you some "brownie points."
If you don't know something, say so. It'd be better to not get a job than to get it and stink so bad at it that you dread it.
Look at some resources. There's some great ones out there.
What to do before an interview
Make a list of your strengths and weaknesses. These are typically asked in an interview in some way, shape or form. Even if they aren't, it helps you better understand yourself so you can answer the other questions better.
Write down a few questions to ask the interviewer. Some of my favorites that I've gathered from random sources are
- What's the most valuable thing that you (the interviewer) have learned working here
- What is the most frustrating part of working here?
- How do you train your developers here?
- What is unique about working here?
- What does your ideal candidate look like? How can I become more like them?
- What is the biggest challenge your company is facing right now?
- What are your expectations for the first 30/60/90 days?
- Tell me about you. What are some things you like to do outside of work? (This question seems a bit weird, but it can give you a good idea of some of the people you may be working with.)
Get involved in the community. There are tons of ways you can get involved in the developer community. Reddit, Discord, meetups, conferences. You'll have opportunities to not only learn from the best, but teach others what you know, and help them. And hey, you may even make some long-lasting connections there.
Volunteer. It's always good to volunteer for places. This applies similarly to getting involved. You'll not only make a difference, but also build your people skills and relationships in the process.
Teach somebody what you know. Teaching somebody not only helps them but also cements what you teach in your mind. Building on this, when you learn something, learn it as if you are going to have to teach it. It'll help you learn soo much better.
Don't fear failure. Instead, look at it as an opportunity to learn something and improve on what you've already done.