I'm opening a thread because I often get asked this question, in one way or another. I have been working as a software developer and software architect since 2005, and many times I get asked about what are the requisites one need to have to be able to learn to program, what are the best pathways for make a career change, and so on. There are also many other questions and dilemmas, as to what is the best programming language (It's a question for which I always want to answer "42"), is "coding" the same as "programming", and lots and lots.
I will begin dumping my most frequent answers, and then we can discuss. I'll try to keep this initial post short, and I hope I'll make sense.
I will begin dumping my most frequent answers, and then we can discuss. I'll try to keep this initial post short, and I hope I'll make sense.
- Coding and Programming.
- Programming is a discipline of thought that consists in splitting down a solution to a problem in steps small and simple enough for a computer to be able to understand them.
- The basic programming skills do not relate with a keyboard and a programming language, but refer to the ability of synthesising such decompositions.
- To learn to program, you need to have a basic understanding on how computers work. Rather than a book or a course in a specific programming language, you need to start by understanding what a computer can do under the hood.
- You do not need to know how a computer is designed, but rather what a computer can do and cannot do. It's pretty fundamental and quick to learn.
- I will post a link to a free book that, aside of a given programming language, gets you to know how computer works in a fundamental way.
- A pen and a piece of paper / notebook are, most often, your best learning companions.
- When you have your program cleary drawn or expressed in your notebook, or in your head, then you need to code it for the computer to be able to run it, and this step is where the programming languages get a role.
- What do I need to know beforehand if I want to learn to program a computer?
- Pretty much an elementary education will give you what you need. Primary School, I'm saying.
- It's good to have good basic arithmetic and logic skills:
- Arithmetic skills means to be good at sum (+) subtract (-), multiply (*), divide (/) and remainder of integer division (or "module": 4/3 = 1*3 + 1 -- I have a remainder of 1).
- Logic skills means to be able to decompose complex sentences like "George is friends with Rita, and Rita is friends with Ann" in smaller true or false statements, to infer truth or falsehood of the potential consequences ("George is not neccessarily friends with Ann").
- You need to have patience, perseverance, and focus on split a problem in smaller problems. This is learnt by practicing.
- Can I become a developer if I'm older than X years old? Yes. There are plenty of examples around. "I am too old to learn" is a lie we tell ourselves to lay back and do not do whatever.
- Do I need to study a degree to learn to program?No, if what you want is just to program.
- Computer science degrees with teach you much more than programming, and probably they won't make that much emphasis on delivering good programmers to the society.
- In a Computer Science degree you will get deeper insights in formal mechanisms to ensure the quality of the software, how to measure and model the complexity, what are the fundamentals for creating new programming languages, to name a few "extra" things.
- It's about taking computers and computing to the next level, the same as other scientific areas do, in other subjects.
- Look at Computer Science as the discipline of science that uses the scientific method to advance computers --how we make software and what we expect from the next hardware in order to.
- Should I spend X thousands of dollars in a coding bootcamp?
- Do not do only that.
- Coding bootcamps are useful, but please manage your expectations.
- They will get you started, but they won't turn you in a seasoned developer.
- After you get that initial speed, you need to keep learning and experience is key.
- Good, give me a book or a course to start.
- There are a lot of books and courses on programming languages, but not so many in to the broader programming concepts mentioned before.
- Lately, I always recommend a book that it's called "Eloquent Javascript" and it's free. It may seem a book about Javascript, but rather it's a good book about how computers work and it covers a lot of programming styles that you can find in plenty other languages.
- The good thing about Javascript is that your web browser is a complete programming environment -- you don't need to install anything else to do all the exercises in the book (you can, obviously, but it's not needed). Also, the book has a companion website with a user friendly environment to do your coding.
- You can read it online at https://eloquentjavascript.net/
- After reading and doing the book you should be able to take much more advantage of any book or course on any other programming language or style.
Last edited: