Some of my viewers are computer science students and some are self taught like me. I studied business economics and found my passion for programming later in life. I try to be very transparent about the fact that I am not an advanced developer, but rather a beginner documenting his learning process.
I haven’t worked in a programming job yet, so why do I write a blog post about getting a job as a programmer? Because what I do with this blog and my Youtube channel is part of a strategy of raising my chances to get a good programming job, even though I have never sat in a computer science class in my life. I am building reputation. And you should do the same, especially if you are self taught.
In this post we want to take a look at the more long term stuff. I won’t talk about how to master an interview, simply because I have no experience with that at all. We will also not talk about how to write a proper job application for the same reason. Instead let’s look at how to market yourself and get your name out there, because this topic is not so technical and I am already right in the middle of it.
The point of this list is not that you should do everything on it. In fact there are some things in this post that I don’t do myself, but where I still feel that I researched enough to understand the benefits and can talk about it. There are only so many hours in a day and we can’t do everything, so pick the points that sound most interesting and beneficial to you and do them.
First let’s think about what exactly we want to achieve. We want to prove to a possible employer that we are good programmers, because ultimately companies want to hire good programmers and not good pieces of paper. Of course a degree and good grades are hints that someone has skill, but it is no guarantee. It’s also not a guarantee that this person can communicate with team members, that he can work hard or that he even likes programming. To raise your chances of getting hired, you want to prove that you have skill and passion. You want to show that you are experienced in what you do, because you are very active working on actual projects. And optimally you want that information about you to show up in Google when a potential interviewer searches for your name.
If you are just starting out, make sure to read my How I Started to Learn Android Programming blog post first, because there I talk about exactly this. If you are not an Android developer you can still read this post, because the principles are the same. And now to the list:
Blog about what you learn
As a programmer you should write about the stuff you learn, or alternatively make videos like me. It depends on what you prefer and what you are more comfortable with.
You might feel like you are too inexperienced to write a software development blog, but that is wrong. No matter your skill level, you can always help others by forming the things you learn into tutorials and explanations. Did you know that my most successful Youtube tutorial to this day is a 3-minute video called “How to Make a Button Open a New Activity”? This is such a simple tutorial, that someone who started to learn Android programming 1 day ago could do it. I even did mistakes in it, because I was such a noob. But mistakes are good as long as you learn from them, and teaching is a great way to get a deeper understanding of the concepts you are talking about, because you cement the knowledge and find out where you still have gaps.
Blogging also gets your name out there and helps you connect to others. I got my first freelance offers a few months after starting my channel. I didn’t take them, because I want to focus on Coding in Flow for now, but how else would you get job offers with less than a year of experience? People trust me, because they see my videos and like my clear explanations.
Now imagine the other way around, if I would contact people and tell them that I wanted to build their app, but that I started to learn programming less than 12 months ago. I don’t think anyone would hire me, at least not for a reasonable price.
However, always be transparent about your skill level. Don’t try to deceive anyone. I always make clear that I am a beginner myself and that I created Coding in Flow to turn the things I learn into tutorials. And you should be honest about your skill level as well. As said, you don’t have to be a specialist to write helpful articles. Being less experienced can even be an advantage, because you see the concepts from the eyes of a beginner and can explain them in a way that other beginners understand it. In fact that is one of the most common compliments I get under my videos.
To create a blog you don’t have to buy a domain and set up your own website. You can also use services like medium.com instead.
Build a portfolio
Besides writing about it, showing something you actually built is a great way to prove your skill. In Android programming this would most likely be an app (or multiple apps) on the Playstore. This way you also show that you can finish things, and that you know which steps are involved in releasing and maintaining an actual product.
When you put these projects on Github, you can also show the code you have written and give a potential employer an insight on the quality of it. Keep that in mind when you start your projects and apply good programming practices from the beginning, like proper variable naming, useful comments and an overall good code structure. Also avoid using fancy or childish usernames on websites like Github or Stackoverflow.
Besides that, building things is the best way to learn anyway, so I would start with that as soon as possible. And you can even make some money along the way if your app is good. But don’t get hung up on “I have no idea what app to make”. That you build something is more important than what you build. Either write a program that you would want to use yourself, or take an idea that is already existing, like a to-do list app, and recreate it.
Contribute to open source
I already talked about putting your own apps on Github, and generally it’s a good idea to maintain your Github profile and make it as impressive as possible, because it’s a good way to show how active you are working on real projects. But instead of just writing your own programs, you can also contribute to open source projects. By improving other people’s code, you can show that you can collaborate and communicate with other developers and that you know how to use git, the version control system on which GitHub is based, and which is a required skill in most programming jobs. Besides that, it’s a good way to give something back to your favorite library/tool and learn a TON along the way. Seriously, working on and understanding other peoples code will improve your skill level much quicker than just working on your own projects.
Try to contribute regularly, not just in sprints followed by long intervalls of no activity. You don’t need great coding skills to start, maybe your first contribution is just fixing a typo. But also remember that we don’t want to be scared of a little bit of challenge and struggle, because this is exactly what will make us grow as developers. And the communication process with the project owners and other contributors might help you with the next point: networking.
Network
When you know certain people, opportunities spring up like mushrooms. This is pretty much the same in every career. When you have good connections, people might recommend you for open positions, which is especially helpful if you don’t have a CS degree, because then you don’t just get filtered out before you even get a chance to prove your worth. Go to meetups and conferences and talk to other developers. But don’t act like someone who is needy for a job. Just try to have a good time and get to know the people there.
Having offline contacts, especially in the city you want to work in, will help you more than knowing people just from the internet. That being said, online connections are good to have as well, especially since programming can also be done as a remote job.
Work for peanuts
Just temporarily. Time is an important asset, but if you lack experience it might be a good idea to work for free or very low pay if you can get your hands on an internship or freelance job. If you sign up for an internship, make sure that you will do some actual programming work there and that you are not just responsible for making coffee. Good internships will build you resume and might even get your hired directly, but depending on where you apply they can be very hard to get.
Doing freelance work for a low hourly rate is another way of getting experience, building your portfolio and getting new connections. If you have trouble getting work because you haven’t worked anywhere else before, consider offering your services for a low hourly rate on sites like Upwork.com.
Ok, that’s it for the main part of this list. Some other things I want to mention here that will further help you get a job:
- Properly prepare for job interviews. There are videos and articles about common interview questions available online.
- Focus on a discipline/language and don’t jump the track when you are bored. Learn the things that are listed in the job descriptions that you want to apply for. When you get bored or frustrated, read my blog post about the growth mindset.
- Just as GitHub, your Stackoverflow profile with it’s point system can work as an additional portfolio.
- Consider getting certifications like the Associate Android Developer Certification.
- Consider joining a coding bootcamp if you want to make quick progress. However, this requires a financial investment and is not necessary if you can learn on your own.
In the end it all comes down to how much of your free time you are willing to invest into programming. Do you enjoy coding for long hours, learning new concepts and working on real programs with other people? If the answer is yes – at least sometimes – implementing these strategies will come naturally to you, because they are ways of expressing your passion. I wish you the best of luck with your career.
Thanks to you for sharing your sincere thoughts and experiences with your followers.
You’re totally right about the point you touched.
I just want to add that we must create applications could be used in real life to handle with some our real needs.
Our xml skills could be not enough to make so cool fabcy UI. I don’t actually care xml side of my apps.
Perfection must be done in java code.
UI design and backend codes can’t be made by one hand.
I believe in that and i just focused on backend coding..
I find your background story very interesting, for someone ( cs student or someone who programs for a while) your tutorials show a very skilled developer, I like the idea of sharing what you learn each time, the article is very helpful.
Thank your for sharing, best wishes to get a great job