Last updated on December 15, 2021
My managers are founders of a small agency, where they have interviewed dozens of applicants for internships and junior roles over the last few years.
I decided that it would be a great opportunity to gather whatever knowledge I can and share it. I hope it helps you whether you are currently applying or you have plans to apply for a role in software development.
Before you start applying, make sure you have some side projects under your belt. Don’t overthink it - it doesn’t have to be the best idea in the world. It doesn’t even have to be a unique idea for that matter. Just execute it in your own way and make sure you have a way to justify your development decisions during the application/interview. For example, try not to copy and paste from a tutorial and instead, do your best to understand why something is done in a certain way.
“Depth rather than breadth” - that’s the other thing that my manager told me regarding small projects. In essence, concentrate on fully understanding something before you move to something bigger and more complicated. When it comes to building projects, execute small projects well and push them live rather than half-finished larger projects. You will be able to talk about your projects more confidently and your portfolio will look better.
Make sure your Github is presentable. Make old and unfinished projects private and update the README.md file of your projects. Briefly explain what the project does and link it to a live version, so the person reviewing your profile can see what it is quickly and easily.
You can host front-end projects for free on websites like Netlify, Vencel or Surge. For back-end projects, developers are opinionated, but I personally like using Heroku.
If you are reading this article, it already shows that you have a passion for the industry. Building personal projects is also a great indicator for that.
Now expand on this. Keep up to date with recent news and developments in your chosen programming area. Follow tech people on Twitter. Check out Product Hunt - a community that showcases awesome new products. You could even get inspiration for your own projects from there.
Start a blog. Write about what has caught your attention while learning to code. Last year, I started railsjunior.com - a blog where I posted problems and solutions that I discovered at work and couldn’t figure out straight away. Hiring managers love stuff like that. Don’t be afraid to start writing.
My managers also said that it’s important to have other areas of curiosity which are outside of tech. Even though you will be working in the tech industry, you will be likely influencing a non-tech industry. It is especially important if you are working for a product studio or if you want to be a freelancer as these require you to work in different industries and have to keep up with having domain knowledge in many sectors in order to see how the technology influences that sector.
Creativity is not just important from a design/user interface perspective, it’s also required when programming . You are basically the architect for this new system and are constantly utilising your problem-solving skills. Many times there are multiple ways to solve the same problem, so having the confidence to know which solution is best for a particular problem is a creative process.
Some of the ways I develop creativity are through writing, reading, watching other people code, getting inspiration from another website’s design and trying to implement it in my own way. It’s a long never-ending process, but you can feel when you are slowly making progress.
My managers believe that not having a Computer Science degree is fine - they don’t hold it against you. People from any degree or no degree have the potential to become amazing software developers and be just as good as anyone who has studied CS at university.
Most companies won’t ask you that much in terms of technical abilities since you are applying for an internship position as companies will guide you through that as part of the internship.
However, it would be a great benefit if you understand the theory behind software engineering. They recommended reading up on the concept of software processes, in terms of the workflow that normal software products go through from the initial idea through to delivery.
You don’t have to read textbooks or take long courses on this, but learning the basics from articles and videos will be a great introduction that might help you during more technical interviews.
There’s a Medium blog series that’s fairly concise on this:
Another personal favourite is Crash Course Computer Science course on Youtube.
A lot of developers recommend CS50’s Introduction to Computer Science by Harvard. It is a huge investment of time (~15 hours per week for 12 weeks), but if you have the time and passion it seems like a great course to check out.
I see a lot of people (including me when I was looking for internships) apply for any position under the sun. You might think that this increases your chances of getting hired, but it often has the opposite effect. If you only apply for the companies that you care about, this will show in your cover letter and interview.
When I applied to the company that I eventually got my internship, I was so excited about it that I listened to almost every episode of their podcast, read news articles about them and checked out their social media. When the interview came, I knew exactly what the company is about, I knew about the people working there and what questions I should ask.
A lot of companies nowadays are creating content for marketing purposes. Check if the business that you’re applying to has a podcast, youtube channel or a blog. This extra information can be a great way to understand what the company actually does and learn more about the people working there.
My managers told me that they get quite a few bland applications that are either not tailored to their company or are clear copypasta applications. Specifically, they don’t like to see what your goals are and why you think the position can help achieve those goals. Not writing about these things has a positive effect of encouraging you to do in-depth research into the team and company. Tell them about your experience and how you can contribute to their team.
When I was applying, I tried to dedicate a lot of time researching the company and give special attention to every cover letter. A good rule of thumb is to apply to one or two companies per week. I had a period where I was doing 2-3 applications per day and none of them turned out successful.
Don’t be afraid to reach out directly. Universities and recruiters have a habit of scaring people into following internship processes. Just send an email or connect on LinkedIn --- and be clear on what you want.
I got my most recent position by someone recommending the company on a LinkedIn post. I then reached out to the CEO and the head of engineering before I submitted my application.
Practice the STAR method even if it’s not a formal competency interview. Answering questions in this format will make sure you are illustrating your points with clear examples. This will greatly help the person who is interviewing you and increase the chances of you getting hired.
Take initiative --- interviewers want to learn about you so present yourself. If the interviewer asks you to tell a bit about yourself, make sure you know what you want to say. Know how to describe how you got into coding, your previous experience and your side projects.
Ask questions that allow the interviewer to open up to you. Ask questions that show the interviewer that you care and that have researched the company. Ask about what’s it like to work at the company. Ask what kind of projects you would be working on. Ask about what tech stack they are using.
I have always found it useful to have a mock interview with a teacher, friend or family member before the interview.
Articles, guides and interviews about web development and career progression.
Max 1-2x times per month.