Learn Programming without a Background in Computer Science

June 29, 2019

I have been asked repeatedly by friends and colleagues how I learned programming. Having done my Bachelor's Degree in Physics and currently working towards a Master's in Industrial Engineering and Project Management, I do not have an academic Computer Science background at all.

Still, I have managed to acquire some degree of programming capability. I'd like to give you some tips for learning programming, and I'll make sure to share some stories along the way.

My editor showing python code

Learn programming because it interests you

One seemingly natural thing to do in order to learn a programming language is to buy a book or video tutorial for novice programmers. They come cheap and promise a lot. Buying digital products on the internet happens in an instant and, in theory, one can start learning immediately. Only you won't if you choose to start like this. I'd argue that most people who try to learn a language this way will stop after a few weeks.

Don't just learn programming for the sake of it. Picking up your first programming language is hard. Without applying it to something you are personally interested in is even harder. Try to establish a connection between what is relevant to you and what you want to learn. There is no way that just buying a random tutorial or book will give you the motivation necessary to keep learning.

When I was 14, I got really interested in WordPress websites. Wanting to modify them, I Googled something like "How to program WordPress". Fast forward a few months and I had learned my first programming language, PHP.

If you neither have a project you need to be able to program for, nor are you intrinsically interested in programming, I suggest you stop right there. It might turn out to be really hard for you to stick to learning and you'll likely abandon programming very quickly.

Learn programming because you have to

Maybe you're not the type of person who enjoys playing around with programming languages on personal projects. Maybe you're the type of person who thrives under the right amount of external pressure. This one is for you: try to make programming a necessity to reaching a goal.

When I wanted to write my Bachelor's thesis, I talked to different people at the department of Theoretical Physics at TU Berlin. I still recall my soon-to-be supervisor sitting in his chair, asking me whether or not I had any experience programming in Python. At this point, he proposed a thesis subject to me that I was really interested in.

Barplot showing the most used programming languages as described in the 2019 stackoverflow developer survey

After I admitted that I had no experience programming in Python whatsoever, he just shrugged and told me that I'd have to learn it then. Adding that the deadline for handing in the thesis was within the next six months, we shook hands.

In this way, I got started with Python. I just had to. This is powerful and you can leverage it, too! Go ahead and try to find a small project, at your work or on your course, for which you need to program a machine. It'll work wonders.

Which programming language should you learn first?

There are so many languages that one can easily get lost. No idea where to start looking for a first programming language? I recommend choosing a language appropriate for the task you want to solve with it. Let's see...

Do you have a WordPress blog and want to add features to it? Maybe you want to change how it looks and find out how your blog is generated? What a great opportunity for you to pick up PHP! Along the way, you can learn about HTML and CSS, two languages used to define how websites look and behave.

The cover of Eloquent JavaScript, Third Edition

Or what if you just want to create something on the internet, but you are not sure what? Take a look at JavaScript! There is an excellent, free resource called Eloquent JavaScript. Written in non-technical language, the author Marijn Haverbeke makes sure to apply new concepts through small examples working directly in your browser!

Are you in academia and want to run simulations or experiments? Go ask your peers and colleagues which language they use and pick up whatever they recommend to you! This might be a great opportunity to learn Fortran, C or C++, Python or R!

Here's a secret: It doesn't really matter what language you start with. If you manage to learn one language and find out that it doesn't suit your needs for a new project, just learn another language. The more you program, the easier picking up new languages becomes.

Useful resources

There are some things you can do to facilitate your learning experience.

Get a good text editor

An important point is picking a good text editor. Microsoft Code is a free, open source editor that comes with a nice graphic interface and which has a vast amount of add-ons available. I can highly recommend it to beginners, although it must be said that it has a poor level of performance, since it's an Electron-based application.

Next, there's Sublime Text, a beautiful, very fast and highly customisable graphic text editor. I used this for years and still have a version of it installed on my computer. Written in C++ and Python, in my experience Sublime Text feels a lot snappier and more responsive than Microsoft Code does. However, Sublime Text is no Free software. In addition, a license is quite costly. Sublime Text can be tested for an unlimited amount of time though.

Jet Brains, a company that builds IDEs specifically for programming languages, is also worth looking into. I've heard good things about them, though a license is very costly.

Learn 10 finger typing

Typing at the speed of thought is a liberating experience when learning programming. Try Keybr.com (This should be capitalised too) to learn how to type quickly.

Get a monitor, mouse and keyboard

If you learn programming cramped in front of a laptop, you haven't set yourself up for having a good time. If you have a spare 200 Euros, get a used screen, keyboard and mouse. You'll be able to work for longer periods of time without straining your body the way you would sitting in front of a laptop.

Some final thoughts

It's great that you're thinking about learning a programming language! Being able to program a computer will serve as a powerful tool, no matter what you end up doing with it. It's not easy though. Think about it in the same way you'd think about learning to play an instrument, or learning to speak a new language.


The cover of the book Eloquent JavaScript is licensed under (CC BY-NC 3.0) and has been created by Marijn Haverbeke. If you are interested in how I created the "Most popular programming languages 2019" bar chart , I have hosted the notebook on github.

Profile picture

By Philipp Jung, a data engineer with one foot still in academia. Follow me on mastodon.world/@pljung, or reach out on LinkedIn.