Why am I writing this?
Hey, there. I'm Jan, the co-author of this blog with Ante.
Transitioning into development from an unrelated background might be scary. However, I'm a living, breathing example of someone who landed multiple programming jobs without any Computer science background.
I hope my story will encourage you to be persistent in learning programming and not to give up on the job you want.
What the hell was I thinking?
Before focusing on IT, I was studying Philosophy and Latin. Yeah, Latin. Even though I was pretty good at it, it won't come as a surprise that they weren't many jobs lined up for me after graduation. Go figure.
When that fact dawned on me, I started expanding my horizons a little bit. Since I was interested in technology, I started looking into computer programming. I soon realized that I could automate various things related to text search, like counting occurrences of certain words and phrases.
Thankfully, a lot of Latin texts are available in digital format, so I started there. I found it mind-boggling that almost no one in my field was using this to speed up their work. They were still flipping through dusty pages of moldy books, relying on their own memory and hand-written notes to find patterns in texts.
Even though I just started learning programming, I was able to get pretty decent results out of simple text-search automation. I centered my entire Master's thesis around a few scripts I cobbled together - and it worked. Not only I was able to graduate, but it also opened my eyes to the world of programming and automation.
My first programming experience
My first programming language was Perl. This wasn't a result of deep research, not by a long shot. I found out that someone who was doing text automation used Perl, so I started using it too.
Knowing what I know now, I wouldn't recommend learning it. It has a pretty strange syntax and the code is often hard to read and understand, especially for beginners. If you're unsure which programming language is right for you, check out this post.
After this initial experience, I started my exploring spree. I was tinkering with all the languages and all the technologies I could get my hands on. I was doing tutorials left and right, barely scratching the surface of each thing before moving on to something else.
I finally realized that I learned more about programming doing my Master's thesis than by going through an endless list of tutorials. That's because I was solving an actual problem I was interested in and not dealing with someone else's made-up examples.
Getting a job
Once I understood programming fundamentals and a few crucial technologies used in software development, I felt confident enough to start applying for junior developer positions. I don't remember how many applications I've sent, but I'm sure it was at least 20.
At long last, a small company gave me a chance. They were looking for a junior iOS developer with some experience in web development. Even though I didn't know Objective-C, I applied and got an interview.
The interview consisted of questions about various technologies and algorithms, as well as some coding exercises. They explained that, if I got accepted, my job would be to develop mobile apps for the iOS platform. Since I had no experience in that, I went home and didn't expect to hear from them.
To my surprise, they sent me an email inviting me to the second round of interviews the following week! I decided not to waste any time and started learning Objective-C right away. Since I understood programming concepts well, I got the hang of it fairly quickly and built my first iOS app. It was just a basic percentage calculator, with an input field, a slider and a text label. I wasn't asked to do any of this, but I thought it would improve my chances of getting the job.
On my next interview, I was hesitant to show them my simple app, but I did it anyway. This demonstrated two things - I was ready to take initiative and I was a fast learner. And this is what got me the job at the end, not some specific language or technology.
My academic background didn't matter; my inexperience didn't matter; my age didn't matter. I graduated in Humanities; I had only a few small projects to show; I was 27 years old.
What did matter was being curious, motivated and persistent.
Learn by doing
I stayed at my first job for a little more than a year. After my iOS days, I've worked as a full-stack web developer and a QA automation engineer. I wanted to broaden my skill set and gain first-hand experience in different facets of software development.
During these jobs I learned that there's no stand-in for real-life experience. Reading books, watching tutorials and going through courses will get you only so far. To gain real knowledge of a topic, you need to put in a lot of work, day in, day out.
That's why you'll learn the most on the job, where you need to complete each given task, where you can't just jump to something else when it gets hard or you get bored of it.
This also means you must NOT avoid job opportunities in technologies you don't fully understand. And the truth is that you won't understand them until you solve actual, real-world problems using that specific technology. You'll feel uncomfortable applying to jobs with insufficient experience, but if you wait until you feel completely confident, you'll never get a job.
The most important thing is to just start. There's no perfect timing or language or technology - you can always change things later if you get serious about programming.
Also, don't worry about code quality early on. Start coding as a hobby, have fun, and try to solve problems which are meaningful to you. Maybe you will turn this into a career, maybe you won't. But, whatever you do, don't get discouraged before you give it your best shot.
If you're just staring out, check out the e-book that Ante and I put together. It will help you go from having zero programming experience to writing your first program. There you can also subscribe to our newsletter which will help you build the tech skills you need to get the tech job you want.
I hope this post gave you a boost of confidence to start your programming journey! If you have any questions about the process, leave them in the comments below.