This post was first published on CoderHood as 5 Best Strategies To Get Your First Programming Job. CoderHood is a blog dedicated to the human dimension of software engineering.
A question that aspiring young developers ask me all the time is: How do I get the first programming job that I need to build the experience required by most programming jobs?
It appears like a chicken and egg problem. You need work experience to get your first job, but you can't get that experience without the first job. It might seem like an impossible riddle. In reality, it is far from impossible. Â Here are five strategies that will not fail you.
I worked a lot while I was still in school, and it made my life much easier later. Before finishing my studies, I accumulated a substantial number of professional programming experiences that made me into a senior developer even before I was interested in a full-time job.
A professional programming experience is a paid engagement that allows you to understand how to interact with employers and builds your resume. There are several ways to acquire work experience while you are studying.
Here are a few ideas:
Internships are an excellent way to immerse yourself in a software development organization. As an intern you become integrated with a team of experienced engineers, working with them daily and building precious experience for a futureÂ first programming job.
Internships can be paid or unpaid. The most important thing of an internship is to choose a company that is going to allow you to work on meaningful projects, that is stuff that is going to be ship to customers.
Many internships lead to full-time employment with the same company. It is an excellent way to get your foot in the door.
Freelancing is a fantastic way to work on real projects and build a resume. There are countless ways to find freelancing opportunities. In the beginning, you can start by looking on sites such asÂ freelancer.com,Â upworks.comÂ orÂ rent-acoder.comÂ and build your name from there.
It is a competitiveÂ world, but if you are good, you'll start getting direct referrals from your customers. Your workload will grow to the point of keeping you busy during your free time.
I landed my first real freelance job when I was 14. I was asked to build a C library to manage text menus under MS-DOS. The customer was a software company that developed database products. They wanted to print any text on the screen, and my library, when invoked, needed to scan the memory of the video-card, find the words in a given area of the screen, and highlight one of them as if it was a menu option. The text highlight needed to move from word to word on the screen using the arrow keys. When the user pressed ENTER, the word highlighted had to be returned. The library was used to build the company's flagship product.
The second project was to create a source control management system with a peculiar feature. The customer wanted to manage their source code with it but also wanted it to sign the compiled artifacts. Given any executable generated by compiling any of the managed projects, they wanted to be able to find out which version of each source file was compiled into the artifact. A strange project that I had fun developing.
I built dozen more projects as a freelancer while I was still in school. That gave me a solid experience well before I needed to look for my first programming job. By the time I applied to jobs, I had a strong resume.
There are countless open source projects on GitHub. If you are in school, it makes a lot of sense to collaborate on some of them. Choose a visible one, something that most people would know. A few good places to start:
- Apache Projects
- Facebook projects
- Google Projects
- NetFlix Projects
- Apple Projects
- Microsoft Projects
Become familiar with a project that seems interesting to you, and start making contributions. Fix some bugs, make some things faster, add features, etc. Start small, become familiar with the process, and become a rock star. Contributions to public projects will make your resume stronger, and your skills sharper.
You don't have to just work on existing projects. You can also create your own and push them to GitHub. Your GitHub repo can become a showcase for your skills and style. Employers will look at it and get a good sense for what you can do.
When you push projects on GitHub, make sure to document them properly. Include a strong README.md crafted for someone who is looking at your repository for the first time. You should always assume that people landing there know nothing about you, your project, your goals and what problems you are trying to solve.
As you are learning to be a developer, you can record your journey in a journal. Your journal can be kept as a public blog. Blogging is an excellent way to put your name out there and build your personal brand. Regardless of what else you are doing, you should blog! Not as an expert yet, but as a learner. Some advice on blogging:
- Start on a free platform. If you are not working yet, you don't have money to spend on hosting. There are plenty of free options, including the use ofÂ GitHub as a blog.
- Stay on a theme. Avoid blogging about your cat. Remember that your goal is to build a personal brand as a developer.
- Keep any complaining private. Blogs that are collections of complaints will showcase poor character and lack of common sense, which is exactly the opposite of what you want. Keep it positive, energetic and enthusiastic. Nobody intends to hire a complainer.
- Don't pick fights with trolls. Many people in tech are often snarky and opinionated. You don't have to answer to them. Public fights online will stay around forever, and they do not showcase your brand. Trolls will bring you down, and beat you with experience.
- Publish regularly, and don't worry about generating traffic. Your goal is to learn, build a personal brand, impress employers and record your learning experiences. You are not trying to make a living with your blog. Not yet.
- Stay humble. Discussing what you learned is ok, but preaching is not suitable for a beginner (or anyone else). Share, don't teach. Give, don't expect. Have an opinion, not a set of rules.
- Develop a "professional voice," the same one that you'll use when you'll be interviewing for your first programming job.
You can start your business while you are still in school. I did it in the 90's, and at that time it was much harder. Remember that products like Facebook and Google started that way, and they grew to be tech giants. Everything is possible with the right ideas and attitude. Experience helps, but is not necessary.
Build a product, put it out there, and see if you can make a business of it. It might not go anywhere, but it will build your skills and resume. Those skills will include not only technical proficiency but also business sense, which will push you ahead of the competition when you go search for yourÂ first programming job.
Entrepreneurship is completely in your hands and gives you a substantial experience that employers like to see. The internet has created a platform to grow a good idea into a business, and taking advantage of it is as difficult as coming out with a good idea. Difficult, but not impossible, and you can do it sitting at your desk.
If you are a young developer in search for that first programming job, you have characteristics that you can use to your advantage. Here are some that might describe you (don't worry if they are not all true):
- You are young.
- You are passionate about coding and technology.
- You are energetic.
- You are eager and willing to learn.
- You don't have dogmas.
- You are a quick learner.
- You are a good mentee.
- You have fresh new ideas.
- You don't carry a lot of baggage.
- You are ready to give your best.
- You can move wherever the right opportunity shows up.
- You have a lot of time.
Bring your passion for technology to the table. Your flexibility and thirst for learning and growing is an advantage you have and should use.
You can't bring experience with you, but you can bring new ideas. Companies seek young tech talent to eliminate old crusty ideas that seem to be unshakable. In a technology world that reinvents itself all the time, dogmas are dangerous and stifling. They grow like a cancer and make engineering organizations slow. Stay humble, but question everything.
Seek jobs at your level in companies that have good mentors. If you find a boss who is a great technologist willing to help you grow, it will be well worth the time and effort, even if the initial compensation is not high. Mentors are excited to teach to eager students. Be the student that a guide would want to have.
Stay in any job forÂ at least two years, unless you are absolutely miserable. Jumping from job to job is not a good thing. You do not want to end up with more jobs on your resume than years of experience.
Interviews in tech can be hard. When you are going through the process for your first programming job you might feel overwhelmed, but don't fret! Just make sure you understand how theÂ interview process in techÂ works, and things will get easier. Expect and accept one or more of the following:
- Phone screening.Â Have those calls from a quiet place. Have a computer with an internet connection, paper, and a pen in front of you.
- In-person screening.Â Usually, this is a real one hour interview, not just a "chat." If you can choose between a phone screening and an in-person screening, choose the latter.
- Programming challenge.Â Programming exercises are an excellent way to demonstrate what you can do. A programming problem is sometimes given to you after a successful screening. You do it at home, and submit it as directed. Take this exercise very seriously, and showcase what you can do.
- Whiteboard coding.Â As a software developer, you should expect interviews to include coding on a whiteboard. You'll have to do this in 99% of the interviews you'll ever take. Don't worry; few people are good at it. To prepare, buy yourself a large whiteboard and practice every day. When you practice, explain your thinking process out loud to the imaginary interviewer. It is important that you showcase how you think. Talk through it. Â Avoid just writing the code in silence.
- Soft questions.Â Expect non-technical questions like:
- What do you think of our product?
- Why are you interviewing with us?
- How would you improve our product?
- What are your career goals?
- Where do you see yourself three years from now?
- Why should we hire you?
- Describe a project where you were not successful.
These questions are designed to find out who you are, if you care about the job you are applying for, and if you would make a good fit for the team. Prepare solid answers ahead of time, write them down and refine them over time. Having your story straight is very important.
Design how you want to present yourself, and stick with it. EstablishÂ simple rules for your professional self. I am not suggesting that you fake who you are, but I am suggesting that you define it and stay consistent. For example, I recommend being humble, confident, ready to learn, thirsty for knowledge and ready to grow.
When you go for an interview, do your homework. Make sure you know everything you can about the company and the product. Present yourself as very passionate about what the company does. Make it clear that you are interviewing for yourÂ first programming job, and show how excited you are.
Try to figure out what you want to do long-term and what your goals are. You can change those anytime. That's ok, but having plans and being able to share them is important. Employers will be impressed by someone with a clear set of goals.
Most of all, have fun with it. Getting a job should not be torture, and it can be a learning experience. Some things to keep in mind that will help you:
- Remember that, by definition, you need to find ONE first programming job, not many.
- You are interviewing the company as much as the company is interviewing you.
- The world is full of possibilities. If you are willing to move anywhere, there are thousands of options for you to choose.
- Developers are in high demand. Do not let the fact that you don't have previous job experiences make you think that you are not qualified. You are openly applying for a junior role, and you'll find one.
- Never, ever lie. It will not help you.
- Listen carefully. Even if you are smarter than the people who are interviewing you, listen to what they have to say and pay attention.
- Don't believe that you have to meet every requirement in a job description. Be ready to explain why the company should hire you even if you don't meet some of the requirements. Stay humble, but display confidence.
- Never, ever burn bridges. The tech community is large, but not that large. Bruning bridges do not help you in the long-term.
- You can do this.