Finding a job, especial the first job in hi-tech isn't easy. One of the problems is that you are expected to have experience, but you don't know how to get experience if you don't have a job. The typical chicken and egg problem.

In this article I try to help you. Follow these instructions and you will improve your chances to find a job.

TL;DR: Contribute to open source projects and gain experience that way.

Job descriptions

Before we get into how to gain that experience, let's see a few job descriptions.

Non-Technical Skills - communication skills

In each one of the job descriptions I mention a bunch of non-technical skills that I think are important to these jobs. Some of these you can improve. Specifically the communication skills.

If you work in an office then most likely you will need to have good verbal communication skills in the local language. e.g. in Israel in most of the offices people speak Hebrew in meetings though there are more international companies where the people speak English in the meetings and in many interpersonal communication. However even there almost all of the writing is done in English. So being able to express yourself in English is important.

If you plan to work in a distributed company or as a remote worker then the written communication is a lot more important. In international companies I know it is usually done in English, but I guess companies that have a local focus (e.g. the Spanish-speaking market, or the German-speaking market) will probably communicate in their own local language. (So Spanish and German respectively).

There are plenty of traditional ways to practice a foreign language, but I'd like to point out something else. The best way to improve your written communication skills is to write lots of text. I would recommend you create a web site or a blog and start writing your technical progress. So as you follow the tasks bellow you also write posts explaining what you did, what problems have you encountered, what solutions have you found. This is both a good exercise and it can also help you find a job. Some people at companies will like the fact that they can see your thought process.

How to setup a website / blog?

Probably easiest way that needs the least technical skills is using one of the hosted services such as or Wix. In both of them you can start free of charge.

You can go with these and you'll get a beautiful site, but if you are looking for a technical job I would use the opportunity to learn more about the underlying technology as well.

The next level in terms of technical difficulty, is setting up a page on GitHub Pages. That will require you to understand Git and GitHub a bit and learn about HTML/CSS and maybe even JavaScript. This is free of charge.

Finally, if you'd like to go to the extreme, you can rent your own VPS (Virtual Private Server) and host your own web site there. You can install some ready-made software such as WordPress or you can build your own. I recommend Digital Ocean or Linode. At both of them you can get a VPS for $5/month.

If you build your own you won't get all the features the ready-made tools provide, but you will learn a lot more about the technical aspects.

My recommendation is that you start at the top, so you start writing right away, and then move towards the more challenging versions of your website/blog.

Technical Tasks

No matter which field you are interested in you'll have to be able to use Git and GitHub. (In some places it is GitLab or BitBucket instead of GitHub but the concepts are very similar and we'll cover the other two later.) So we'll start with that.

  1. Before you can contribute to other projects, you'll have to learn Git. That page has plenty of links to follow. The slides have exercises as well.
  2. Read How to contribute to an Open Source project?
  3. Go over the slides of: Collaborative Development and Open Source Projects and do the exercies.
  4. Better yet, read the book I wrote specifically for this: Collaborative Development using Git and GitHub

As Python programmer you will have to know Python quite well. As DevOps engineer or as a Test Automation engineer you will need to know one of the programming languages. Python is one of the common choices.

Learning for DevOps

There are tons of DevOps Tools you need to be familiar as a DevOps Enginner. You don't need to be a grand master in either of those and when you are learning them you will also mix them. The following seems to be a good order to start learning the first few.

  1. Git / GitHub
  2. Python
  3. Linux + Bash (in VirtualBox or natively)
  4. Docker

But remember, after you learned the basics of Git, start learning the basics of Python and use Git to keep your the history of your Python exercises. This will make you practice Git while you Learn Python. Then at one point start learning Linux and switch your Python learning to Linux. You can use VirtualBox to run Linux on top of your Windows system.

Once you are familiar with the above you can start learning Docker.

Open Source Projects