Finished a boot camp or online course and feeling discouraged? Looking around at job requirements and thinking about learning another language? Feeling like you worked really hard for nothing? It’s tough getting started as a software developer, so let me give you the step-by-step route that I took to getting hired as a beginner.
First things first… it’s not an easy route to get hired, especially if you don’t have the computer science pedigree some companies are looking for, especially if you don’t have work experience. However, if you’re willing to work hard and face your fears, you’ll be able to get the work experience you need, while also making some money while you do it.
When I graduated college, I didn’t have a computer science degree and only had done some basic programming through a handful of college classes. I didn’t let that stop me when I realized that I wanted to be a software engineer. I learned as much as I could by following the system I’m going to outline below. I’ve also used this system to mentor other beginning engineers into getting paid work!
The three main things to focus on are:
1. Get work experience!
2. Stay current and up-to-date
3. Implement what you’re learning
The first thing you need to do is pick a language and stick with it. When you get more experience, I would encourage you to start playing with other languages and frameworks, but when you’re starting off you need to really focus your learning on one language and the frameworks that are used in that language. For instance, if you’re choosing C#, you want to learn as much as you can about C# and .NET. Then focus on the different frameworks that are used – ASP.NET MVC, ASP.NET Web API, etc. Don’t chase different languages, it’s a waste of time and will dilute your learning process.
If you don’t know the popular frameworks and skills necessary in your language, go to jobs.stackoverflow.com and start looking at the jobs available in that language in your area. Write down the different frameworks that people are looking for and start learning them! Now, that you’re learning the skills that people want to hire for, how do you get the work experience?
The easiest way to get the work experience is to build your own site. Now, don’t just build a simple portfolio site. I recommend trying to build a real web application of some sort. If you can’t think of one, build a site like reddit.com, or twitter.com. Literally just steal the html/javascript/css and implement it in the language and framework of your choice. Going through the process of creating and launching a site will give you a HUGE amount of real working experience.
Once you get your site up and running, the next thing to do is start looking for some paid work using your personal project as your work experience. The places I would recommend are freelancer.com, craigslist.org or upwork.com.
Now remember, the point of these jobs isn’t to get paid a lot of money. The point of these jobs is to get work experience. Let me repeat this again so it sticks in your mind. The goal of this work experience is not to get paid, but to get experience. You want to find jobs that match the experience you’re trying to build. To get these jobs, you want to underbid the other people. So, I’m talking like $100 – $200 per project. Find jobs from people who are trying to get some work done on the cheap. If you’re curious about what other people are bidding, sign up as a person LOOKING for software developers and see the bid amounts that are coming in.
Once you get more work experience, you can start raising your prices, but again, the goal of this is to get work experience, and not really to get paid. After a few months you’ll have at least 3 new things on your resume – 2 freelance projects and your own personal project.
Now let me address some of the common fears people may have doing freelance work:
’I don’t know what I’m doing. What if I’m not coding it right?’
It doesn’t matter if you’re coding it right as long as it works. The person paying you is getting a deal – someone is working on their site at a cheap price!! Your main goal is to just get out something that works. It doesn’t have to be perfectly implemented. It just needs to work. As you gain more experience, you’ll probably look back at your first project and laugh! BUT THAT’S OK! It’s your first project! Everyone’s first project is embarrassing! I know mine was!
‘What if they ask me to host it or maintain it? I don’t have any experience with that!’
As a software engineer, you’ll frequently be asked to take on things where you have to learn something new – so get used to it! You’ll learn how to do whatever you need to do. Need to connect to a database to get data? Google it! Need to launch on Amazon Web Services? Google it! Google is your friend!
The second major point is to always stay current. Google newsletters that are available for your language and make it a habit to read at least the top three articles that are mentioned in the newsletter EVERY WEEK. But don’t just passively read the article. Keep an empty pad next to you and copy and paste the concepts/technologies that are mentioned that you’re hearing for the first time or what to understand more. Google them and read about them. Don’t worry if you can’t remember what you’re reading. The hot technologies are usually mentioned in many articles over the span of several months, sometimes even years. If you keep this habit up, you’ll end up reading about the topic over and over and this repetition will help you remember it.
Now, you can’t just read about a new concept and expect to master it, because just reading about it won’t get you familiar enough with it. What you need to do is actually try to implement the concept, repeatedly. How do you do that? Guess what, you have the perfect project do this on, your personal project that you built!
If you’ve read about a concept multiple times in the past month, it’s worth trying to implement it on your own project. Also, don’t forget to try this new technology with the clients you’re getting on upwork/craigslist/freelancer. This will give you the necessary experience that you can talk about in your next job interview! Job interview? Yes, if you do the last few things we’ve talked about, you will definitely start to line up interviews.
To get interviews you need to really just send out as many as you can. Interviews is just a numbers game during a hot economy, which happens to be now for software engineers (2018!). Take everything you’ve learned and fill your resume up with all the technologies that you used. That includes any libraries that your projects used, any frameworks, and any technology concepts (REST, oAuth, JWT, etc). The more technical jargon you add the better. Why? Because most of the time the first person that’s reading your resume is going to be someone non-technical. These people are usually recruiters or hiring managers at a company. The jargon words look very impressive to someone who isn’t technical. Now, that doesn’t mean that you can just put down gibberish, because the second person reviewing your resume is going to be technical. The jargon just gets you past the first gate-keeper.
Now, go to dice.com, indeed.com, jobs.stackoverflow.com, angelist.co, and craigslist.org and start blasting your resume out to as many people as possible. Don’t worry about being under qualified for a given job, apply anyway. Don’t reject yourself, let the person reviewing your resume reject you. Now as you’re doing this, remember, you’re still building your skills, implementing your new knowledge and getting freelance work to keep adding to your resume. You may even make enough money freelancing that you may not want a full-time job! You never know!
A couple of things to remember in your job hunt. Recruiters are not your friends. They’re there to make money off you, not nurture and develop you. So, make sure to use as many recruiters as possible. Don’t feel bad about this, because if you get rejected from their clients, they’ll drop you like a rock. So, don’t get too attached to your recruiter.
Another important thing to remember – if you do get rejected from a position (or a non-callback), make sure to get the feedback from the person on why you got rejected from the job. If you can, get a detailed explanation about what knowledge it is that you were missing. Don’t get defensive about it, but instead use it as a guide post on what you should focus more on in your learning. Also, don’t get down about getting rejected… remember it’s a numbers game. The more you interview, the better you’ll get at interviewing and the more feedback you can get to improve your knowledge.
Was this helpful? Sign-up for my newsletter (on the left) to get more tips and tricks for both beginners and experienced software engineers!