My two children seem to love technology and I want to see if I can provide a no-pressure, fun and intellectually stimulating environment for them so that they can give programming a try.
Hacking rules.ini for C&C: Red-Alert!<p>Game was too frustrating, but hey changing this easy to understand rules.ini file completely changes it to my favour! Also you could do hilarious things like an attack dog launching an artillery as its primary weapon. It taught me how to debug and roll-changes back when the game crashed with the dreaded "Internal game error" message.<p><i>cue Neo from the Matrix who starts to see the world as just code</i><p>But seriously, it was my first introduction to "programming" and then got me into QBasic via "Complete Idiots Guide to Programming" which I borrowed from the local library. I was also super into Aerospace and this book [1] also from the local library gave me background into computer hardware.<p>[1] <a href="https://www.amazon.com/Computers-Space-Journeys-James-Tomayko/dp/1567614639" rel="nofollow">https://www.amazon.com/Computers-Space-Journeys-James-Tomayk...</a>
In the very early 1980s, my father took me into a bookstore in Auckland, New Zealand. While he browsed, I wandered over to the personal computer section where another shopper noticed my interest, asked my name, and typed<p><pre><code> 10 FOR I% = 1 TO 10
20 PRINT "HELLO, NATHAN"
30 NEXT I%
RUN
</code></pre>
into a BBC Micro. And I was hooked. Mum and Dad saved for a year or two and bought me a Commodore 64, and I was away.<p>Now I try never to miss an opportunity to show the magic to young kids, and I always think of the kindly stranger when I do so.
AutoHotkey[0], which is a phenomonally inconsistent and bizarre yet simple scripting language for Windows that lets you hack together pretty much anything. I knew nothing about programming and was just trying to do something simple with it (I don't remember what), and failing until I dove head first into the docs.<p>The I discovered the forums, which had a lot of healthy discussion at the time. I remember contributing to a clipboard manager written in AHK called Clipjump[1] that I still use to this day (great concept, not so great implementation). This was when I was in high school in the early 2010s. From there I got a lucky break when I was hired with no prior experience for a PHP4 scripting job, and then on to greener pastures from there with JavaScript and Python.<p>[0]<a href="https://autohotkey.com" rel="nofollow">https://autohotkey.com</a><p>[1]<a href="http://clipjump.sourceforge.net/" rel="nofollow">http://clipjump.sourceforge.net/</a>
Are there are any games they play/might be interested in that have scripting facilities of some sort?<p>I got into tech of various flavors by learning to write RuneScape bots circa 2005-2009. There were a few publicly available Java reflection-based bot dev kits at the time, which was my initial entry point. I later got into more advanced programming topics by figuring out how the SDKs themselves worked and rolling my own, as the widely used free ones tended to get your accounts heuristically banned quite a lot. Sysadmin stuff when I got around to setting up proper remote bot farms, etc.<p>My example is somewhat more ethically dubious than a lot of similar-ish stories (e.g. blizzard rts mod development, Minecraft mods, etc.) but I've always found that "pure" intros to programming tend to lack an inherent motivating factor like what you can get with messing with games, whether it's to make something cool, skip a grind or generate some pocket money.
My dad was a programmer at Sperry Univac. Our scratch paper was 11 x 14 fanfold. He also brought home punched cards. I learned to read the holes (though not for punctuation characters). He had this laminated card with a list of assembly opcodes, what they did, and their time of execution. (I still remember that an add took 4 microseconds, and a multiply took 6).<p>Then our high school got TRS-80s in the computer lab. I borrowed the BASIC manual and read it while I was supposed to be paying attention in calculus. (It only took an hour. That's something to keep in mind when designing a language for kids to learn.) I already knew FORTRAN, but changing a FORTRAN program took a week (create a deck of cards, hand it off to a teacher, they took it off-site and ran it, and brought back the results). Whereas BASIC I could change in a minute. (Yeah, those who say that a REPL is a big deal? Instant feedback really does change things.)
I wanted to create things; games, demos; even boring business applications ‘out of nothing’. That was when I was 80 around 35 years ago. I still do and still have the same feeling when I finish something.
I had a VTech "PreComputer 2000" in the 90's, a kids toy. It was battery powered, with a 2 line display, had word games, etc. One of the games was "BASIC", which was like a typing game that beeped a lot. I finally read the manual and found out that BASIC was a pretty good game once you understand it.<p>I'm glad the creators of that toy computer made it into an actual computing device, more than the mere toy it appeared to be, and that they included a manual which actually taught how to program.
QBASIC.EXE! When I was in high school, there was this small program (small enough you won't delete for extra space for games) included with DOS that contained everything you needed to create a small program.<p>Today's official answer would be Visual Studio on Windows or Xcode on macOS which aren't simple or small.<p>The most similar contemporary approach to that simple game making is probably the 2D game engine LÖVE, which is awesome<p><a href="https://love2d.org/" rel="nofollow">https://love2d.org/</a>
BASIC games <i>printed</i> in 321 Contact magazines that you had to painstakingly enter yourself to play. At about 8 years old.<p>Ex: <a href="http://www.petesqbsite.com/sections/zines/others/basictr3.gif" rel="nofollow">http://www.petesqbsite.com/sections/zines/others/basictr3.gi...</a><p>Inevitably you'd copy something wrong, the game wouldn't compile or wouldn't work correctly, and debugging began.
I was "in to computers." I liked looking through files, new software, and drawing in ms paint. As I started at university, my buddy said, "you should take a programming class." I took CS101 in C++. I got an easy 4.0 and he hired me at his start up doing PHP. That was the start. Then I went into insurance, financial advisement, and teaching math in highschool. All the while, tinkering and toying with programming and some odd jobs (all the while raising a family that we started a bit early by conceiving at age 15). After failing at insurance, failing at financial advisement, and failing as a teacher (which all hurt), my side projects caught the eye of a recruiter, and I interviewed at a few places. I ended up with a great software company where I have grown tremendously and am now (years later) a principal engineer. I love what I do and I think I am pretty decent at it :). What does this mean for your kiddos? Find something they like on computers and link that to a programming problem. Helo them learn that a computer is a tool and a tool they can alter and control to do what they need done. There is no magic there.
I guess QBasic. Something about drawing a round face with two eyes using commands was just irresistible for me at one point in my life. Also nibbles.bas.
I had always been into technology and computers and had a few friends who were programmers, my mentor was a programmer, my dad was a programmer as well.<p>In high school I didn't always get along with the old man so I hadn't wanted to be a programmer honestly. But one time I had to do some VB with MS Excel for class and found it to be a lot of fun! I knew that it was kind of 'fake' boring programming compared to the stuff programmers do on the day to day, so I decided to learn real programming and now here I am almost 10 years later.<p>I think that you'll need to find a way to incorporate programming into some other domain that they fancy rather than trying to just introduce them to programming for the sake of it.
First, my TI-83 graphing calculator. I learned that I could write simple programs to take user input and do things like calculate the Pythagorean theorem. I eventually started writing text-based adventure games, and then simple graphical games by drawing pixels on the screen frame by frame.<p>Second, making a website using Flash. I had a great time drawing objects on a canvas, animating them using the timeline, and adding click-events to buttons. I ended up drawing a room where you could click on the computer to jump to a list of my favorite games, click on the journal to see something I wrote, etc.
The C64's BASIC prompt. The concept of a computer booting into an environment - an empty canvas, if you will - that allows you to immediately create something was ingenious.<p>Similarly, what sparked my interest in web programming was the ability to view the page source code in order to see how a specific result can be achieved.<p>While perhaps not going as far as the web's original creators envisioned it to be (the user being able to directly edit and publish from the browser itself) this feature allowed you to quickly learn from and build on existing code as well as try out new patterns and practices.
It started with fixing them. Family didn't have a lot of money so I'd get old Pentium 3 machines for free (around time core2duo was popular) while in middle school.<p>I'd put Linux or Unix on them and play free games like Wolf:ET.<p>Linux because - was shopping for Windows on Ebay and found Ubuntu 6.04 cds.<p>Had to learn basic bash. Coding started from there.<p>Internet wasn't the best, so I setup my own squid proxy, then web servers, etc. By HS I was writing code for fun and profit.<p>All thanks to some old Pentiums. :)
My father writing a number guessing BASIC program on the computer in his lab (possibly a Vector 3, I don't know) literally in seconds - in 1982 - to demonstrate its capabilities to me.<p>I still believe BASIC (with line numbers, particularly on graphics capable systems) was the zenith of stimulating programming environments for beginners. Having everything you might want to do available for download/copy on the Internet within seconds is the opposite...
RPG Maker 1998. For weeks as an elementary school kid I hounded some hobbyist game dev forums about what the hell "variable" means, until an older member relented and tutored me.<p>I was doing simple things like custom spell animations and cut scenes. I built a few dungeon rpgs back then, and sought more and more powerful tools to make simple games, GML, and finding Java in highschool was my first experience with a "real" language.
It's weird but I was never interested in it and had no idea what I was in for until I majored in computer science. My dad is a programmer and essentially told me that this is the way to go in the future. Having spent tons of time on the computer playing video games as a teenager, I figured it just made sense. Thankfully college opened my eyes to it and during the whole Facebook craze, it really sparked a ton of interest.
I was in architecture school and the coolest stuff we were doing was building 3D structures with a program called Grasshopper. I learnt that the program was written in Python code, and thought "the people driving the thing I'm most excited about in Architecture are programmers, not Architects".<p>Before then it had not really clicked how much code was driving innovation all over the place.
APIs. I documented my journey with them over here when I encountered them the first time art university <a href="https://www.robinwieruch.de/what-is-an-api-javascript" rel="nofollow">https://www.robinwieruch.de/what-is-an-api-javascript</a> They just empower you to build things.
I wanted to play games! Back then, you would get a magazine, peek and poke hundred of lines, and then save it to a cassette tape. It was heaven when I got my first cartridge.<p>My kid got a kick out of <a href="https://robocode.sourceforge.io/" rel="nofollow">https://robocode.sourceforge.io/</a>
I was really big into Counter-Strike (1.3-1.6).<p>Someone created two apps. Amytal would scrape Steam IDs to confirm what leagues the players were in. Bazbar would have a bot in IRC for #findscrim and allow us to chat with people.<p>Both apps could be run by sending commands from ingame chat.<p>It was awesome. Still no idea how they worked.
I'm fairly sure my start to programming was from a demo disc that came with our PS2 which had a basic interpreter on it. I remember it could so some graphics stuff that was interesting, but I just made some simple text based programs.
Video games for me too. Had to know how they are made. I was fortunate to get to work in the games industry for 7 years and outside of that I've made my own. If it weren't for games, I'm not sure what I'd be doing now.
If they are ages 4-6 I would suggest the Code and Go robot mouse. I started my daughter out at 4 on this and she had a blast.<p>We have moved on visual programming.<p>I have been building a course on how to teach kids Scratch programming with her.
The iPhone (or the "smartphone" in general)<p>It was both the sensor array: microphone, cameras, IMU, GPS, etc, and the paradigm change of everyone having a computer in their pocket that got me excited about software.
I knew that I wanted to be a math major when I started college, and my college's program required a course in programming. I took that first semester, and the rest was history.
Watching my dad while he created some code/UI in Microsoft Access.<p>Being able to create GUIs where I could put whatever I wanted seemed fun. Making it do something seemed even more fun.
in high school there were a lot of "manual" arithmetic math problems. It was a lot easier to type the formula into a python terminal than using a calculator.
mIRC. I built so many things using mIRCScript back then; I learned "dialogs", sockets, many internet protocols, dealing with binary, etc. etc.