For beginners, come see here for advice on the best way to learn coding. I'm pretty sure there will be experts among us.
Back then, you really had to want to code. My first exposure to coding was at school where we had to use basic drawing commands (LINE, CIRCLE, etc) to draw a house. You'd write your program at home, and type it up in class next day. First assignment was to draw a house, which everyone accomplished with like six lines. I spent a whole afternoon coming up with two pages of code resulting in a 3D house with door, windows, chimney, and some scenery. And that's how I got hooked for life. Then came BASIC, Turbo Pascal, and the rest is history.
A lot of it was just banging my head on the table while exhausting every possibility. Some things don't change with time I suppose :)
Begged my parents until they bought me a Commodore 64 with a 1541 drive. I go a subscription to Compute's Gazette and typed in programs and figured out how they worked. Graduated to Richard Mansfield's Machine Learning for Beginners (https://archive.org/details/Compute_s_Machine_Language_for_B...) and I was on my way. And poured over the 'Antatomy of the Commodore 64' which had a dump of the annotated ROM firmware and poured over it to learn the machine inside and out (https://archive.org/details/The_Anatomy_of_the_Commodore_64/...)
And finally - dove into 'The Kracker Jax Revealed Books 1, 2, 3' (https://www.lyonlabs.org/commodore/onrequest/the_kracker_jax...) to learn all the protection schemes and how they were implemented to work around them. This taught me all of the tricks of disk access/memory compression, encryption and obfuscation. This really showed me a lot of how low level coding to control micro controllers/memory access/hardware level coding etc.
I had about four friends in school from 4th grade to high school graduation that had 64s and we would spend lunch and recess discussing what we learned/hacked/discovered the night before. Sure we were outcasts - but then we were so obsessed within our little world we could care less about the petty teenage drama around us.
Good times. I miss those days. I look at kids today and feel kind of sad that they lack the opportunity and/or the patience to do anything like that.
I spent the next few weeks absorbing that book as a way for me to honor his persistent career/life advice that I use my mind rather than my hands. I'm 38 now and haven't stopped coding.
And help it did! Not with school (I never figured out how to operate successfully in a school environment), but it was my first step that led to a career path that I've reaped the benefits of for over 35 years now.
But it was only the first step that lit a fire. From then on, I learned (and still learn) everything through reading books and magazines, doing, and picking apart the work of others.
My next computer was an Amstrad CPC6128 which came with a great built-in BASIC (Locomotive BASIC) that made graphics and sound very easy with built-in commands. The manual was excellent and illustrated the language with small examples.
My third computer, an Atari 1040STE, also came with an excellent BASIC (Omikron BASIC) and a printed manual. Later, while still in school, I even ordered a Simula 67 compiler and manual from Lund University in Sweden, having read about the language and object oriented simulation in a computer magazine.
Programming for me was hobby as a teenager in the 80s, I made small games and simulations and illustrations of math problems completely on my own with only the help of those manuals and no help of an adult.
Learning to program was a lot more accessible back then. I am often pondering the idea of building an educational app that captures the spirit and limitations of the experience a beginner programmer had in the 80s. Low level graphics and sound commands with obvious semantics (e.g. PLOT, DRAW, SOUND) are in my opinion the best building blocks for a curious beginner to create their own programs with. Loops, conditionals, variables etc. then become something you want to learn about because you need them to create what you have imagined.
I switched from backend engineering to iOS development 10 years ago partly because in my opinion it is the closest environment to the cozy world of home computers.
Oh, and there were two concepts I never fully understood when I was learning to program on my own, namely recursion and pointers. It took me until week 3 of my first computer science class at university (Algorithms and Data Structures, taught in Modula 2 btw.) to finally get it.
Versions of the BASIC language were slightly different, from what I remember some of the games wouldn't run exactly as written in the book, I had to try to figure out what the issue was and fix it.
I remember looking at and playing with the source code for other games on the ][ as well. For Little Brick Out, there was one poke statement where you could change the value and turn the whole background into bricks instead of just having them on one side.
I started building websites in the 90s, that's where I really learned. I wanted a website to exist, so I built it. I learned enough to implement the features I dreamed up. I started in HTML with server-side includes, and moved up to PHP which was my first proper web language. Things we take for granted (databases) were not always known to me--my first projects were all flat files with custom naming schemes.
The first code I remember seeing was GORILLA.BAS, in middle school. I began writing BASIC programs in composition notebooks. I don't have the notebooks anymore, and I doubt they would run, but they were choose your own adventure type games. I didn't have a computer until I was 16, though.
I also have run linux as my main OS since I was 16, and that exposes you variously to a lot of code, or at least it used to.
I've worked professionally as a web dev for many years based on this self-taught experience. I think the best way to learn to code is to build what you want. It will push your limits, but you'll stick with it because you need the thing. Even when you're very experienced, you have to learn new things with new projects. New APIs or libraries, new languages. So get used to it, just dive in and learn what you need to know today. It's easier than ever.
I've never shared this before, but my very first experience with "write lines into a text editor and run it" coding was in the Boston Public Schools system, at age 8, when we spent a few days learning Turtle graphics in the computer lab. "Move 10, turn 90 degrees, move 10, turn 90 degrees,"... And you have a square! This would have been, ah, 2002 or 2003.
Python has turtle in its standard library. https://docs.python.org/3/library/turtle.html It makes me very, very happy.
Python 2.7 was also my first "real" programming language, which I learned at 14 while working a summer internship at Akamai Technologies after 9th grade. I managed to secure the position over some more talented friends because as soon as we had an Internet connected computer in the house I accidentally broke Windows, got my upstairs neighbor (who I later learned worked in bioinformatics, which explains a lot) to install Ubuntu 12 before my parents got home, and devoted virtually every waking hour of my life to reading Wikipedia, which meant I ended up reading a lot about computer programming terms. The first nontrivial program I remember writing was a polynomial division calculator in Python so I could check my math homework, which I would discover 10 years later helped me a lot with grokking finite fields. I always love when ideas across time knit together.
Python is still my go-to for roughing in ideas to this day. My subconscious sometimes generates nonsense Python code in my dreams after I've had a particularly productive day at work.
Since then I've added quite a few weapons to my arsenal. As a teenager I really enjoyed learning to program in different paradigms as opposed to just different coding styles, so I picked up some Scheme and Haskell early on and they've paid a lot of intellectual dividends. Learning good old fashioned C from K&R has proven to be surprisingly useful context to this day.
Nowadays I'm much more pragmatic: If I can do it in a shell script, arguably the highest level programming of all, that's where I start.
Thank you for giving me this opportunity to brag about how cool and geeky younger me was. His life was by no means perfect, but I think he handled things really well!
It was another 4 years before I was in college and was able to run a program on an actual computer. An Algol program on a Burroughs B5500 mainframe, complete with punched card reader and line printer. After I graduated I got a job with a defense contractor, and spent the rest of my career working for defense contractors. At one of my jobs I worked on the flight computer software for the Air Force C-130 cargo plane and I would never fly in one of those planes, but that's a story for another day.
Fast forward to 1993 or so, I was at Brunswick Community College, and took an "Intro to programming logic" class and some other "Intro to Programming" class. I also built my first real PC (a 386DX/40 system with 1MB of RAM, which I later upgraded to a WHOPPING 4MB so I could run Borland C++). Anyway, I bought a copy of Herbert Schildt's book Teach Yourself C, downloaded a C compiler from some BBS (I didn't have Internet access yet at this time) and started learning to code in C. I consider this the real beginning of my programming education.
Fast forward to 1995 and I'm at UNC-W and taking another introductory level programming class, and it's about the first or second week of class and the instructor (Dr. Adhar) gives us some lab assignment to code in C. I code it up and wait as he's coming around checking on people. He gets to me, looks at my code, and in this awesome sing-song / rolling accent of his (I think he was from Pakistan or something like that) he goes "Aaaah, I see you be using techniques I no teach yet. Very good. Carry on." And it's been a continual process of learning more and more ever since.
I went from C, to C++, to Java, to Groovy, and mixed in splashes of Python, R, Octave, Kotlin, Prolog, LISP, etc. over the years. These days if I'm writing code it's usually either in Java, Python, or Groovy.
I think one thing that's missing in a lot of current programming education is too much focus on the grammar and basic constructs and not enough focus on the nouns and verbs. Environments like MATLAB, QBasic and even JS are great because they have lots of little bits of random stuff you can just start poking at and plugging together. I wish there were more beginner references which start with lots of random facts about assorted bits and bobs instead of trying to preach some boring grand unified theory of coding.
After getting through their courses you will know the basics. Then I would suggest following a tutorial or two (only do 1 or 2, you don’t want to keep copying code like this you stop learning). This will help you learn how to structure projects.
After that try to built small things on your own and use AI to help debug.
Doing this I went from knowing absolutely nothing to now being able to built small projects on my own.
Here is a link to my last project for example. I am very happy with what I have learned over the past 2 years.
Www.useequityval.com
Good luck, it’s worth the challenge!
So I clicked it I guess I saw the MOTD or whatever, saying to run "help" command. I ran it, started reading, started messing around with it.
Soon enough I had made a "chatbot" using nothing but GOTO statements. It had many branching paths, but the conversations were completely pre-determined. Like "Hello, what is your name?", "bob", "Hello bob, how are you today", "not good", "I'm sorry to heard that"
I sat down with it and the BASIC manual and figured out how to write a keyboard controlled animation of a cat. I was 9 and obsessed by cats. I think my dad was a bit taken aback that I'd managed it, but the ZX81 was basically mine from then on and computers were my new obsession.
That's a personal core memory right there!
Then I think I probably discovered some .vba files and became interested in that. I remember my first "real" language was visual basic 5 or 6.
I haven't used windows in more than 20 years (how time flies :)) but windows 95 will always have a special place in my heart.
Back then, we weren't connected to the internet. So getting a compiler was a real problem. I found one book that contained a CD with software. That's why my first language was C.
The first program sorted integers in an array. I later learned that the algorithm is called bubble sort.
Around 1994, I managed to get to a Computer Literacy bookstore.
being able to drag and drop text fields and buttons was majestic.