I hope this thread can be a resource for people who are looking for their first job in programming. Please feel free to add tips and discuss here.
In your career as a programmer, landing the first programming job is always the hardest and scariest part. Once you get into the industry and have some experience and a network you can rely on, it gets easier. So this thread is about setting you up for success on that first job search. I don't have all the answers here, but I'm sure others will chime in and help.
There's a few ways to go about networking in our space, but ultimately you should:
All the time, I see people join devanooga that are early in their career (some even still in college) that join but don't interact. You have to be active. You have to get your name out there. I know business owners that want to hire people that they know over some random person that a recruiter connects them with, but if they don't know you that will never happen.
Often, job interviews are half making sure you know the tech, and half making sure they can stand working with you for 40 hours a week. If you can show your personality early and often in communities, you're already accomplishing half of the job interview before you even have it. That puts you at a huge advantage over the random dev-off-the-street.
Hiring managers are looking for people that know how to do things from start-to-finish. They want people that can take initiative and drive a project through to completion.
Here's some ideas for projects you can make (and be sure to host the git repository on GitHub!):
Ultimately, keep in mind that your goal with building things is to LEARN. It will help you in your job search, but it will also give you things to talk about. Since you don't have professional experience (or maybe just internships), having things to talk about it an interview, even if it's just your own personal projects, gives you a big leg up against other candidates.
A few things to keep in mind when building your resume (and there's plenty of other tips out there that you should research, but):
Nowadays, it seems that the average Interview process goes like this, or similar:
Most interviews that I've had over the last few years have taken this 4 step approach. This can take a few weeks to get through.
DON'T PUT ALL YOUR EGGS IN ONE BASKET. If you have the opportunity to have multiple interviews going in parallel, do it.
I know this interview process sounds daunting and scary, but I promise, the more you do it, the easier it is.
In your career as a programmer, landing the first programming job is always the hardest and scariest part. Once you get into the industry and have some experience and a network you can rely on, it gets easier. So this thread is about setting you up for success on that first job search. I don't have all the answers here, but I'm sure others will chime in and help.
Networking
The most important thing about finding a job, in my opinion, is networking with people that can connect you to open positions. It doesn't matter if you are excellent at what you do, if no one knows who you are and you never communicate with anyone, you'll never be in a position to get your foot in the door at places.Sometimes it's not what you know, it's who you know.
There's a few ways to go about networking in our space, but ultimately you should:
- Create a LinkedIn Profile. I know, they are lame, but this is the absolute best way to get your name (and accomplishments, experience, diplomas, certifications, etc) in front of recruiters and hiring managers. Search on LinkedIn for tech recruiters in your area and add them to your network.
- Join developer communities in your area. These normally take the form of discord or Slack groups. There are lists like this one online that you can use to easily find these groups. If you're in the Chattanooga area, devanooga is the best community for developers
.
- Speaking of GitHub, make a GitHub account. Build things in your favorite tech stack and keep those git repositories there for hiring managers to look at. I'll go into this later.
All the time, I see people join devanooga that are early in their career (some even still in college) that join but don't interact. You have to be active. You have to get your name out there. I know business owners that want to hire people that they know over some random person that a recruiter connects them with, but if they don't know you that will never happen.
Often, job interviews are half making sure you know the tech, and half making sure they can stand working with you for 40 hours a week. If you can show your personality early and often in communities, you're already accomplishing half of the job interview before you even have it. That puts you at a huge advantage over the random dev-off-the-street.
Build Stuff
Get out there and make things. It doesn't have to be great things, it just has to be things!Hiring managers are looking for people that know how to do things from start-to-finish. They want people that can take initiative and drive a project through to completion.
Here's some ideas for projects you can make (and be sure to host the git repository on GitHub!):
- A personal Blog. Build it in Jekyll or Hugo or plain ole HTML/CSS/JS if you want.
Use GitHub Pages to host it.
Setup a CI/CD to automatically deploy to your site.
Buy a domain name and point it your blog for $10/year, everything else is free!
Blog about your other projects. Blog about your Amateur Radio hobby or homelab (for example). Blog about the cool things you are learning on your job search.
Show that you can build a site, use git, understand CI/CD, and communicate your thoughts. - An API library. Find some API out there that doesn't have a library in your favorite language. Build it! You can look at libraries in other languages and see how they do things to get an idea on how to build your library. There's tons of services and APIs out there that have a library in JavaScript but not C# or Go or Rust. Build it!
- Single Service Site. There's tons of these types of projects out there. Build one and get people to link to it on GitHub lists or wherever. You can host these for cheap or even free (with GitHub Pages, again).
Ultimately, keep in mind that your goal with building things is to LEARN. It will help you in your job search, but it will also give you things to talk about. Since you don't have professional experience (or maybe just internships), having things to talk about it an interview, even if it's just your own personal projects, gives you a big leg up against other candidates.
Resume
Unfortunately, you have to have a resume. You can build a resume anyway you like: a Word document, LaTeX, JSON, whatever. But you should export your resume as a PDF and send it to recruiters.A few things to keep in mind when building your resume (and there's plenty of other tips out there that you should research, but):
- Don't be afraid to talk about your personal projects like you would work experience. Once you have some work experience, you can start peeling off some of the personal projects, but until you do, you need a way to show your skills.
- Recruiters are more-and-more using tools to scan resumes to filter them out. Make sure you include keywords that are applicable to a job you are applying for. For example, if they are a JavaScript shop, include the words "JavaScript", and "Node", and "TypeScript" if applicable. Make sure to mention frameworks you've used as well.
- Follow the KISS method: Keep It Simple, Stupid. You don't need a big and flashy resume with all sorts of graphics and stuff (unless maybe you're a graphic designer). Keep it simple, legible, and to the point.
- Make LinkedIn a mirror of your resume. Recruiters will find you by searching LinkedIn and having that same experience mirrored there will make you easier to find. They will then reach out to get a copy of your resume.
Interviewing
Interviewing can be hard. But if you prepare and know what to expect, you can take a lot of the pressure off.Nowadays, it seems that the average Interview process goes like this, or similar:
- Initial screening interview with a recruiter: This might be with an external recruiter (at some third-party company) or an internal recruiter with the company you are applying to. This interview is normally checking to make sure you know the very basics of a tech stack. They will ask you things like "Have you ever worked with PHP?", then follow up with "Are you familiar with the `composer` tool?". They are looking to make sure you are worth sending to a hiring manager. Answer honestly and briefly, but make sure it is clear that you are familiar with the things they are discussing. For the PHP question, maybe say what versions of PHP you are familiar with and if you've built projects using it. For the composer questions, maybe say that you use it to manage dependencies for project X or whatever. Show that you know what it is and how it is used.
- Tech Screen: This step takes a few different forms. It can often be a take-home project that they expect you to complete in a specific tech stack and return to them. It can also be an interview with an Engineer on the team asking you questions about their tech stack.
If it is the former, make sure you take your time and build something you are proud of others seeing and interacting with.
If it is the latter, make sure you elaborate as you discuss. The initial screening was just to make sure you are familiar with tech, this is to make sure you actually know it and can utilize it. Say the things you like about a tech and why. - Interview with a Hiring Manager: This stage is normally less technical more "is this person a good fit for what we are trying to do". They might ask you things like "Are you familiar with Jira?", "Are you familiar with Agile?", etc. Be clear, be friendly, be honest. You need to show what parts of working on a team you are familiar with and where you'll need guidance. This is also your opportunity to show that you are a life-long learner type. As a Software Engineer, you have to be. And this gives you an opportunity to bring up the projects you have worked on and how you've used project management tools (did you track your issues in GitHub?) and how you've built things that are actually out there on the 'net and doing stuff (bring up that CI/CD pipeline you are proud of finally getting working!).
- Culture Fit: This interview takes many different forms and is rarely actually called a "Culture Fit" interview, but that's normally what it seems to be. This is often held with you plus a few members of the team you are joining. In my experience, this seems to be the part where they are really trying to feel out if you are someone they can stomach dealing with for 40+ hours a week. Be yourself, answer their questions and come with your own. Ask them things like what they like about the company or team or project. Try to loop their responses into your own answers. This is another opportunity to show that you can communicate your thoughts and that you are a thoughtful person.
Most interviews that I've had over the last few years have taken this 4 step approach. This can take a few weeks to get through.
DON'T PUT ALL YOUR EGGS IN ONE BASKET. If you have the opportunity to have multiple interviews going in parallel, do it.
I know this interview process sounds daunting and scary, but I promise, the more you do it, the easier it is.