Programming First Steps

gvisoc

Well-Known Member
Joined
May 29, 2020
Messages
564
Reaction score
688
Credits
5,599
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.
  1. 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.
  2. 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.
  3. 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.
  4. 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.
  5. 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.
  6. 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:


PS -- I personally dislike javascript as a language, bit the above book is so good, that it's probably "the best first programming book" I have ever found.
 
PS -- I personally dislike javascript as a language, bit the above book is so good, that it's probably "the best first programming book" I have ever found.
Everyone are talking about Phyton, I've read that is a easy language, is it true?
 
Last edited:
Everyone are talking about Phyton, I've read that it's a easy language, is it true?
According to what others say, yes it is an easy to learn language. I know a year old teen that knows programming with it but choosing language depends on your needs. do you want to mainly program web or desktop applications?
 
According to what others say, yes it is an easy to learn language. I know a year old teen that knows programming with it but choosing language depends on your needs. do you want to mainly program web or desktop applications?
Sincerely, I haven't think about it, but programming desktop applications could be nice too.
 
i would like to say that for php and python try and get a grasp of what Objected Oriented Programming is. (OOP)

There's the procedural approach basically runs top to bottom; although with Fortran you can write in "sub-routines" so that when the sub-routine is finished it returns to code line where it left off.

With Object approach you instantiate and object from a class then , use that handle to use a method of that class.
php is along the lines:

$handle = new Classname();
$somevariable = $handle->methodName();
//above the variable $somevariable is assigned value of : $handle->methodName();

python you have to include "self" to paraphrases of method .


if you want to do mainly web stuff, then your next task on linux is to set up a workable "web server" that is useable and that can have php, html rendered and displayed via localhost: port
 
re Javascript
i hate it , but funny enough I can get my head around jQuery
 
Everyone are talking about Phyton, I've read that is a easy language, is it true?
It is an easy language, has plenty of capabilities (almost mainstream in data science and AI) and it’s in many cases the choice for teaching kids to code.

The raspberry pi foundation has lots of resources to learn Python at https://projects.raspberrypi.org/en/projects?software[]=python&hardware[]=raspberry-pi Although many require hardware to control, it’s usually inexpensive and makes learning more fun.
 
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.
  1. 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.
  2. 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.
  3. 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.
  4. 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.
  5. 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.
  6. 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.
apprechiate you taking the time to write this. I dabbled trying to learn some programming and all of the information out there makes your head spin, which language to learn, then which books, courses , projects to try.
I started with learn python the hard way by Zed A shaw, its critisized positively and negatively but its effective. funnily enough its this book that got me interested in linux, I was running macos on my macbook while following the learn python the hard way, there was an appendix chapter intro to some comandline commands that i was able to try out on my macbook- this then led me to download a linux distro and never look back! Ive been putting more energy into getting deeper with linux (taking the lpic and compita linux + courses) but i intend to pick up on learning some programming again at some point.
I had my heart set on python 3 but i also wrestle with "should i learn C instead /first"
 
I had my heart set on python 3 but i also wrestle with "should i learn C instead /first"
As I wrote in my first post, it is not about a language. Go ahead an learn to program, practicing with whatever language you find most interesting and welcoming to develop those problem-solving skills. Then you can ask yourself the question "what is the right language for what I want to code?".

I am afraid that C requires much more understanding of the low level details of the computer than other languages like Python, hence it makes it a bit harder to put your newly acquired programming skills to practice. But that doesn't mean that it would make it impossible.
 
Last edited:
I just want to say, i've been teaching myself this in small chunks for 4 years: don't do codeacademy, their software doesn't always work and they don't teach you a whole lot that you can't learn from google. If you do do formal education, then make sure you have support.
 

Staff online


Top