What is programming?
Let’s get right to it – programming. What is it? What does it take and what does it mean to be a programmer?
Merriam-Webster defines it as “the process of preparing an instructional program for a device (such as a computer)“. How on earth do you even get around to preparing an “instructional program for a device”? You write it. You write code. Just like you would write a poem, with a specific way of writing words, using punctuation and structure.
“Wait you don’t write out “01110010 01100001 01101110 01100100 01101111 01101101 00100000 01101111 01101110 01100101 01110011 00100000 01100001 01101110 01100100 00100000 01111010 01100101 01110010 01101111 01100101 01110011 00101100 00100000 01101100 01101111 01101100″ to the computer?”
You can do it if you really want to (you probably don’t), nowadays you write words in English. Then the computer takes it from there, it does at one point translate your code into ones and zeroes (binary code) because computers at their most deepest level are just electricity switches, where “1” means electricity can go a particular way and “0” means it can’t.
“So you want to tell me, programmers are wizards that bend electricity to their will?”
Yep. Ain’t that cool? Let me tell you a few things that programming is not.
How to be a programmer?
I want to completely destroy the following stereotypes right here and now:
“You have to be a professional in mathematics in order to program.”
The most popular stereotype I’ve heard and it’s one of the most false ones. No. Your skill at mathematics does not affect when you can learn programming. I don’t even know where this came from, but think about it – computers are infinitely better at math than humans. Humans are infinitely better at solving tasks creatively. Computers cannot do anything without instructions. Of course, if you plan on joining the industry in a sector that’s specialized in mathematics, like companies that create massive reports or otherwise do a lot of number crunching, then of course you will need to know math.
Knowing math is useful in any life situation, but it definitely is not necessary to learn programming. If you will need it, you can learn it along the way (in case you want to do it right this moment, khanacademy.org is an amazing learning platform that has a lot of material on math for free, they’ve turned learning math into a game).
“You have to attend university to learn programming.”
Yes and no. Yes, because universities are ok when you do not know what you want and someone is ready to pay for your uncertainty. No, because most universities do not cover real life situations in programming. Students are not instructed to solve real life problems in real life situations, instead they are fed a bit from everything in hopes that something will stick, spreading their knowledge far and wide, and not supplying them with enough of practicality.
I, personally, would suggest to learn off of the internet (like you are doing now, good job!) and when you have something to show, join an internship, a bootcamp, a meetup, jump into the real life programming environment and have professionals around you as soon as possible. Only people with real life experience will lead you into the right direction. I self-learned myself into joining an internship, then I was hired full-time. You can do it too!
“You have to be real good with computers to learn programming.”
I find this one pretty true, because obviously you have to know the machine you’re going to be writing poems for, but it’s not fully true. In reality the minimum of what you need to start is:
- A computer connected to the internet.
- Understanding of the English language (there are learning materials in other languages, but English has the most).
- Willingness to learn.
That is all. In order to start learning programming, this is the minimum requirement list. With so much information on the internet about pretty much anything, the information you want to learn about computers is most likely just one Google search away. Even if you are not professional with computers as to how they work inside, you will learn this on the job.
“We’re going to write in notepad???”
Yes, we are going to start off with notepad.
How to be a good programmer?
In order to actually succeed as a programmer, you actually need 3 traits:
- Eye for detail
- Being communicable
In reality, you will get stuck a lot, especially in the beginning. I will give tips on how to get stuck less frequently and when you do, how to get back on track faster. It is inevitable, that you will have situations where everything “should work”, but doesn’t. You might be stuck on problems for days or even weeks. That is the reality of being a programmer. It is not because you’re bad, it is because there are a lot of moving parts to take care of and mainly – you are going to work with code others have written.
Eye for detail
You think a misplaced comma is a programmer joke? It isn’t. One small mistake hidden somewhere can, in fact, crash a system. There are tools and techniques that help you with finding problems like this, but it is also inevitable. In programming “myProgram” and “MyProgram” may have two entirely different meanings. Everything has to be precise for the program to run smoothly.
“What? But I thought i’m going to give instructions to the computer, not humans!?”
Of course, but you will work alongside other humans, you will be taught by other humans and you will participate in code reviews with other humans, where other humans will look at your code, then at you, then at your code again. Then they will ask questions as to why do you think your code is the way it is. It is very important to be able to speak your thoughts clearly, to explain why you think your code will work the way you intend it to. It is also very important to ask questions when you are stuck. Do not even imagine that sitting and staring at your screen will magically solve the problem. You are a problem solver, so solve it. If you can’t, you can ask for input from your colleagues or the internet.
One fun exercise is to have a toy on your desk and you ask it the questions you have. You might come up with an answer while vocalizing your problem. It is called “Rubber duck debugging“, because the origin of this is when someone explained the problem to a rubber duck and came up with an answer to their problem.
As Wikipedia states: “Many programmers have had the experience of explaining a problem to someone else, possibly even to someone who knows nothing about programming, and then hitting upon the solution in the process of explaining the problem.”
I myself have written questions to colleagues, only before hitting “Enter” I realize, that the answer is hidden in the question itself.
How to start learning programming?
You’ve gotten this far. You have shown interest. I believe it is time for you to venture down this rabbit hole and see where it leads you, start with the Good ol’ HTML.