I was a freshman and began self-studying programming around January - February. In May, I got my internship offer at a well-known company.
What I can say is getting a software engineering internship is hard nowadays. You have to go through the whole process of applying, studying for technical interviews and getting ghosted over and over. I understand the struggle, as I applied to over 700 companies to get my offer.
However, it is totally possible to get into the industry by self-study if you are rigorous and study the right way.
Below is a rough step by step guideline with the important steps I have taken, and a walkthrough of what I did in particular.
Step 1: Learning the Basics
freeCodeCamp and CodeCademy are the best resources if you are starting out, hands down.
They both offer explanations in the simplest way possible and teach you the absolute basics of what you have to know in order to break into the industry. I recommend starting out with CodeCademy to learn the syntax of the language of your choice.
Note: It is important to know which roles you want to apply to in order to study effectively. For example, if you are aiming for a front-end internship, the web development course on freeCodeCamp will be particularly useful. This guide will mainly focus on the front-end side.
What I did:
HTML and CSS are relatively easier to learn. I moved on to freeCodeCamp’s complete course on web design. It is one of the best free resource available. If you get through the whole course, you would know more than the basics of web development.
When you feel like you know the basics, I highly recommend to keep learning with the Front-end developer’s handbook. It provides a complete list of resource for more advanced learners, both paid and free. It contains thousands of hours of reading and will teach you all the tricks a master web developer should know.
Step 2: Creating Projects
After a few weeks, you should be ready to commit to creating a small project. Projects are huge on your resume when you don’t have a lot of experience. Again, freeCodeCamp offers very good project ideas. Start with something small.
If you are struggling on finding project ideas, you can Google “100 project ideas in X language” and it usually does the trick. Also, take a look at other GitHub repos and learn from their code.
When you are done, test it and put the source code on Github. This is crucial, as it is the only way companies can validate your skills without prior work experience. Put good quality code with documentation when you can.
What I did:
When I got my offer, I had made 4 - 5 projects. I started with a small typing game web app forked from another student’s GitHub and learned a lot from their code, then added my own. I gradually moved towards more complicated projects. Here is a list of all the projects I made before getting my internship, their descriptions and the stacks I used:
- Various other small games like Minesweeper, all made with React and styled with CSS.
- A working React Native app to let users showcase their best pictures, with the backend implemented in Node.js and Mongoose, hosted on Heroku.
Step 3: Applying for Jobs
I have the most experience in this area as I have applied to so many jobs. The best tips I have, regarding the job search and interview process, are:
- LinkedIn, Glassdoor and Indeed Easy Apply are not your friends. With those type of postings, the recruiter receives so many applications they usually use an ATS (Application Tracking System) to filter out all the resumes. If you don’t have any previous experience or impressive projects, the chances that you will get through the filter are very slim.
- A cover letter is a double-edged sword. When done right, it can really differentiate you from the rest of the candidates. However, when done wrong, it can worsen your situation. My advice if you were to write one is to tailor, tailor, tailor it. Target your cover letter specifically to the company you are applying for. DO NOT send the same generic cover letter to every company, as recruiters know you have sent 100 of them already. Lastly, please make sure there are no grammatical errors. One typo is enough for the recruiter to reject you.
- I had the most success either applying directly on the company’s website or through cold emailing recruiters (or even the CEO if the company is rather small). If the company does not have a public e-mail, you can usually guess as it is almost always in the form
hello at companyname dot com. They have a MUCH higher chance of looking at your resume than if you submitted it via Indeed/Glassdoor. You can have a template and change slightly the wording for different companies.
- Have thick skin. Companies reject you for all sort of random reasons and recruiters ghost you all the time. It is normal. If you have a less attractive resume, you stand a smaller chance of getting an interview. Keep applying and do not give up. It is never over until you stop trying.
Step 4: Interviewing
When you finally land that sweet Interview, be sure to prepare for it. There are numerous resources online teaching you how to ace a technical interview. If you haven’t read it already, Cracking the Coding Interview is a very good read.
Technical interviews are very stressful. There’s no workaround for them - you have to grind algorithm questions. Leetcode offers tons of good questions for practice.
However, since they are so widely known, it is very unlikely you will get the exact same question you practiced on an interview. The interviewer usually has a bank of random questions that are not posted online. Still, the basic idea remains the same. For instance, it is always good to know your data structures and Big O thoroughly.
Another thing to note: companies I interviewed with often brought up my projects and asked me technical questions about the implementation. It is their way of testing if you have lied on your projects, so be prepared for it.
What I did:
To start off: it is ok to suck at interviews. I completely messed up my first ones. It is embarrassing to remember.
I realized I was not prepared enough for the technical questions. I started doing Leetcode 2 - 3 hours a day. The most important thing is not to spend too long on a single problem. You do not have unlimited time on your interview. Instead, put a timer, say 10 minutes for an easy question and 20 minutes for a medium one (you mostly won’t get Leetcode hard questions on your interviews if you are applying for an entry-level position or an internship).
If you cannot solve it in time, that’s completely ok. Look at the solution and try to understand it. Mark the question you cannot solve and try again in a week.
Since interviews also test your communication skills, you can prepare by saying your thoughts out loud when you do practice questions. Trust me, it may sound weird at first but it makes a huge difference in interviews when you are used to speaking up.
Resources: where to find entry-level jobs and internships
What I used to find internships (besides Glassdoor, Indeed, and Linkedin) include Breakout List and AngelList.
My 2 cents: I realized how dreadful it was to try and find internships openings. There’s no easy and fast way to find a complete list of companies with their internship listings. freeCodeCamp’s community is awesome and helped me a lot during my job, and I’d like to contribute back.
I came up with this app after my internship as my side project, to compile a list of companies and their internships/entry level jobs, filterable by location, tags, school term, etc. I will elaborate on it in the next section.
Finding your first job/internship can be a long, frustrating and tedious process. However, the experience you gain from the actual workplace makes it totally worth it.
Here is a comparison of the project I made after my internship and one of my first projects ever.
Quite a difference, right?
This is why I think the time spent during my internship was totally worth it. I would never have been able to make my last project without all the guidance and experience I gained at my internship. The project is a platform and a job board to discover internships and entry level positions for students, self-taught developers and new grads. You can view it here.
I strive to improve, and any feedback is welcome. I’d like to write my next article as a step-by-step guide on how I designed and structured the app, so let me know if you are interested. I’d also love to help others that are just starting out, as I understand the struggle. If you have any questions, do not hesitate to send me a message (you can highlight this and click the message icon on the popup).
Good luck everyone!
If this article was helpful, .
Learn to code for free. freeCodeCamp's open source curriculum has helped more than 40,000 people get jobs as developers. Get started
How long does it take to self learn software engineering? ›
It can take anywhere from three months to four years to become a Software Engineer, depending on your technical experience, professional background, and career path.Can software development be self taught? ›
But it is absolutely doable. And you can probably even achieve it all on your own, through self-teaching and networking. Many people have successfully transitioned into software development this way.What do software engineers need to know about internships? ›
For software engineering interns, some great skills to list would be technical skills, time management, ability to follow through and execute, and ability to contribute and collaborate in a team setting. It's also key to mention organizations or projects that you led and can explain thoroughly.How many years does it take to be a software engineer? ›
How long does it take to become a software engineer? Most software engineering jobs require at least a bachelor's degree, which takes four years of full-time study. Some employers prefer candidates with a master's, which requires an additional two years of study.Can I learn coding on my own and get a job? ›
Yes, you can. If you want to learn to code by yourself you need hardworking skills, never giveup, avoid what you don't need, and just be focused then you can definitely achieve a job just by learning to code yourself. There are many excellent websites and youtube channels that help us to learn to code for free.How many hours a day should I learn to code? ›
On average, you should spend about 2 – 4 hours a day coding. However, efficient coding practice isn't really about the depth of time spent writing or learning codes but rather benchmarked on the individual's consistency over a given time.Do big companies hire self-taught programmers? ›
Yes, some big tech companies have started hiring self-taught Python developers to accelerate their productivity. IBM and Google are two of the top and leading big tech companies in the current global tech market.How do I become a software engineer with no experience? ›
- Improve your coding skills. ...
- Create a portfolio. ...
- Build your online presence. ...
- Network with other programmers. ...
- Earn certifications. ...
- Take part in coding challenges or competitions. ...
- Write a strong resume. ...
- Build projects.
HackerRank's survey shows that 27.4 percent of developers say they're self-taught. Another 37.7 percent say they supplemented a formal education with an online course, or otherwise taught themselves.How long will it take to self teach coding? ›
If your goal is to learn to code as quickly as possible, you can become proficient in as little as 3 months. If you're looking to change careers, then you can become proficient in coding for web development or data science in 3 months or more through a coding bootcamp or self-teaching.
How long does it take to learn software programming? ›
Most coding bootcamps last 3-4 months and teach enough coding skills to qualify graduates for entry-level coding jobs. It typically takes 6-12 months to learn to code on your own. Likewise, a bachelor's degree in computer science or computer programming usually takes four years.How fast can you learn software development? ›
If you commit 3-4 hours a day to learning to code, you could land an entry-level programming job, such as a junior developer position, in as little as 6-8 months. Staring at lines of code for hours at a time can be tiring, but the longer you can study each day, the faster you'll be able to start your career.Is it hard to become a software engineer? ›
Software engineering is challenging to learn from scratch — but with a bootcamp, even industry newcomers can build a strong knowledge base and ready themselves for an entry-level role quickly if they are willing to put in the time, hard work, and dedication.