Slashdot Asks: How Did You Learn How To Code?
Last week Apple's CEO argued that computer programming should be a 'second language', and that it should be a required subject for all students starting in 4th grade. But a large number of professional programmers didn't learn how to code in a formal school program, either because they're self-taught or because they learned on the job. There's a lot of abstract discussions about the best ways to teach coding, but if there's any group that's uniquely qualified to answer that question, it's the Slashdot community.
So leave your answers in the comments. How did you learn how to code?
So leave your answers in the comments. How did you learn how to code?
But a large number of professional programmers didn't learn how to code in a formal school program, either because they're self-taught or because they learned on the job.
Citation please.
Thank my Uncle for introducing me to DOOM when I was ~10 years old. -- immediate "I want to make that". And so I picked up some books from the library.
What qualifies as coding? Is it programming languages, or can it be as simple as doing stuff in mIRC, Mathematica, and Matlab?
... in this book: http://www.atariarchives.org/m...
That is, the usual way for 1980s computer geeks. Self-taught BASIC on an Apple II using a few books on Applesoft and Integer BASIC. Later Pascal also on the Apple II with a few books including Jensen and Wirth's PASCAL User Manual and Report. Learned C (K&R, mind you, none of that prototype crap) on a Mac XL with the old Megamax compiler. Picked up 6502 assembler out of necessity in there, also 68000 and 6809.
I was off and running. Self taught basic, 6502 and Z-80 assembler. Worked two summers to buy my first microcomputer.
Learned a bunch translating various basic dialects. Typing games in from Creative Computing etc.
Backfilled informal programming education with EE and CompE degrees.
I can spot the potential future programmer among 10 year olds playing. The future programmer is working puzzles requiring thought.
John McAfee 'It was like that time I hired that Bangkok prostitute; to do my taxes, while I fucked my accountant'
I first saw code on an Apple II - the Star Trek game.
I read an introduction to programming, and proceeded to modify the Star Trek game to not decrement the photon torpedo count whenever I fired one - ditto energy levels for shields and phasers. After a while I wrote a bouncing ball game, similar to pong.
Some time after I left school I found myself as the sysop for an IBM System/36, and I would play around with the application software source code to see how it worked - not the actual source code, of course - I made a copy to play with. The IBM programmer's and reference manuals are quite comprehensive and from there I was able to take on the source code maintenance and development roles. It was mostly RPGII, with a little bit of BASIC. Then we moved to an AS400, RPGIII, RPG400, and SQL.
They sentenced me to twenty years of boredom
wanted to. didn't have to.
I learned to code first in classes in high school (BASIC, FORTRAN, COBOL, Pascal) and then by reading the relevant books or documentation (C, C++, Lisp, Icon, Java, C#, Perl, Python, Ruby, PHP, Javascript et. al.).
The more interesting question is where developers first learned to program (a completely different skill from coding). IMO we don't need to teach children to code, we need to teach them to program. Which means first teaching them to approach problems logically and analytically, which is going to cause the loss of about 75% (my guesstimate) of the educational establishment when they can't deal with students who know how to analyze material, do independent research and call teachers on incorrect classroom material.
Depends on age, and what the market does. I started first reading and typing games from big BASIC books, some semi-new but most were from a used bookstore. Early 90s was a great time. Beyond that, it was idle time and access to a computer that allowed me to first learn more about the culture of programming and then its job opportunities. Unlike most I chose not to pursue coding as an occupation because of the being in school when the dot com bubble burst, and observing the rise of globalization and its transposition of work that isn't physical to the cheapest places. I work in operations planning for industrial production now, which is similar and involves programming but is less susceptible to replacement. It is an effective cross between blue and white collar jobs.
10 i had a TI-994a and it taught me BASIC
20 i had a subscription to some magazine with source code that i had to type into my TI-994a
30 goto 10
BASIC programs in the back of 3-2-1 Contact, my first foray into programming.
I think it was COMPUTE! that had some fun/interesting stuff entered via DEBUG, too. Although I'm not sure there was adequate explanations for what those programs were really doing, nuts and bolts-wise.
I learned the hard way. I read the TRS-80 programming manual and followed the directions. From there it was all downhill as I got the programming manual for my vic-20 and the 6502 processor assembly instructions. After that it was apple basic and more 6502 assembly on the apple-II. A course in high school on BASIC(which I knew more than the teacher) and PASCAL. Then it got really hairy when I went in the military and started reading the unix manuals we had available to us and teaching myself FORTRAN, C, and Ada. After that it was just a matter of reading reading reading. So, I guess, reading is the way I learned. We didn't have youtube back then so we had to read for ourselves.
In the 1990's if you were a fresh grad with 80K in student and credit card debt, USD200 to your name and not a soul on earth to help you, coding for 30K a year was a way to put food into your stomach. The offer looked even better with no gas money to get to the next interview. Doesn't matter if you've never written any code. Any fool with a solid IQ and a fire under his ass should be able to get good at coding pretty quick ( finding out about Scott Meyers, Erich Gamma, Fowler, Aho, et. al. early on helped. Need to buy all those guys a beer one day. They saved my ass. )
I took a class in high school because I was interested in programming.
Before that there were a few opportunities to get the basics in grade school. There were typically only a few computers in the school that all classes and grades took time sharing. One year, it was just the turtle program where they trick kids into programming by drawing shapes by giving a turtle commands. Another year we used BASIC to implement simple math problems.
I don't understand what the problem is. Back then computers were rare and expensive. Opportunities with them were limited, but we were all exposed to some form of programming. Today even homeless people are given high powered cell phones. Schools have computer labs. Schools force kids to use TI (programmable) calculators for basic math. If a kid wants to learn how to program, it is all right there waiting for him.
I keep seeing these people post "I just learned to code - what program should I write?" questions. If you can't think of anything to code up then you aren't a programmer - just not for you.
Books!
First: The Apple ][ Basic Manual.
Second: Rodney Zaks, Programming the 6502
Third: Jeffrey Stanton, Apple Graphics and Arcade Game Design
38 years later my bookshelves are heaving.
I should use this sig to advertise my book ISBN-13 : 978-1501515132.
I went to a summer program in 1966 (!) where I learned Fortran II and then IBM 1620 assembler. I think the computer had 2k of core memory or something. Those IBM 026 keypunch machines were really something.
Like another poster, self-taught BASIC on an Apple IIe and BASIC on a VIC20 saving on tape.
Tired of my customary (Score:1)
"Sam's Teach Yourself C in 21 Days" (By day 21 they literally mean all day)
Later went to college and took into programming with Python and realized I had been doing it the hard way. I still think C is a great way to start. While what you can do may be limited, you come out with an actual understanding of what is going on behind the scenes and better appreciate the features of modern languages. I would start students with assembly that they hand assembled, but maybe I am a bit evil.
I also don't see the need to force every kid through years of programming classes. Some students will naturally gravitate to it. They should have an opportunity to discover their skills and expand on them, but there is no need to try to force everyone to learn to code. How much software are we really going to need such that we think we need to turn every last american into a developer? By my perusal of the app stores I conclude we have more than enough developers already.
A goal, stubbornness, and Google.
I learned how to app apps by using apps that app other apps! Only LUDDITES write code!
Apps!
I learned it by taking a class. Machine, Assembly, high-level. The arguments were all about which language to learn. Punched cards - the best way to enter code - no upper/lower case, so shift keys put numbers and special symbols onto regular letters. Much faster than stupid keyboards of today.
The most accessible BASIC interpreter around (back then). I learned how to type on it, as well as how to code. Sure, "30 GOTO 10" isn't the most profound statement but it got my interest going.
Damn_registrars has no butt-hole. Damn_registrars has no use for a butt-hole.
One day when I was 10 or 11, I was super bored and aimlessly looking through all of the folders on my computer when suddenly, I wondered how the files on it were made. After some research, I went down to the book store with my dad and ended up getting a copy of C++ for Dummies, which I worked halfway through before just doing whatever I wanted.
Computer class in school, spring of 1959. Coded in Hex, 512 bytes of memory (recirculating drum), 32K mass storage that was so big one didn't know what to do with it. Solved differential equations, linear systems with rational coefficients, and computed root locus diagrams. When somebody came along to add an assembler I didn't see the point, as it wouldn't even let you use instructions as data, and made it more difficult to plan jumps to account for the rotation of the drum. If you used floating point you lost 128 bytes of the memory. It was a very different world.
Timex Sinclair 1000 followed by a Commodore 64. Both had built-in BASIC and shipped with an adequate manual. I also had the C64 "bible" Programmer's Reference Guide and a subscription to Compute's Gazette and the odd issue of Transactor. I wasted several months of summer vacation sweating over my c64. That would have been Jr. High.
In the late-1970's, a junior high friend and I would walk down the street after school and learn to program the brand new TRS-80 at the local Radio Shack. The manager was initially suspicious that we were trying to shoplift (!), but quickly realized that we really were interested in the computer. We learned enough BASIC to program some simple but eye-catching visual effects. I think the manager allowed us to spend so much time monopolizing the TRS-80 display because other customers probably thought, "Hey, if those kids can do this, then I can too!" :)
Saw that my dad had a copy of Teach Yourself C in 24 Hours and went through it.
Self taught, same for FORTRAN, BASIC, PDP-10 Macro assembler before I was able to take my first class. BTW, Per Brinch Hansen couldn't program his way out of a paper bag, that's what he had students for. I think his wife wrote his books.
Got started in sixth grade by typing in BASIC games from David Ahl's book, taught myself Pascal, Fortran, and FORTH from books, taught myself 6502 assembly from Adam Osborne's books, got a job writing in TAL (Tandem's proprietary language, very similar to Pascal), then got a different job working in C, where I had the good fortune to be in an office between two expert C programmers (one of whom later sat on the ANSI committee that standardized the language). Got better at it by working with the smartest people I could find.
-jcr
The only title of honor that a tyrant can grant is "Enemy of the State."
started hacking in 4th grade 1998 computer typing class.
Prof Mahabala, Dept of Comp Sci, IIT Madras, IBM 370/155, punch cards, FORTRAN
sed -e 's/Chuck Norris/Rajnikant/g' joke > fact
Took some courses as electives as part of a degree in engineering. Let's see.... Algol (which seems to be a direct antecedent of Pascal) followed by PDP8 assembler and then a packaged called GPSS II which was used for queuing simulations.
After that I just picked up new languages as needed for my work including FORTRAN, Pascal, PERL, C, and far too much JCL just to get things to work on Big Iron. Still Going with a bit of Python and of course the newer web things that I don't think of as a general language (e.g. HTML, PHP, CSS, etc) but are useful for specific tasks. Got into Unix/Linux late in my career and I hope this learning curve never ends.
My dad bought some IBM computer in like 1986. I was 8 years old. Taught myself BASIC from following examples in my dad's books. Eventually took QuickBasic and TurboPascal at my local high school. Finished all computer classes when I was 14. Hacked our Novell Netware network when I was 15, nearly expelled. Learned barely anything in college. Hacked Geocities and MSFT Hotmail (completely owned both) when I was 20. Etc etc.
I started my programming on good old fashioned basic interpreters with gotos and all that jazz.
All of the c/c++ zealots will cringe but it really is the best way to dip your toes in the water.
i learnt to program at school from a Ph.D computer scientist. We never even had computers in the class. We learnt to break the problem down into sections using flowcharts or pseudo-code and then we would translate that program into whatever coding language we were using. I still do this usually in my notebook where I figure out all the things I need to do and then write the skeleton of the code using a series of comments for what each section of my program and then I fill in the code for each section. It is a combination of top down and bottom up programming, writing routines that can be independently tested and validated.
"I have the attention span of a strobe lit goldfish, please get to the point quickly!"
The TRS-80 booted to a basic prompt if there was no cartridge inserted. My dad got a book with a few hundred programs printed out, and one of use entered them in by hand and ran them. Then I would make changes to the code to make it do other things as well. I learn mostly by trial and error. When we got an Apple ][ clone I got a copy of "1001 things to do with your Apple II" and I was off to the races.
I finally took some formal classes in college, but spent most of my time lamenting the need to listen to things I had already learned.
The thing is, I had this opportunity because my parents had the resources to get the computers, and I was encouraged by teachers and friend to continue to learn. It is pretty clear that the best programmers all started by forth grade, not high school or college. If only rich white kids can start that early and boy are more likely then girls to take up computers as a hobby the current demographic deficiencies in the industry are likely to continue.
Strive to make your client happy, not necessarly give them what they ask for
I'm one of the group that Slashdot crowd loves to despise - an H1B programmer who grew up in India. But unlike the stereotype that people here like to paint of Indian H1B workers, I'm a pretty good programmer/developer.
In my school in India, programming was taught to all students as part of the school curriculum from 5th grade. In those days, during the first few years we were taught programming in GW-BASIC, and basic CS principles, binary arithmetic, boolean logic etc.. Towards high-school, COBOL and FORTRAN got added to the school curriculum.
Once I reached college, I was required to learn the C language during my Bachelors in Engineering program as part of the curriculum. In parallel, on my own time, I also learned OOP and OOAD principles, Java, and some VB, SQL and C++ by the time I graduated from college.
Once I graduated, I moved to the US on an H1B visa, and have been working here as a Java developer for more than a decade now. During that time, I've picked up a bit of few other languages, such as Perl, Python, LISP & Shell scripting, though I really wouldn't call myself fluent in those languages.
I was interested in computers since I was around 7. My first computer was a V-Tech "Learning Computer" which barely did anything, but I played with it all the time. My dad bought a used VIC-20 from a friend, and I sat with this book and tape until I could program Basic:
https://archive.org/details/VI...
My Other Computer Is A Data General Nova III.
I started on page one of the O'Reilly book Learning Python and, get this, wrote a flash card program that quizzed me on Python. The further along I got in the book, the better the program got. Had to start over three or four times to clean up the spaghetti but by the time it was all over I had a pretty good handle on what I was doing.
The soylentnews experiment has been a dismal failure.
I started when I was 15 years old (that would be 1992) on a Commodore 64. I wanted to write a program that would generate character sheets for me in Dungeons and Dragons and print it out. Then my Dad asked me to write a program for currency exchange. I think he even used it once or twice. LOL. I guess today I would be working on Java or Raspberry Pi projects. Learning was much harder then because there was no internet but the programming (BASIC) was much less complicated,
Mean what you say...say what you mean.
Basic, then Z80 assembly on a timex ts1000 (a Sinclair zx81 rebranded for the US market).
Really it's a desire to make that probably started with lego, but my first real experience tinkering with code comes from the first Unreal game. My father would atay up late to play it, and durning the day i would sneak on the computer and open up unrealed and load rooms full of baddies and put guns ever so far out of reach, that lead to an interest in learning uscript, and modding other games.
In college they didn't teach any courses in the hip new language that I wanted to learn, so I took a course in Pascal and taught myself "C" in parallel with that.
I liked C a lot better.
I *also* learned an immense amount during the same time period by picking apart an open source game, modifying it, expanding it, learning everything about how it worked. I'd say the majority of what I ended up actually learning was self-taught.
However. . . Looking back, I'd already been dabbling with trying to learn BASIC and other such stuff for a few years by that time, and my progress had been VERY SLOW. I'm sure my self-teaching/dabbling progress would have been way faster if I'd had access to the amazing online resources that now exist.
Thought that was cool. From there got the C64 Prg Guide ("kernal") that Commodore put out, the one with the plastic fingers binder, about 2 inches thick. Went to 6502 assembly soon after since the MS-Basic was weak. Went on to do some 8500 programming too (whatever the floppy drive used). Thought I was hot. I was, compared to everyone else, but still a greenhorn by any definition I would use today. Then on to 8086 assembly. Still used BASIC as the base from which to run the asm code. QuickBASIC 2.0. Then on to the basic compilers (BASCOM). Then on to C. Then to C#. Then to C++.
There was formal stuff in there, too. Fortran. PL/I. RPG! (actually disliked that, not really a programming language, after all). Actually, did get a BBA out of it. BBA, yes.
Look its a computer!
It has BASIC built in... now start typing!
Basic, around 1985.
That's a mighty big presumption. Citation needed.
As for me, I took a course in high school that went as far as if-then and for-next using cards. Years later, I was asked to solve a business problem. They handed me a laptop and a Wrox book on Microsoft Access. 14 hours later I had solved the problem and fallen deeply in love.
More recently I taught advanced C# at college.
I have absolutely no idea how best to teach any particular age group.
while watching scat videos on porntube.de
I was on a school field trip, wandered away from the group and was bitten by a radioactive programmer. Pretty standard stuff.
Anons need not reply. Questions end with a question mark.
Learned to use Hypercard on my Mac.
Then messed around with changing colors on the Commodore 64 at elementary .
- A TI-83 & TI-89 at high school.
- Matlab class in college.
- PHP in my free time in college.
- Then Java, C, C++ in college.
- Then 'self taught' Python from code academy (just to learn the syntax).
I started BIGNUM years ago and I hope I'll still be learning until the day I die.
Knowledge is how to play a game, intelligence is how to win, wisdom is knowing what game to play.
2nd
I taught myself C by staring at ROM code. I figured out all the syntax and statements of C that way. Eventually bought a standard library reference too.
In 1978 as an undergraduate was fortunate to attend a FORTRAN77 class given by the Electrical Engineering Dept.
A few years later I bought a Commodore VIC 20 and a book about BASIC (1981).
I bought a book on DOS: DOS BIBLE (1984).
Then I took a class that was taught using a Digital VAX and a variant of UNIX (before C) (1986).
Then I took a class on UNIX and C (Summer 1992, University of Maryland). At the "computer lab" there was a NeXT workstation.
Then I took a class on UNIX Administration (1995).
Then I took a class on LINUX (1999).
2000 through 2016, bought O'Reilly books on LINUX and UNIX, Perl and PhP, Java, C++; still taking classes as the topics narrow to specifics of hardware and MPI for instance. :-)
When I was 10 years old (1995) my dad refused to download any more DOS games on CompuServe. He said "Son, if you want to play more games, you'll have to make your own!". So I did. I began writing DOS batch file-based adventure games. Later I learned TI-83 BASIC in grade 7, then gwbasic and QBasic in grade 10, as well as HTML by seeing what would happen if I changed file contents. Later Visual Basic, Java, Javascript, the rest is history... after a few years with Lockheed Martin I'm now the CIO of a growing software startup (vsbuilder.com).
Using a teletype on the school district mainframe, with an acoustic modem. There was no such thing as a personal computer at that time. ...
I taught myself basic.
Pascal was the language taught in college.
Since then I've taught myself C, C++, Java, Python, Javascript,
MU BASIC.
"Win treats sysadmins better than users. Mac treats users better than sysadmins. Linux treats everyone like sysadmins."
Just look at all of the shitty, shitty code that's out there. Any professional programmer will have encountered it. It turns out that nearly all of it is the product of these untrained programmers (they like to call themselves "autodidacts" to try to sound better than they are).
What's worse is that they'll try to blame properly trained professional programmers for this shitty code. Yet often it's the professional programmers who are burdened with fixing this broken, awful code written by untrained programmers.
It's really disappointing to see how much software out there is written in, say, JavaScript, just because that's the only language that some untrained programmer knew of. Or how many software systems use NoSQL databases that lose or corrupt data just because some untrained programmer didn't want to learn SQL and didn't know how to use a relational database. Or how these untrained programmers try to sort collections of millions of items using bubble sort only to wonder why it's so slow. It's all so unnecessary. If trained professionals had written the software in the first place, then all of this waste would've been avoided.
All of that code is the citation you're looking for.
I'm not sure there are any of us left but I was taught programming at a formal IBM assembly language school in 1966. The class exercises were run in a virtual environment (vmware is hardly new technology) so as not to crash the mainframe The favorite machine opcode of course was HCF - halt and catch fire! The closest thing today would be studying the Knuth books which sadly are hardly used anymore.
I learned to program starting as a Freshman in High School. The year was 1972, and the community college across the street from the High School had an IBM 360 and as part of their agreement with IBM to have the mainframe at a discount, they had to offer free user accounts to the public. I learned about this from another Freshman who's father taught at the college. I walked in an asked for a free account, and they asked me which programming language I would be using; BASIC or APL. I asked what APL was and they said it was for math and science types and I knew that was the language I wanted to learn. I used APL for 8 years, but found that switching to "structured" languages difficult. I finally sat down and learned 6502 Assembler. Once I understood machine level programming, then learning C, FORTH, and Pascal was much easier. Since then I've learned, in no particular order: C++, Smalltalk, Java, Javascript, Fortran, Clojure, OCaml, Dylan, Object Pascal, Objective C, Factor, Perl, Python and others I've probably forgotten.
In the mid 74, in first year algebra, we had a week-long unit in programming using BASIC. The computer was ... somewhere. Our access to it was via a paper terminal with a tape reader, phone coupled modem, you know the drill. I fell in love. Spent any lunches and free periods I could get my hands on writing my very first program (a grand units conversion program) with a basic manual at my side. Can't say I learned in any systematic way; and I'm sure I learned some awful habits that took some time to unlearn, but oh it was magic. Punched cards just weren't the same in '78 :-)
After I graduated with my CS degree from a decent college.
I owe 80% of my career to this book.
--Senior Engineer at FF500
In ~2nd grade my brother exposed me to programming with doing simple character animations in TI 99/4A BASIC.
I actually just two weeks ago recreated that experience for the first time in 21 years and posted it to YouTube: https://www.youtube.com/watch?...
I Do C++
Learned by dissecting programs to phish AOL accounts when i was in 8th grade. I was always into the darker side of computers, but i learned a lot. Also had unlimited dial-up since dumbasses would give up their passwords all the time. Now i put those skills towards a positive. I program automation so people don't have to work anymore. They can just sit at home and collect unemployment.
Scott
Now I'm a CEO/Astronaut with a townhouse and pink convertible.
When I was in the 4th grade I started to read a BASIC book from my dad's bookshelf and typed in the programs in Omikron BASIC on an Atari ST.
Years went by and I switched my primary programming language from Omikron BASIC to GFA BASIC, to MSVC++ 1.0, to DJGPP, to GCC on Linux.
...and 90,000 hours practicing. Still learning.
When the world was young and the dead sea was only sick, it was easy to Ctrl-C or Ctrl-Break your way out of games that were written in BASIC/BASICA and just do a LIST of the game's code since games usually shipped in code not in binaries. It was a heck of a learning experience - all those mysterious peeks and pokes made you want to learn more.
After that it's just a case of getting your hands on a copy of MASM, Turbo C or Turbo Pascal and away you go...
Seven puppies were harmed during the making of this post.
Program math and physics formulas in BASIC on TI-85, and created Space Invaders and Worm in Pascal. Good times.
I started in BASIC on a DEC mini-computer in 5th grade and was quickly smitten. Soon I subscribed to Creative Computing and typed in almost every program in the magazine. Next I was played around with assembly on an Imsai 8080, then I got my own Apple ][+ (I splurged for 48K RAM) and used BASIC, 6502 assembly, and Pascal.
The Imsai 8080 was a great way to learn how computers work under the hood. I remember debugging and patching programs (painfully!) through binary LEDs and toggle switches. Being able to see the address and data buses in binary on the front-panel LEDs was invaluable. The dedicated single step switch was cool too.
The Apple ][+ manuals were helpful too, especially the monitor ROM assembly code and motherboard schematics. I pored over those and gradually understood more and more.
I never worked on cars, but I imagine programming those early computers was like working on an old VW Bug. They were simple enough that you could work on them yourself and learn how the whole thing worked.
I hate programming/coding. Trying to think how to write a program makes me feel disoriented and nauseous.
In the various 'autism' tests I've done I've come out as massively 'heteronormative', this may be connected.
And I certainly wouldn't want to force my kid to learn to code, especially not as young as 4th grade. I'd find that almost as disturbing as forcing him to do religious studies or gender studies.
Don't make coding compulsory, it suits a particular kind of mind. First let the mind develop, find what it likes to think about, then get the kid to learn into those areas.
In the free world the media isn't government run; the government is media run.
Dad brought home a Tandy 1000 he bought at Radio Shack for who knows how much money. I started fiddling around. Back then it was impossible to accidentally break things on a computer because it was all CLI.
Somehow I found some BAS files on the system and a BASIC interpreter. Put two and two together and started reading and modifying. I was about 4yo or so I think (I was reading by 3).
A couple systems later, QBASIC, AOL, and I was downloading games like Killer Pong or something like that, reading the code and modifying those. Then my dad brought home Visual C++ and books on it that he took from work. So I did that. Then C++ classes at the local community college.
Then in college, PHP to make dynamic websites. Then SQL and Python. JavaScript was somewhere in there, too.
Now I'm the rare corporate lawyer who can code well.
That's a novel recruiting strategy.
We're still doing this in 2016? Guess I gotta get outs the scripts again.
However I wasn't supported by my school and even my parents didn't look on it as anything more than a hobby rather than serious career choice that required dedication and focus. I swept floors and saved everything I could to buy computers, kit and tools. TRS-80 Model I and III was my introduction to code.
I still wonder how much further I would be now if I wasn't bullied for being a geek because I had to waste social time on doing menial tasks to make some money to buy resources that just wern't available at school. At the same time the obstacles that had to be overcome so that I could do what I love, I think, are things that aren't recognized as valuable in many coders careers.
The thing about imbuing this mindset is that it recognizes that coding is as much a lesson in persistance and determination as it is logic and design. Not everyone is equipped with that passion so I don't think it is for everyone.
My ism, it's full of beliefs.
I learned from Logo. Turtle!
tl;dr: learned on my own, school didn't offer anything I learned to code around middle school. While the school was teaching me powerful AppleCard "scripting" I was running after school MP3 sharing sites. So I learned HTML and then JavaScript. Went to work for a .com after a brief visit to College (more like horrible trade school). There I did more HTML + JavaScript and branched into PHP.
Then things went crazy... Learn VB.NET, and some C and C++, for personal reasons. Started scripting for the shell in Bash. Then more PHP, then Perl, Python and now Golang.
I have supported Java, Delphi, and a slew of others most people have never heard of.
Learn Golang, teach yourself. Profit.
... on a PDP-8/E back in 9/71. Looking back, we could do pretty amazing stuff in 4K. Then an RCA -> Univac series of 360/370 clones, then a PDP-11/34 and an Amdahl 370 clone. Boy, were Vaxen nice to play with after all that...
"Basic Computer Games" and "More Basic Computer Games" by Creative Computing. I wore out the bindings on those. Thanks for reminding me of them. I do miss the 80s.
I started out writing Autolisp programs for AutoCAD, 25 yrs ago. Used several other languages since then.
I still like Lisp a lot. Always makes me laugh when script kiddies whine about parentheses.
Boo-hoo-hoo, Johnny. I didn't even have a computer when I started. It was pad and pencil all the way.
Back in the day, I walked 10 miles to school, knee deep in parentheses. Those suckers hurt like hell, but look at me now.
I try and try and give up and try, I know so much about it, but I can't do anything, part of it is my fault, part of it is because I think my way is the best way and everyone is wrong and people do things stupid, this means if I see something I don't like I try to redesign it, this is a problem when you want to do anything and you are not that smart and also lazy.
Maybe someday I will get it, I've been learning for 10 years, I know a lot, from low level to high. I am still waiting for it to click though.
I got my degree and went to work, hated the work I was doing and quit the job and spent a year part time tutoring math barely affording rent and every morning I'd spend the day working on software. I worked through several books on game development, c++ development and general development practices. I also did some cs work in computer graphics and some math work in cs at school but those did not help me learn how to write truly functional software.
Eat sleep die
I'm semi-self taught. I had an Atari computer as a kid and enjoyed fritting about in BASIC. In high school I took a programming course that taught Pascal. Once I became an office drone I experimented with Visual Basic to do Excel macros, then I moved to PHP to work on my website, then Javascript to automate tasks in Photoshop, now I work in Python quite a bit. I'm not a developer, though, I'm somewhat of a generalist scripter (variables, arrays, if/thens, while loops, etc, are practically universal) who uses that skill to make myself and my coworkers more productive via tools/macros in our tools of the trade.
From that point of view I certainly do understand at least introducing students to programming. (not to an extreme, though). I was forced to take a semester of Latin in high school. I would never ever have taken that willingly, but having gone through it I can see that in another life I might have pursued linguistics. Who knew?
"I like to lick butts!" by MobileTatsu-NJG (#32700246) (Score:5, Informative)
Using punch cards on CUNY's 370. Max was about 3 runs/listings per day.
My first course in computer science started with a few weeks' worth of learning a pseudo-assembly language and then the rest of it was dedicated to FORTRAN; the rest of what I learned was at home or in my office, self taught out of books and manuals. For just learning languages, this is usually sufficient; however, I found out from long experience that being able to think like a computer is both essential and not easily learned. Anyone who thinks that programming can be taught in school with a few language courses is sadly missing this very important fact, just as it takes more than a few years of English to make a good author.
Loved playing around with GW-BASIC in early 90s in an early 286 or so.
Then enjoyed coding in C/C++ in university years.
Recently re-discovering my passion to program with JavaScript.
I've tried many other ugly languages, like Java, Ruby, Python, and some proprietary languages came with corporate software. Naturally, they make you start hating programming in general. YMMV on this.
In most cases, the process of learning to code goes like this:
1. I got a computer! Cool! Look, I just type in this "program" I got from { a magazine | my brother | the internet | Jim the IT guy } and I can make a blue square dance!
2. Great, now I wonder what else I can make dance. Oh, and what else I can make a blue square do? And what about other colors and shapes?
3. Okay, over a two-month period I wrote this thirty-page program that does something I like. I'm going to show it to { the computer club | my brother | the guys in the forum | | my coworkers } and they're going to be so impressed.
4. They weren't impressed. They just { laughed | grimaced | insulted me in the most graphic terms imaginable | asked me how my real job was going }.
5a. I quit, forever! Fuck you nerds! [QUIT.]
OR:
5b. Maybe I can { read a book | beg my brother | look at a website | study Jim's code } to see how I can get better.
6. Okay, it's been another two months, but I know a lot better now, and it's definitely way better this time. In fact, it's as good as it can possibly be. I'm confident that now when I show { whoever }, they're really finally gonna be impressed.
7. [Return to step 4. Repeat forever.]
In 1970, during one of my 6-month College Co-op assignments, I took an IBM FORTRAN Self-Paced Study course. When I got back to school, I took more programming courses, including ones that taught different forms of computer math (1's complement, 2's complement, excess-3, BCD), assembly language on a fake computer simulator, PDP-8 assembly, PDP-8 FOCAL, APL, more FORTRAN (it was an engineering school after all and FORTRAN was the language of choice for engineering in those days), etc... And because I ran out of programming courses, I took all the computer hardware courses the EE department offered, including an Analog computer course. And my next Co-op assignment was in the company's programming department. During my senior year I started working part time for a computer manufacturer, writing 80 column card reader/punch hardware diagnostics, running on bare metal (no operating system; your program booted and ran totally self contained). All languages after that were on the job, leaning as you go.
My dad gave me a Commodore 16. By random I discovered books at the local public library about Commodore BASIC.
Man, 16 KB of ram! :D
Then I got my first job, so it's Stack Overflow
Using a patch panel. Scaling was a bitch. Life got easier (if I wasn't solving DiffEQs) when I learned Basic on the DTSS. Now get off my lawn!
There was "offline help" where you pressed a button with a keyword on an information kiosk and it automatically flipped a book inside to the corresponding page. Can't go wrong with BASIC. Not that it teaches programming practices you would want to use long term, but it reflects the essence of how computers work internally without being as intimidating as assembly.
And another who taught myself to write assembler on the Apple IIe.
Learnt to love the Orcam Macro Assembler.
My boss tossed a C manual on my desk and told me to write a parsing program.
Had one undergrad c++ course (required for civil engineering degree). It was really intriguing, but at the end I found I had not learned nearly enough to do anything useful.
Took me 3 years of trying to learn all kinds of different languages using all kinds of tutorials. I finally stumbled upon Python and realized this is exactly the tool I had been looking for. It has taken another 2 years of concerted effort to learn it, mostly on Stackoverflow, but I'm to the point now that I am able to do what ever I need to do.
comment++
Even just learning to code, if you write anything of any complexity you learn lessons of programming as you need to work with files, structure the program you are writing, and deal with performance... it's true you are not learning what others knew before you, but the coding you do before you really study "programming' reenforces the lessons on programming. By the time I picked up the design patterns book in school, I already knew quite a lot of the patterns named from my own coding.
"There is more worth loving than we have strength to love." - Brian Jay Stanley
My first language was FOCAL, a BASIC variant for the PDP-8. I learned that pretty quickly. I then taught myself PDP-8 assembly language by studying the PDP-8 assembly language handbook. I then wirewrapped my own 8080 system and learned to program that.
This was in high school.
Once I got college I taught myself FORTRAN, PDP-10 assembly, Pascal, Simula, LISP, and so on.
I only ever took one CS class where I learned Algol 60 of all things. Except I attended two lectures at most, so I don't think it really counts as having taught me anything.
I was born knowing how to code. I picked up a few syntax details after birth.
1980ish Apple II Basic -> TI/994A Basic + c64 BASIC -> COBOL/RPG -> 8088 Assembler - Turbo Pascal -> C + *(sh, lisp, (etc.)) -> Visual Basic :( -> Perl -> PHP :( -> Perl?
I learned to hate Pascal at university
I learned C from the K&R book at home - and loved every bit of it.
Since I started working in IT I've learned whatever language I have needed.
Programming requires a level of aptitude, combined with interest and self motivation. Maybe when Teachers work out how to solve that problem they can move on to teaching computer programming.
I believe however that the increased interest in education (read the greed of educators to chase the latest trends to pull in the cash) will most likely demotivate students best left to themselves rather than bring out the best in them.
I spent every hour possible during my youth making code for this or that. Throughout my youth, we were taught LOGO, BASIC, COBOL, Pascal and Assembly in elementary, middle and high school. I got my first copy of Turbo C v2.0 when I was 11 or 12.
Then there was university level when I learned to program. Using a language is not the same as understanding data structures. Instead of using operating systems, I learned to make them. Instead of using programming languages, I learned to make them.
I never met a brilliant programmer who wasn't obsessed from youth with either math, electronics, programming or a combination of all of them.
I have met many programmers I felt were pretty good, solid developers who could dot the 'i's and cross their 't's. But without a passion for it from early on, they never seem to have that thrill or excitement attached to making something new.
I grew up reading hard SF like Ringworld, so when I got my hands on an HP-9820 desktop calculator in Physics Lab, I immediately programmed the orbital dynamics of Ringworld's Klemplerer Rosette, and discovered, to my astonishment, that it would work as described in the book. Next, I was "handed" an HP data acquisition minicomputer (via forklift) at Argonne National Laboratory as a summer student, and told to put it together and make it work. A week later, it was running "Trek-73", which I'd listed out on punch tape at school and fed back in to the Argonne computer via tape reader.
A professor and I soldered together matching "Digital Group" Z-80 - based pre-S100 Bus computers, and I wrote a multivoice music editor / synthesizer in 18 kbytes of hand-coded Z80 machine language. Then, in grad school, I wrote a PDP-11 Assembler / Fortran package for a six-legged robot while also writing spherical trig software on an RCA-1802-based computer for a local surveyor on the side.
At Bell Labs, I learned C and Unix at "the source." Later, I used PL/M on a Intel Microcomputer Development System to write code for a very early anesthesia monitoring system, and later wrote C code for power meter calibrators and electrical metering data collection systems, automobile diagnostic equipment, and ultrasound imaging systems. Then came ISAM and SQL for telephone call center management software and pharmaceutical laboratory information management systems. Then HTML, CSS, JSON, Javascript, etc. for when I started an internet service provider company with some friends.
Late in my career, I learned Haskell and F#, to write a mathematically provably correct adverse event handling system in biotech.
As Heinlein wrote, "Specialization is for Ants" !
If Apple wants children to learn software development in school, they really should deliver a good full-stack software development environment that runs on their iPad platform. Does Apple really expect kids to write programs for their iPads by tethering them to a Mac running XCode???
I never saw my first program run. I wrote it for our astronomy teacher, who gave me the "5" (Soviet system's equivalent for "A") for it — I gather, she was still in college herself. She needed some simple calculation coded — must've been her own class-exercise — and I used my dad's FORTRAN book to write it for her.
I think, I was 12 or 13 at the time. Formal education — Applied Math — came later.
STOP
END
In Soviet Washington the swamp drains you.
In 1975, Kilobaud magazine published a great article on how you could build your very own S-100, 8080-based microcomputer. So I built one. Then I discovered it did nothing by itself. So I built a front panel board (LEDS, switches) and learned 8080 machine code. Wrote my own terminal program that worked with my keyboard and video (to a TV, no less) interface. Wrote cute stuff on that system. Later learned BASIC on a Sinclair ZX-81, also Z-80 machine code. Learned much, much more in the 30 years since. (E.G. 68000 machine code, PLC ladder logic, many dialects of BASIC, various robot languages - SPEL and Fanuc.) Now engineering and programming machines that inspect metal parts.
I taught myself with books on programming, and a lot of time. Since I was interested in it, I kept going and learning. Now I'm a full time programmer.
In 1983, my high school offered a "data processing" class through the local technical school. It was basically data entry on a "mini" computer. I finished the class in about 6 weeks, and had nothing to do for the rest of the semester. About that time, the school got their first shipment of the original IBM PC, the ones that booted into ROM BASIC if you didn't insert a floppy disk. The teacher let me take the manuals home to study, and I spent the rest of that semester teaching myself how to write code.
In college, I was a computer science major. But even then, in every programming language class I took, I taught myself at the beginning of the semester by reading through the textbook.
Most good programmers I know were self-taught, even if they did take classes in school.
Day before Eclipse '79, a bunch of us hopped in a friend's father's brand new pickup truck and drove to Montana to see the eclipse. Friend's father brought his brand new TRS-80 Model I with a whopping 4K of RAM and Level I BASIC (which had only three error messages: "what?", "how?", and "sorry!") along. We read the manual on the way up then stayed up most of the night playing with the thing.
It's been all downhill from there.
I self taught myself Basic, and was well into Assembly Language when I bought an Amiga that had no working programing language available.
So while owning the best computer ever made, it cost me programing wise.
I'm one of the group that the Slashdot crowd loves to despise - an H1B programmer who grew up in India. But unlike the stereotype that people here like to paint of Indian H1B workers, I'm a pretty good programmer/developer.
In my school in India, programming was taught to all students as part of the school curriculum from 5th grade. In those days, during the first few years we were taught programming in GW-BASIC, and basic CS principles, binary arithmetic, boolean logic etc.. Towards high-school, COBOL and FORTRAN got added to the school curriculum.
Once I reached college, I was required to learn the C language during my Bachelors in Engineering program as part of the curriculum. In parallel, on my own time, I also learned OOP and OOAD principles, Java, and some VB, SQL and C++ by the time I graduated from college.
Once I graduated, I moved to the US on an H1B visa, and have been working here as a Java developer for more than a decade now. During that time, I've picked up a bit of few other languages, such as Perl, Python, LISP & Shell scripting, though I really wouldn't call myself fluent in those languages.
I remember my brothers and I got a magazine called "3-2-1 contact" that had some source code to some BASIC games. These were short programs that we could type into a GWBASIC interpreter and play. The syntax was easy enough to follow, even without knowing BASIC. At first we just typed the programs directly into GWBASIC, but then I started playing around and wrote my own crappy games.
Later, got a new computer with MS DOS 5 (I think) which came with qbasic, and qbasic games "nibbles" and "gorillas". qbasic was a lot more advanced than gwbasic (it had subroutines!). I started messing around with the source code without really knowing what I was doing and made weird things happen in the game. But I eventually figured out how the programs worked.
I got a copy of Turbo c. My brother got a book, Secrets of the Game Programming Gurus, and we both read through it and worked on some simple programs. We started working on this bigger game project which was supposed to be like a cross between Civ and Tank Wars. We put a lot of time into that and made a simple graphical interface and scrolling tile map, and a combat minigame, but never finished it.
In high school, I got a TI-85 graphing calculator for math. School was really boring so I programmed games on my calculator.
It was called "Hick Quest" and was a text RPG about trying to get extremely drunk while fighting mailmen with a 2x4
As a teenage ham radio operator, I took the Motorola microprocessor course at Chapman college in 1978 because the teacher was my friend, N5BO. I learned how to code in 6800 machine language and, eventually also assembler. Fast forward to high school's PDP-11/45 and then afterwards, the PDP-11/44 at the Weisman Institute in Rehovot, Israel for the summer and Los Alamos National Laboratory's photochemistry division's Data General Iron.
The trick was that back then the state of the art of computer programming was so rudimentary that anybody could learn. On top of that, since computers were all designed by electrical engineering majors, all the documentation was written by and for people with such an education and I, having been a ham radio operator since age 13 was one of them, it was very comfortable sliding into programing.
I was typing code into a computer with no HDD to play games from printouts at about age 1.5-2, I have no idea what the fuck I was doing but my father was able to convey that if I made the squiggly lines on the monitor look like the squiggly lines on the paper I could make a monkey throw a banana at another monkey by completing trig equations (which were just guesses most of the time as well though I gained a rough grasp of a modulus and gravity from that as well as a pretty extreme attention to detail [and probably the source of my OCD] since the go-to solution if it didn't work was "delete everything and start over" for several weeks) and I was set on not coming off as incompetent by asking for help repeatedly.
I actually started programming in some manner at 8 - making an audio synthesizer that played semi-intelligible music more or less through a manual application of what I now know to be genetic algorithms. From there I mostly dicked around on compuserve, AOL and Earthlink for a few years immersing myself in things like IRC and wherever webrings took me and made a few crappy websites, chat programs and a lot of game of life style simulations and fractal generators until starting on a game in my mid-teens. All in all I had probably a dozen languages under my belt by 18 covering network protocols, web design, genetic algorithms and asynchronous programming concepts.
Since 18 I've worked between IT and software design - more or less switching from one to the other every 1-4 years when I get bored of doing it as a job, in my free time I work on personal programming projects that are a bit too complex to describe even as a summary that makes any sense in a form post.
All-in-all I'm self-taught, my programming knowledge of now over 4 dozen languages, 7 platforms and 5 database servers comes entirely self-taught, either from several nights (often without sleep between) doing nothing but sitting in a room alone programming or saying something stupid like "sure, that's easy" at work and then spending the night without sleep figuring out how to do it. I've also never once met a competent formally-educated programmer and I've met tens of thousands of programmers in my career, over a thousand of which I've gotten to know and/or worked with well enough to be certain of that statement with when used as datapoints.
The most important things for a great programmer in my experience are:
-Critical thinking: being able to not think inside or outside the box but to define the box is the basis of the whole thing.
-Attention to detail: being able to hold the whole thing in your head without losing the details is mandatory for good programming, but can be mitigated to a minor degree if you have a great architect at the top of the chain possessing all 3 of these things plus a lot of social ability to manage maintenance-level programmers.
-High intellect: this really can't be understated, if a person can't comprehend the dataflow in an asynchronous system they will never get outside of a single thread on a single machine without creating bugs, security holes and performance issues and the number of programmers that understand anything about asynchronous logic is abysmally small (even when you discount "web developers" as "users" immediately to try and skew the results toward actual programming competencies.)
There aren't many good programmers because there aren't many people with these abilities and no matter how hard you hit a monkey with a stick or how many bananas you try to entice it with it's not going to produce Shakespeare.
The best you can do is present friendly dev tools to people allowing exploration of their interests and try not to crush their spirit as kids with formal education, at least then you won't drive away the capable ones.
My sister came back from the states with an IBM PS/2 in 1992, which was my first ever contact with a PC (or home computer in general - except a couple of Captain Blood sessions with a friend's Amiga). I quickly discovered it can play games and that you had to learn a bit of DOS to get many of them to play and while looking into this DOS thing I came across QBASIC. It had a function reference so I taught myself, my first notable programs being a game (a bit like gorilla, but with tanks viewed overhead) and a simple solar system simulator, both of which, quite predictably, were using a lot of GOTO statements. Oh, and no subs, I found out about those a little later (the QBASIC help was not a teaching tool). It's been about 20 years since I last touched BASIC, but I have fond memories ;)
Violence is the last refuge of the incompetent. Polar Scope Align for iOS
Basic, Pascal, and Wordstar 2000 show codes :-)
University took Fortran, C, etc. learned bash, learned assembly as well.
Now I do data science and AI.
My first attempts were copied from Byte Magazine in 1974, implemented on a PDP-11. The Chase game was especially good at wasting greenbar (no video).
I conned my parents into buying me a VIC-20 with 3.5 KB of RAM, then I saw the wonders of the VIC-20 Super Expander which pushed my mighty computer to 8K of memory and gave me some astonishing graphics which include lines, circles, points and fill. Later I got a C64 and the world was my clam, I got the C-64 Super Expander and was horrified to see that I went from 38K to 30K but the High Res graphics were amazing; imagine 320x200 pixels, amazing.
I stuck with my C-64s until college at which point I got an Amiga 500 which had some motherboard problems, I traded it for an Amiga 2000 with an IBM bridge board which allowed me to run a gigantic 20 MB HDD which I split into three parts, the DOS 3.2 partition which allowed the whole HDD on an Amiga to work, 10 MB for Amiga stuff and finally 5MB for Minix. I spent most of my time in Minix, I had VI, and cc which allowed me to explore lots of stuff although the eye candy of Amiga was compelling.
After college, I got a job at a terrible military contractor and had the pleasure of using SCO Xenix (yes THAT SCO) which was still in the terminal (80x24) setup but was able to run on a 486 with some pathetic amount of memory and a 20MB and a 40MB disk. From there, I started working with SunOS systems and SGI systems and learned to program GUIs with Motif, I got to know the wonders of X11 and graphics under Unix.
I later got a job at a Utility writing Motif GUIs and Unix applications for some fairly interesting scheduling systems on AIX, and eventually Linux.
Fast forward to 2016, those same Motif GUIs and applications are now running on AIX 7.1 and Oracle 12c with all new hardware, the same codebase that started life 20 years ago is now running on all new hardware and third party software. Happily I've never had to deal with any Microsoft stuff during my career: Commodore to Amiga to AIX to Linux.
I doubt many have had a career like mine that had the same code base that began 25 years ago and is almost all still in operation, on modern software and hardware.
Good old VIC-20 and C64, the best way to start.
I've never had any formal coding instruction. I needed a way to perform method "X" for a personal project and grabbed the reference manuals and started programming in Assembly Language for the Z80 back in the day (1986/1987). That code involved controlling 120VAC circuits from a TRS-80 Model IV to make money DJ'ing as well as building laser interfaces that allowed PC to PC messaging via laser interfaces instead of wires. That progressed to learning BASIC on a TRS-80 Model IV, as well as making calls to assembly from BASIC because I was able to perform graphics routines much faster in assembly language.. which progressed to full BASIC... and for S&G taking first place in state programming competitions. Then Visual Basic, Perl, Python... then web languages such as a PHP. I still haven't gotten a good grasp on C variants or Java, which seems a bit silly. Most of what I do now is based on Python in SecureCRT sessions hitting up network gear and pulling data or performing configuration updates. My most recent set of code was in Python to perform code upgrades and QC checks against 190 pairs of firewalls, and all but 2 went great... and they weren't because of the process, they were because a predecessor didn't know how to configure a network switch interface.
The computer fad started in the early 80's, so vic 20, atari and ti-94s were sold at practically any place that sold anything (including the produce department at the local grocery store).
I still did not own a computer so would spend dozens of hours every week making demos in basic and pseudo assembly (via peek and pokes) until I got kicked out. About a year and a couple hundred yard cleanups (in 45degree heat) later I'd made enough to by an 8k atari computer, but my parents wouldn't let me buy it because they were afraid i would take it apart and break it. Back at that time, most people thought you could break a computer by typing some bad command into it. Anyway, after months of nagging, they let me buy it. After that i was rarely allowed to use it and it was a constant major fight because we had only one tv and I was at the bottom of the priority list. So I'd usually have to wait until everyone was asleep before i could use it. And that meant experimenting and typing in programs from magazines.
I originally wanted a computer to play video games, but discovered that i liked programming more than games and so never really got into gaming other than the technical aspects. I liked to create them, but not so much to play them.
While taking physics my freshman year in high school, I had the completely novel and original idea of using computers to solve physics problems. That's when I started getting really interested in simulations. With the help of my physics teacher, by the time I graduated HS I had written a program to fly a realistically simulated space shuttle running on a pdp-04. Not real time, but a second by second state simulation where every second you'd be presented with a state vector of a dozen parameters and my program would tell you the commands (attitude, oms thrust, thrust angles etc).
Oh, and i did lock myself in the bathroom one night and take the comuter apart, but went back together fine. My freshman year of college, i was required to take a course in C, that was enough experience to get me into an internship with JPL where I got to with some of the very top people in the field (of rocket science, not computers). That got me into anther internship, and another and another and so on. I'm really more of an engineer with a science education and have never had a class in programming other than the C class and it was only 1/3rd of a 3 hour class, the other 2/3rds being drafting and visualization. I started engineering consulting straight out of college because of the non existent job market and recession of 1990. It was the only way around hiring freezes. Mostly do hard real time in operating systems, hardware drivers and system requirements. Started hacking around with linux @1.13, but now mostly a user
Picked up Basic, then IBM/360 BAL then Fortran, then PL/M PL/1.
circa 1978
It all started with a design class that asked undergrads to find new Penrose patterns by cutting out and pasting Penrose tiles into new symmetries. Caught wind of the professor's "long term" plan to replace undergrad labor with a IBM/360 time share program. That route seemed more attractive than construction paper and Elmer's glue.
I am a programmer because I tried to avoid manual work.
I'm probably the only one on Slashdot that learned at school, Sure when I was a kid I started messing around with .bat files to get my video games to work and that got me more interested in how computers worked and how to program. But I didn't do anything more then that until I went to a stupid learn web programming summer class while in middle school around 1998 and joined the school's web dev club. Though we just played Yahoo games. Then took a class in high school, then went to college for a Software Engineering degree.
So yeah, I'm one of those idiots who went to school to learn. You can beat me at almost any programming puzzle, but the code I finish is nearly bug free and easily understood by my co-workers. Whenever I change a piece of software, it improves. And some of that means designing and coding distributed, multi-threaded systems. Put them in the right frame of mind and they don't need to be difficult. My 60K loans will be gone in 3 years. College was worth it. Plus I learned how to manage finances, dance, give massages, martial arts, build siege weapons, etc... When in college, take all of those little extra classes as you can. It's far harder to gain random skills while working, especially when you're not in a major city. Everything being right there at campus is something most people don't have after they leave.
Intro to Computer Programming in University.
I was studying Astronomy at Harvard and dropped out and came out to Silicon Valley to visit a friend. At the start of 1980 I got a job as a Systems Assembler at Calma a company which made CAD systems. In my year as a Systems Assembler I got a board level understanding of the systems and learned to use the operating system and the CAD software. With those skills I got a job as a Technical Instructor teaching Calma Field Engineers an overview of the system and how to debug the system with diagnostics. I was a Technical Instructor for 2 years and learned a lot more about hardware and operating systems and some programming. The head of the diagnostic software team left Calma to go to a startup called Elxsi. He told them I had already worked for him as a programmer and got me a job there. In my 7 years at Elxsi I worked with the most amazing engineers I have ever worked with and learned about hardware and software from them and their code. From there I was able to continue a career as a Software Engineer to this day.
I've taught AP computer science, but I currently work in the private sector, so I've seen both sides.
From observing my students and observing my coworkers, there is a simple distinguishing hallmark of success: excitement. If you are interested about the subject matter, then you're going to pour yourself into it, care about the picky details, and generally do well. If you're just aiming for a better paycheck, you may succeed, but you're never going to have fun doing it - and it will show in the quality of your work.
Personally I learned from my dad when I was about ten-years old. He taught me some BASIC, and I kept begging for more. Then he brought home a Turbo Pascal book with a green-and-black chalkboard cover. I still have it somewhere, because it's still the best teaching manual I've ever touched. I wish whoever wrote that thing had written today's syllabus for the computer science classes.
Carrying it on, with a little help at the start, my five-year old son is programming in Python. He has the excitement. He can read the online manuals and tutorials. The math requirements are too steep for the graphics he wants to pull off, but that just expands his interests. I see him learning, and I see a version of myself starting five years earlier. It would be foolish of me to delay or discourage when the opportunity is now. Am I making a mistake? Time will tell.
You may be shaking your head right now. Yes, he's just now finishing kindergarten. However, he was reading novels last year, because he learned to read by watching the text on the computer screen and asking questions. Side point: big parental thumbs up to computer games that have lots of text! Have you noticed that most games aimed at toddlers have NO text? Garbage in, garbage out.
My main concern is that when he gets to formal CS coursework, the bland nonsense that I've seen is going to rip that excitement out of him.
I feel pretty strongly about the answer to this one; I didn't start programming with anything remotely like a "bottom-up," "start with the basics," type of approach. I got into reverse engineering, in a round-about way, by helping to "hack" the game Diablo. I helped a guy named Raymond Tan - his Diablo trainer is actually pretty famous. I helped him with that, found the experience extremely rewarding & educational - on many levels. Looking at the compiled code, of successful products, taught me a great deal about design, and frankly even the programming - by working backwards via SoftIce (at the time - kernel-mode debuggers aren't nearly as powerful, or even available, as they once were). You basically had to tear pieces of it down; then to really understand it, and know where you could accomplish what you wanted, by modifying values in the running game essentially; you had to sort of use these pieces that you broke it down into to reconstruct the underlying logic. Doing so would tell you where you can use said underlying logic to modify values that interested you (like your hit points, mana pool, or accumulated gold). I think that approach is, in theory, still useful, even today. There are, almost certainly, countless examples of people already having solved whatever problems you encounter; it's just a matter of tearing things apart to find out exactly how they do it. I think the real desire to hack a game, a good kernel-mode debugger, and not giving up, but instead having a real desire to dig deeper, and find the real reasons code - even compiled code - isn't doing what you want, can absolutely be a good start; it worked for me, and that was before I was really even into programming per se; I viewed it more as a way to accomplish whatever goals I had in Diablo, at the time.
TI-BASIC on a TI 99/4A was my first foray into learning how to draw an image on a screen, at age 6.
Still waiting on Serviscope_minor to wake up to fucking reality and realize that Jessica Price isn't going to fuck him.
I learned my first programming language - Apple BASIC - from computer magazines back in the early 80s, then had it reinforced in 'Computer Math' classes in high school, and learned a few more languages in college (Fortran 77 and Turbo Pascal in classes, and REXX on my own). Then took C in a college course in the mid-90s, plus learned all the web stuff on my own starting in '94. Everything I use professionally, I learned on my own, other than the logic course I took first semester of college (which should be a required course in high school, IMO).
The Apple CEO argument that (computer programming) code should be a required language taught in the fourth grade is self flattery spoken by a person who believes in "code" because his company's products are based on code. Of course he personally believes what he is saying, but he fails to realize that education is supposed to make men and women capable of responsible free thought.
The embedded assumption that learning any computer language is the educational equivalent of learning any second natural human language is false because no set of computer instructions and data structures (that thing we teach called a computer language) reveals the vast range of assumptions and thought structures that are revealed when a person learns the grammar, vocabulary and selected literature samples of a second human language.
For instance, while I got a D in French, I saw in LaRochefoucauld's French maxims a new dimension of thinking that crudely translates as "self flattery". So if you are an American and you thought that was a strange word, you are right.
Another way of saying this is learning a computer language does not help a human being identify false rhetoric, lies and manipulation from tyrants and those who would enslave their audience. Most of the men participating in the 9-11 aircraft hijackings had "technical educations" meaning training in procedures without learning the liberal arts of spotting the mental enslavement and deception of the hijack event designers.
So far in American elementary education, learning to use a computer does not involve programming or logic. It is learning the motor skill of pressing the typewriter keys to enter a word in a search box and holding the mouse and associating wrist and arm movements with the motion of the arrow on the screen. Learning those motor skills is within the range of 10 to 14 year old children. The landmark exercise of writing a history class term paper or translating a French or Spanish or Japanese poem is simply made much more challenging of motor skill capability when a computer is required compared to using paper and index cards.
My parents saw my love of Pac Man and video games from when I was 3. They got me a computer ti-99 when I was like 4-5. I would type code from magazines on it even though I didn't know what I was doing. When I was 12, I realized I could make all sorts of games with if then, but I couldn't figure out how to do graphics on the c64. When I was 15, I spent like 8 years trying to make the first mmorpg. The first time I quit was because I didn't have socket code for qbasic though the rest of the game was solid. I recoded it in c++, but Ultima Online came out so I quit since I figured there's only a market for one major mmorpg. Been indie devving since. Also have a degree from Carnegie Mellon. But wouldn't you know it that despite coding for my entire life, and having a degree, I can't seem to get employment. I think it is odd that people say software engineers are in demand. Anyway, thank God for indie devving. I don't need some corporation to believe in my skills. I'll just make high quality software on my own.
God spoke to me
Machine code on a PDP-8 at Tech school
then
ASM
then
MACRO
then
FOCAL, Fortran, and Basic along with MACRO-11 (& TECO) and an understanding of the 11's microcode.
then
C
that was magic
I learned to code by taking other people's code, reading it, compiling and running it, changing it, compiling and running it, and so on. I learned what all the statements and functions do by trail and error. By doing so, Iearned how and why things can go wrong. I also learned the importance of readable code, what readable code looks like and what spaghetti code looks like. While I never read any coding-book, I learned what to do and what not to do. This knowledge helps me a lot while working in the IT security business.
It doesn't have to be like this. All we need to do is make sure we keep talking.
Since almost no school teaches 4th graders programming obviously this isn't going to be a common answer.
We should ask hows do we increase programming literacy.
In the age of IoT and everything having a computer in it, basic programming literacy for the masses is important.
I have taught first graders to program so 4th graders which don't have a typing obstacle are almost all capeable of learning. It seems a good place to start.
Starting early has obvious pedagogic advantages. Doing so for everyone can both increase literacy and increase social mobility. I'm all for it.
P.s My mother taught me Basic when I was six(in 1989).
Miss Agatha Hannigan, a cruel, slovenly drunkard who manages the orphanage would plop us in front of a comadore 64, hook us up to a glucose and caffeine IV, and shove a raw ginger root up our ass. For the next three days we'd code and when we completed a certain number of lines we could unhook and go to bed wheile she went out and cashed her family services check and spent it on booze. Believe me that ginger root made you a sharp coder. Eventually I stubled into daddy Zuckerbucks and he got me to write something that let all the kids tell their stories and post their pictures called Facebook. They all got adopted and Ms Hannigan went to jail after we hosted our Silk Road admin scripts off her laptop.
I got a Timex Sinclair 1000 when I was 10, as well as a simple book about BASIC programming. Eventually, that got upgraded to a TS-2068. There wasn't much family budget for games for me, so I wrote a number of my own. Did a bit of Z80 assembly for better speed. Then when the family got a PC, I learned C, FORTRAN, some Pascal, and 8086 assembly.
Learned on the vic 20 basic.
Also learned assembly on the 6502 before taking any courses.
I spent hours and hours on it, which modifies your brain to think in code.
Never had the Turtle, but I did learn Logo on the Apple II, as well as BASIC, Pascal, C and 6502 assembly. All self taught. It was fun.
Don't try to out wierd me, three-eyes. I get stranger things than you, free with my breakfast cereal. --Zaphod Beeblebr
Our early programming experiences are dictated by the tech when we first start.
For me it was basic on apple ][+ in K-6 and then logo.
The real learning began in Jr. High when I wanted to do more than draw on the screen, and had to figure out how to get user input, and how to use procedures/functions.
Later in college I nearly quit programming due to a bullshit pascal course that was way to heavy on computer history, with the repeat I got lucky with a professor who didn't spoon feed us, but gave us enough so we could figure things out.
Those lucky enough to have gifted teachers/professors and/or who have the fortitude to put in the work will definitely benefit.
Learned BASIC from it, then enjoyed typing stuff in from Compute's Gazette - the assembler hex-listings were tough :). Made a bunch silly games in basic - nothing complex. I remember trying to type assembler directly into the BASIC interpretator and being confused why it didn't work. Still have those magazines and get a kick out of reading them now and again. Took a course in community college in PASCAL and learned about structured programming. Made a split screen clone of a star-trek real time fighting game. Loved coding so much I took FORTRAN and x86 assembler. Then took C and wrote Asteroids using my own 2-d fast renderer for fun. Tried to make a VGA Planets clone game, but it was too big... Got hired at a game company before I ever completed my 2-year degree. Been coding for the last 20 years since.
code monkeyz'ra'dime'a'dozen. dont fucking care.
Self taught until college. Automata and Compilers class blew my mind.
I learned to code because my C64 had BASIC in it's firmware and came with a manual that explained how to use it.
I enjoyed how I could make the computer do things and it just snowballed from there.
Every single computer in the world should have a programming language as part of it's OS and something that points people in the right direction to use it.
Windows 10 comes with Visual Basic Scripting (https://technet.microsoft.com/en-us/scriptcenter/dd940112.aspx), but very few people know about it.
Slashdot social media options: AIM, ICQ, Yahoo, Jabber and Mobile Text. Why no MySpace?
Not necessarily. You're not taking into account opportunity and environment with that statement. For example, at ten years of age, I was mostly playing with my friends from the neighborhood, none of whom ended up being programmers. We tended to do normal kid stuff, because that's what everybody else liked to do, and I was fine with that. After all, I had been writing software since about age 7, so by age 10, when I was playing, I was taking a break from working puzzles requiring thought.
Check out my sci-fi/humor trilogy at PatriotsBooks.
I can spot the potential future programmer among 10 year olds playing.
I used to be able to, but my parole officer says I need to knock that shit off.
My entire class learned Apple Basic on Apple ][e's in the spring of 1985, taught by our regular teacher.
I first learned to code by being a guinea pig at a Stanford University educational research lab and a volunteer at a Silicon Valley community computer center, then self-taught on "luggable" computers and programmable pocket calculators lent to me on weekends by a generous Hewlett Packard employee, and ultimately on my high school's PDP-8. I learned about computer science, again self-taught, while working as a "research specialist" (read: peon) at the MIT AI Lab.
Notice I didn't talk about my undergraduate education, which mostly involved placing out of CS classes, so not exactly a formal education. I learned more from independent projects than anything else. Professional programming I learned on the job--you almost have to, where else are you going to collaborate with other programmers and make things bulletproof? Absolutely, there's GitHub and open source projects. For me, that came about well after I earned my "sea legs."
But enough about us old farts (and there seem to be a lot of us on Slashdot). How did you millennials learn to program? Where did you find and figure out how to use programming tools/environments? What were your first projects about: The Web, Robotics, Games, something else?
We are at the start of a new era of communication. Remember verbal communication is the greatest invention of the homo sapiens, it's enabled today's world. A new era is dawning, the era of commincation with the physical world, using computers. Programming is the language. I envisage a future where we talk to computers in an English dialect (grammer-wise, not phonetic dialect), if-this-then-that style. Hence, I see the reason for learning to program from a young age.
I can only represent myself, for I ain't 'a large number of professional programmers'
But anyway ... after I've landed on the American soil as a refugee back in the 1970's the first thing I did was to get a job inside a chinatown restaurant because I didn't have any money
The work in the kitchen was from morning to late night, no shift, but at times we got couple of 'low tide' hours where we get to take some quick nap
As I was not familiar with English (I had spent some time in Hongkong before coming to the States, and had picked up really basic English comprehension there) I couldn't understand most of the publications available at that time (except for the trashy Mandarin newspapers/magazines that they were selling in Chinatown) but I wanted to learn more
On off days I went downtown to some gadget joints, those selling electronic parts, resistors and such, often on 'looksee tour' to get a glimpse of what were there, and over there I picked up some old magazines for cheap
I couldn't understand 90% of the articles on those magazines but I do understand math --- and it were the math / code tease articles that grabbed my attention and I had to carry out all the 'coding' inside my head (CP/M had just been released but I ain't got the money to buy the mainframe to run that thing)
Thanks to that computer-less period I honed my ability to 'code in between the ears' and even today before I typed in the first character I already have a 'program' in between my ears wanting to come out
Muchas Gracias, Señor Edward Snowden !
I guess I should finish that by answering the original question.
At about age 7, I started into the "Teach Yourself BASIC" books and (program) tapes for the TI-99/4A. By about age 9, I knew enough that, while attending a national music education conference with my parents, I spotted the error that some college programmers had made while retyping their music-related BASIC program for a demo, and pointed out what the particular statement should actually have been. They were rather amused. :-)
In my last year of high school, one of my friends set up an Internet "talker" on a server at the university, and I picked up C on my own while monkeying around with that. In college, they taught us CS using Pascal, which translated pretty easily into a better understanding of C as well. At some point in there, I took a one-semester course that covered the basics of C++ for people who already knew C.
In other words, I taught myself the basics of programming, plus the basics of device drivers and operating systems concepts (though I did still have to take an operating systems class). My college degree gave me a better understanding of how to structure code to reduce redundancy (e.g. functions, classes, etc.), taught me OOP, SQL, parsers/compilers, etc. My master's degree gave me the opportunity to readily learn about subjects that my undergrad university didn't offer courses in, such as data compression, image compression, boolean logic, 3D graphics, storage systems, software engineering methodologies, etc. Although I probably won't ever do much in most of those areas, the breadth of knowledge almost certainly makes me a better engineer.
Check out my sci-fi/humor trilogy at PatriotsBooks.
Way back in 1977 or '78, my dad worked for RCA. When they decided to offer a hobby computer (as a kit), he picked one up. At that time, hobby computers came with a hex keypad and you entered two digits (one byte) directly into memory. The manual included a very simple language for writing games along with half a dozen examples such as a clone of Pong..
The processor was something called an 1802, also called a COSMAC, while the computer as a whole was called a VIP. It had a very simple instruction set, so I sat down with some graph paper and figured out what each instruction was doing.
Of course, that's a lot simpler when you only have 2K of RAM (and that was expanded from the original 512 bytes) as opposed to today's multi gigabytes, no way to do that now.
I was born knowing how to code
My very first pascal program was about 700 lines long and was a score keeping application for a number of schools at a sports meet. I was given the disks (turbopascal + database) the night before and the software was done by the next morning. Prior to this, I'd been programming a few years in BASIC and three months of C. Using ftoc, I've converted and debugged thousands of lines of FORTRAN (and C). As far as procedural languages go, they seem the same to me, I just have to remember the syntax fr whatever I'm dealing in...abut a 15 minute exercise.
Self-taught BASIC on an Apple II
+1
Dad gave me the VIC 20 Book and said, "Make this thing talk morse code." Read the manual, leaned BASIC and 6502 assembly. Next, I upgraded to C64, read that entire manual, and I also learned a lot by subscribing to Compute Gazette and all the other various C64 magazines. Then I got an Amiga and taught myself 680000 assembly and C. Purchased a PC clone and learned FORTRAN, COBOL, LISP, Scheme, ADA, etc. in college. Also programmed 4.2 BSD while in school. Ran Linux when it first came out and delved into the kernel for a better understand of OS'. Taught myself JAVA, javascript, PHP, Perl, AJAX, etc....rest is history. (Shurg.)
Typing in, making them work on my 8K Commodore PET, then later modifying the programs in 101 Basic Computer Games by David Ahl :
https://archive.org/details/bitsavers_decBooks10Mar75_26006648
My father, who is a physics professor, taught me computer programming around 3rd grade: BASIC and Fortran and HyperCard.
He also taught me electronics, mathematics, physics, and chemistry at a very young age, way before it was taught in school.
All of my birthday presents were science- or computer- related: package of floppy disks, prism, gyroscope, chemistry kit, electronics kit, etc.
In my school curriculum, the first "computer class" was in grade 7, but it did not involve any real programming, only simple computer tasks such as touch-typing, word processing, and spreadsheets. The first computer class that involved real programming was in grade 11, and it involved HyperCard and Visual Basic.
I also remember that in third grade, in science class, we were learning how to light up a bulb by connecting it to a battery, whereas at home, I was working with resistors, capacitors, transistors, NAND gates, and flip-flops.
But my father only taught me this stuff, not my sister, because she was not interested in it. It is not for everyone.
It is very arrogant and short-sighted for Tim Cook to say that all children should learn computer code as a second language by fourth grade. Just because he is interested in it, and runs a major computer company, doesn't mean that the whole world is interested in it. Most people will need to learn how to use e-mail, a web browser, a word processor, and perhaps also a spreadsheet. But most people do NOT need to know what is a CPU/RAM, or how to code. It is more important to teach them how to avoid phishing emails, and how to avoid dangerous malware on the web.
And computer programming should NOT be compared to a second verbal language. It is completely different. Tim Cook is speaking from ignorance, not wisdom. He should study bilingualism, and learn a second verbal language himself, before making these statements. My first language was Ukrainian. I learned my second language, English, in first grade. And my third language, German, in second grade. And my fourth language, French, starting in sixth grade. The cognitive process of learning a verbal language is completely different from the cognitive process of learning how to code a computer.
The way I see it, computer programming is learned in the following stages:
First stage: procedural high-level language such as BASIC
Second stage: object-oriented high-level language such as Visual BASIC or HyperCard
Third stage: procedural low-level language such as C
Fourth stage: object-oriented low-level language such as C++
Optional fifth stage: super-low-level language --- assembly.
Once you learn a particular language at a particular "stage", it is completely trivial to learn a different language at the same stage.
On the other hand, learning a new verbal language is always a lot of work, and takes a long time.
Instead of coding, what should be taught in elementary school is CURSIVE WRITING. Back when I was in elementary school, I was taught cursive writing in first and second grade. And later on, as a teaching assistant in graduate school, I had to mark hand-written physics assignments, and 90% of them looked like they were written by a chicken that picked up a pencil with its foot. Tablets and iPads will never completely replace pen and paper, but young kids are no longer taught how to write properly. That needs to be fixed.
Learning about programming is like learning about sex. When people actually teach you, it's an anticlimax.
Back in the early-mid 1980s, I read any computer book published by Osborne I could find. About a year into that my parents bought me a Commodore 64.
After the C64 arrived, there was a phase of playing a lot of computer games, but eventually I started to try my hand at coding simple items that solved particular problems.
The arrival of books from Osborne that involved "build a robot" also helped enormously, as well as motivating me to develop some basic electronics knowledge.
I started by typing in programs form the Commodore BASIC manual and modify them. Went on to learn assembly language in 1987 (6502 & 68000) then Pascal in 11th grade. Then I learned C, Modula, Lisp and Java in 1996, C++ and Python in 1998. Objective C, Prolog, etc. came a bit later.
Given that list you should be able to find out when I really leaned to program - depending on your religion ;-)
PS.: Turns out you could learn C++ in 21 days (at the time) - if you really really have to.
Those two are not the same.
An HP-25c in high school. The need to make the most with 50 instructions really made you code carefully. Then off to Engineering in college, where Fortran was inevitable. Short while later, Pascal came along, in an IBM 370 mainframe, of all places, till the Apple IIs came out. Always had the illusion of learning VM/370 assembly language, never got around to it, but did go to 6502, 6800 and 68000. Thanks to Engineering, managed to avoid Cobol like the plague. Later years would bring Scheme, Prolog, Smalltalk and even a dabbling in Ada. Not to mention Rexx and its inheritors, the scripting languages of the Bourne, C, Korn and now BASH shells. Which led to C and the rest of that menagerie. The Swift-y bird is winking at me...
my dad owned an IBM PC it was the mid 80ies. No games allowed because games were "not serious work"... so I set out to write my own games and started to teach myself BASIC... magazines helped, but mostly I used my imagination and just tried until I got it to work. Next learned Pascal for the simple fact that the Borland Padcal Compiler would spit out .exe files, which were way more cooler than those .bas files. And so it continued... I am a senior sw engineer / full stack as they say these days, mostly hooked on large scale machine learning, oh & btw I got my formal education along the side, too, thank you very much.
Elementary school: BASIC on an Apple II, later QBASIC on DOS, lots of messing around with hex editors, DOS scripting, TSR macros
High School: Formal instruction in PASCAL and DBASE, learned C from KnR book and C++ from something else, did some game programming
Undergrad: Performance oriented C programming course, data structures and algorithms course in C++, 68K ASM, VHDL, Matlab, Maple, 6502 ASM . . .
Graduate school: Unbelievably complicated stuff in C++
Work: Powerpoint
Before I got myself a computer, I spent a lot of time with my friends', typing in programs from computer magazines. I read a lot of books on computers and programming, and tried to understand their example programs.
Learned assembler on the ZX Spectrum, got fluent in Basic on the C=, learned Modula 2 on Amiga and finally C on Amiga and some Sun workstations. I did take some classes on Pascal programming in high-school, and in the Uni, we were taught Java and C++, but I consider myself self-taught.
M$ had these QBasic games, which were open source, ending with .bas. I "Enter" on them to start play, and I simply F4 in Norton Commander, and saw that these have some code. Why not to change it? And it was circa 1993.
I had learned to code Pascal at school at 15yo. But that was therorical programs.
Once I got a PC, this is batch file programming on MS-DOS that gave me immediate rewards and pushed me to program more for myself. It also gave me a different view of how to program a machine. Pascal was about static typing, compiled source. Batch file has a single data type (string), is a dynamic language without variable declaration.
Self-taught BASIC, Pascal, C++, Assembler from age 8 and onwards. Books on these topics were invaluable because, no internet.
Knowing these languages, skipped classes in CS college and played MUD. Learned LPC and created areas and enhanced core code in the MUDlib.
In my experience, those who learnt programming "formally" in school, were often the worst coders. It's like trying to learn a foreign language formally. Having practical experience, be it from TV or trips, is crucial to become good enough to speak and use the language fluently.
Of course, clueless people now have prescriptions on how to make programmers out of people. All the while driving such activity away by making new patents, extending copyright laws and hindering a culture of sharing and progress. Keep raising the bar and providing people with toys instead of computers, the consequence will be mindless consumerism and in the end, slavery. Oh wait, we're already there now..
Lol No you didn't!
~ People that think they are better than anyone else for any reason are the cause of all the strife in the world.
Got my Apple ][+ in June and spent the summer learning to code in Applesoft BASIC. Learned most of it using the tutorial book that came with the computer. Checked out a couple of "101 BASIC Programs" type books from the library too. Also, fixed bugs in a game I bought which was written in BASIC, The Tarturian http://www.mobygames.com/game/...
My father gave me a computer with Linux back in 2002, and taught me the basics of how to use a terminal and bash scripting. I'm not sure if this counts as "programming" in itself, but I feel that interacting with the computer in this way was precisely what gave me the programming mentality, and what made me think of programming as something fun and cool in the first place. I then continued learning about Linux on my own, by basically breaking/fixing/reinstalling my system every second week or so for a couple of years. I also taught myself basic Python during this time. Then, in 2009, I finished high school and started university, enrolling in a math and physics programme. I then learned Matlab and C++ from two compulsory programming courses, and learned parallel programming with OpenMP/MPI/CUDA from taking two additional programming courses for fun. I also learned lots of other languages by just playing around in my free time, especially Haskell, Scheme, and Fortran. These days I'm doing a PhD in physics, and mostly use modern Fortran for simulation programs, Python for data visualization, and random Bash scripts for miscellaneous tasks.
My mother got a job at Tandem Computers in 1981. While programming wasn't a central part of her job (computer science was not in her background), it was important that she knew how to do it. So she took a distance learning course from the local community college in the BASIC programming language. The lectures for the course were broadcast on a television station owned by one of the other community colleges. I would sit and watch the show with her, and was fascinated. After she finished the course, I borrowed the book that came with the course and would pour through it. Every so often I would go to work with her. She would set me up on one of the terminals and I would "play"; that is, I would write programs in BASIC.
By the time I took my first official computer course in junior high school, which ranged in subject matter from application use (word processing, database applications, etc.) to programming in Applesoft BASIC, I already understood much of the programming part of the course.
But it wasn't until I went to college and took my first course in C that I learned how to properly structure a program. BASIC is fine for covering the broad strokes in how programs work, but it's terrible for learning how to properly structure programs. I also took courses in 8086 Assembly Language and Operating Systems, which changed my world.
Years after college, I took an extension course in Perl. I've taught myself other languages since then. It's easy to do since the mother tongue of most programming languages today is C; all you have to do is learn the particular dialect quirks of the language you want to learn. I've also picked up SQL as a result of the jobs I've had over the years.
I started in a non-coding based IT position (such a thing existed at one point) and was handed a problem ("we need a bug tracking system") based on a pile of someone else's shitty Perl code and was told "part of your job is now is to deploy, support, and improve this". I said "but I don't know how to code." Response was "read the documentation and learn". So I did.
1979 i did a test and was employed as a programmer at the Post Office in Sweden. (I had no knowledge about programming except some theoretical but there was a lack of programmers at that point in Sweden.)
The computer was an IBM mainframe and the lang was COBOL and assembler.
Learned COBOL by a self study course and the rest by experience.
Mundus Vult Decipi
Bought a C-64 and 1541 disk drive back when they first came out and taught myself BASIC and Assembly Language with the help of books and articles from RUN magazine. Eventually wrote a few articles and programs (Runterm was one of mine) for RUN, as well as a couple of small commercial programs (Colorez was one of mine as well). Even to this day, I'm at my best when I teach myself a new computer language and start using it for a project, whether that language is Object Pascal (aka "Delphi"), C++ or C#. Today, I do work for state governments and large international corporations. I think I've got the whole programming thing down.
Programming, IMHO, isn't science. It isn't math (I'm terrible at math), it's art. You can't really learn to be a musician or an artist in a classroom. Sure, a teacher can instruct you in the techniques, but your heart and soul has to be in it first. Oh, sure, expose kids to computer programming early so they can see if it interests them, but don't ruin the experience by reducing it to "name the five ..." or "what is the difference between ..." questions. You either learn something to know and master it, or you learn something to take a test on it. You can't do both.I know that from personal experience.
"My country, right or wrong; if right, to be kept right; and if wrong, to be set right." --Senator Carl Schurz (1872)
Lots of people remembering BASIC. There's still a lot of interest in this old language to this day: http://smallbasic.sourceforge.net/
They had code listings for games. I wanted games really. Then I wanted to change the game, so a learnin' was in order. Initially Sinclair BASIC, but read up on the CPU and learn't Z80 pretty quickly. Carried around a Z80 cheat sheet and wrote as much as I could before upgrading to a ZX81, then a Spectrum 48K. Applied for a few jobs with the hope of getting into places like Ultimate. Ended up getting a sweet paid job working at a PCB manufacturer writing Z80 for test harnesses.
Picked up 68000 and C. Bought an Amiga and did a ton of stuff there. Joined the demo scene.
Switched jobs to one making general ledger and debtor/creditor systems for small companies doing more C with a smattering of x86 to fill the gaps. Then hit the 90's and an explosion of Windows work, C++ learning, mix of other languages popping up here and there. Learning other frameworks and libraries, moved around between Borland and Microsoft stuff.
Finally got on the Microsoft bandwagon, embraced MFC and ATL, then de-embraced MFC and ATL. Learn't a lot about X windows, made it into government defence contracts with stints doing medical imaging work. Lots of standards you have to learn. Started mixing lots of other languages into the mix. Right tools for the job.
Past 1998 I've kept up with the web stuff, loads of different stack types and tool chains. Went through a .NET phase for a while, more frameworks, diverse languages. It keeps getting better, I love this stuff, learning is a magnificent beast.
Task Mangler
1988 BASIC ( Grade 2 )
1992 - Internet access gained, and as a result access a lot of new information.
1994 C/C++, HTML ( Grade 9 )
1998 Java 1.1 ( College )
2001 C++, Perl, PHP, Javascript, Flash, and pretty much everything "web facing", XML, XSLT, etc
Unfortunately the pace of change in Java, Flash and a few other products that College wanted to teach, rendered most of the College work useless and non-relevant. The only usable stuff was stuff I learned by myself in 2002 when I basically made the existing techs for a service I was using look a bit incompetent. So everything I've done ever since has been built upon stuff I experimented with between 1994 and 1998 (in high school) as the Web was still in flux and web browsers were garbage.
Today I'd probably recommend making Javascript available as the "language" to learn in primary/elementary school. This isn't to discount C, C++ or something like OBJC, C#, or Swift, which are better languages for building software, but the vast majority of "low-end" stuff can be developed in HTML5 and Javascript without any heavy libraries. Once kids either realize how fun it is, they can learn the advanced stuff, or they can figure out that they really don't like it and probably should stick with spreadsheets (which is often everyone's first exposure to programming if they didn't learn BASIC at some point.)
Oh yeah? Back in my day, we didn't have any of that fancy modem stuff. I had to punch holes in cards and wait in line to run a program. When our school finally got a computer with a screen, it was always snowing. I remember...programming was uphill. Both ways...but we were happy back then. Kids these days don't know how good they've got it.
If absolute power corrupts absolutely, what does this say about renewable power?
It was the late 70s. My boss from Heck wanted to fire me but couldn't without cause. He literally dropped several manuals, a FORTRAN textbook, some papers regarding FFT analysis, and x-ray film which documented the movement of lead shot on the surface of beating hearts. I had six months to write a program to analyze the motion, minus the noise, or be fired. I felt like a fish that had finally found water. Some helpful people pointed me in the right direction, and my immediate supervisor gave me the space and time I needed to teach myself. For the analysis, I used FORTRAN which ran on CDC Cyber. Of course, programmers were not real contributors, and I was not listed as co-author. I met the deadline with ample time to spare. After that, I remained useful by writing routines for other projects. Since time on the CDC was expensive, I wrote smaller programs in FOCAL which ran on old PDP-8 with a paper tape reader. Using my new skills, I soon found a better position elsewhere, so my boss from Heck was rid of me after all.
Had to load a short program to read paper tape using switches on the console. If you were lucky the core memory would still contain the program when switched on, otherwise you had to reenter all of the steps. Load binary loader program from paper tape. Then load Focal a programming language similar to Basic. Then write my stock market game in Focal using a teletype console. I still have a printout of the source code for the game. I was hooked and still am all these years later.
Back in the 80's my elementary school had a guy come in with a black and white TRS-80 computer. That caught my eye and eventually I learned on that and a Sperry desktop PC with 2 5.25" floppy drives. Finally my parents bought me a TRS-80 Coco2 and I started coding like crazy on that. Even made my own Light Cycles of Tron game. Had Basic and Cobol in high school and then went through college for a degree. Those were the days.
Got a C64 when I was 7, sure it also had games but:
10 PRINT "HELLO WORLD!"
20 GOTO 10
RUN
I found the way I could manipulate the computer to do stuff to be just as fascinating as the games I could play. I remember even in second grade I knew 2^3 = 2*2*2 = 8 which I don't think school covered until 7th grade, because I'd read the manual page to page to figure out what it could do. I primarily read the instruction manual in Norwegian but with the programming language itself being English and a few things being lost in translation and all the games being in English it was also a huge motivation to learn a second language. And the games I played weren't all that impressive, many were one skilled man in a garage.
IF-THEN-ELSE taught me a lot about binary logic, trying to make a balloon sprite move across a 320x256 screen where the first 256x256 was accessible one way and the last 64x256 a different way was my first introduction to binary. I remember finally being able to make a balloon go smoothly on the diagonal from one corner of the screen to the other and I was so proud. It was an awfully lot harder than it sounds because of the programming model.
Live today, because you never know what tomorrow brings
You learn to write code in the same way you learn anything else. I really don't see the mystery here, except maybe that people want an easy answer.
I was taught assembler (360);PL/1;Fortran/WAT4COBOL;RPG1 in College and picked up BASIC on my own.I won't agree that everyone should learn how to code, as I watched several classmates STRUGGLE at even the most basic routines (read/write). I found that one needs to have an aptitude for coding and a passion for it, otherwise it can be a very painful experience. If someone is curious and wants to learn more about it, by all means be supportive and encourage them, but to *force* someone to code, not to sure about the success rate of that method, IMHO
I must have started around when I was 5, when my parents borrowed a Commodore 64 from our library (yes, they were very progressive and lent out computers in those days). They also had some programming books for kids in the library. But then they bought a Schneider Amstrad CPC6128, and it came with some games and a word processor. After getting board with the games, I read the manual that came with it. Those days, computer manuals were quite extensive. This one described every part of the excellent BASIC interpreter that came with the CPC6128. So then I started programming myself. At 11 or 12 years I wrote a multiplayer game for it with background music, in plain BASIC. Later my parents got an 8086, and I got an Atari ST. I learned various forms BASIC (GWBASIC, QBASIC, Omikron BASIC, GfA BASIC), as well as Intel 8086 and Motorola 68000 assembler. When I started studying, I got an PC with an AMD k6, with Windows for about a year, then I installed Linux (from the excellent Infomagic CDs) and happily used that ever after. I got a copy of K&R second edition, and started programming in C and later in C++, although I also learned some Perl, Tcl, Python, Delphi and Java along the way. Virtually everything programming related I taught myself.
Although I did attend mandatory programming classes at the university, I can only say that they teach you the bare minimum. But if you have a strong interest in it, and some good resources, you pick up programming much faster by doing it yourself. You become a really good programmer once you write a program that other people start using, and that has to install itself properly, do error handling correctly, and so on. Last but not least, keep improving yourself, look at what other people are doing, participate in the programming community.
A final note: I've seen people from all kinds of life discover programming. Some stumble over it accidentily ("oh wow, look at all those things I can do with Excel macros!"), some have a hobby that inspires them to code. If they are truly motivated they can use very difficult programming languages. But it also greatly helps if the barrier to entry is very low: having the tools preinstalled or very easily obtained, have good documentation, an accessible community. I particularly like the Arduino; even though you are programming C++ on an embedded system, the tools are just one "apt-get install arduino" away, the documentation keeps things very simple, and you can just do a few clicks and load an example program in the editor and get going.
Several Community College courses. Lots of book reading. Some OJT.
Learn to code on the job
I learned Algol 60, FORTRAN, and Lisp while still in high school. Writing programs out on paper before traveling to a near by city by train to make punch cards and run the programs, often going home with s stack of listings to study the results. Only in second year of university did I learn something truely new: currying and lazy evaluation. More details.
All this "people must learn to code" stuff is such a load of self serving crap. It's obvious what the plan is, flood the marked with cheap 'coding' labor for the large software corporations to gobble up. And if a large crowd of at best mediocre 'coders' is what the world needs, fine go ahead. You usually end up getting what you pay for.
I was given a modelling program, had access to a KA10 (pdp10) and got out the pdp0 BASIC manual, started writing code. Found out how to use an editor program, how to store and retrieve DECtape files, etc. Later had to extensively modify a pdp9 program which I did with processor manual in hand, toggling in instructions and saving to high speed (not all that high!) paper tape. A bit later I was able to get hold of a copy of KM9-15 and some language processor programs (FOCAL among them) and the assembler and wrote my own codes to access our (somewhat oddball) peripherals.
Back in my days, without Internet and a sensible way to download stuff, magazines with code listings were popular. You would buy them and then painstakingly copy code. TYPING IT. Reading it from the magazine and typing it into your computer. Pages and pages and pages of gibberish. Or, rather, gibberish is what it appeared to be for you if you didn't understand it. Imagine copying a Chinese newspaper by hand.
Many, many computer users did that. Some, like me, didn't want to be copists anymore but actually wanted to understand what they did there. Because that not only improved the quality of what you did (like someone who copies a book being able to read usually leading to a better quality of the copy, for he can proofread his own text), I wanted to know what the people who made these programs did, I wanted to understand what was going on, and most of all, I wanted to be able to do this myself and create programs myself. First by adapting what was there to suit my needs, later by defining myself what I want and creating something new.
That is the key element here: WANTING TO UNDERSTAND. Thousands, if not hundred thousands, copied that code not wanting to understand it but only to have the end product. Only those that wanted to understand went beyond this.
And this is why teaching this to every schoolchild is an exercise in futility. People who do not WANT to understand have no chance understanding it.
We used to have a Bill of Rights. Now, with the rights gone, all we have left is the bill.
I learned by looking at other people's programs and snippets of code . First, I had to have a goal or program I was in need of. I kept doing the same tasks over and over again at work and thought there has to be a better way. All the computers at work had Autohotkey installed which we used for shortkeys to enter our login/password automatically. I looked into Autohotkey and it is much more powerful than using for shortkeys. After following some of the examples in the forum and manual I was creating programs to automate my tasks at work. Autohotkey and AutoIT are very EZ to learn and start with. Later, I moved into Javascript and using the DOM to manipulate web pages at work to do my bidding. Javascript for me is more difficult to learn but I learned it the same way by looking at other people's code. Usually, you just go to a webpage that you want to know how they did that and look at the source code or even download the page to your computer and start changing the code to see how it works and google what you don't understand..
A particularly wonderful teacher at my tiny regional primary school (20 children in the whole school) brought me a book called The Byte Brothers, which I read and learned from, in the mid 1980s, as a 10-year-old kid, when there was one computer in the entire valley, right there in our classroom. It was an Australian-made 'Microbee' computer and it ran some kind of BASIC, and was more than enough to capture my attention!
http://www.amazon.com/dp/0553244213/
I learnt to program in the mid 70's from a friend who was attending University while I was still at high school. He taught me Fortran and Pascal, and soon after I learnt C by myself. By the time I got to Uni in the late 70's I was fluent in all things Unix. Since then I've branched out a bit, not only in programming languages and related systems but also in the commercial side. This learning has been to my advantage throughout my life. However, there's one technology that I've never been taught or understood - hardware. Definitely teach young kids how to program, and teach them how to design hardware too.
I always found PCs to be pure magic when I was a kid, and, while I was playing games, I always wanted to learn how they operate. At first I was mastering OS, but then I slowly started playing around with editors in games. I especially remember Warcraft 3 because it's editor had some sort of scripting for cutscenes, which I really wanted to pick up, but never really got it. At that time I understood basics of programming. From there it all went downhill. I tried all I could get my hands on and it was loads of fun. Programming was never really taught at my school and university, so I just read books, tutorials, references and slowly taught myself how to code.
In the UK in the early/mid 80's we had the BBC Micro which shared the market with the like of the C64 and Spectrum. Pretty standard kit; 6502 CPU with 32k RAM (later 128k on the BBC Master). BASIC was where I started, but it didn't take long to get into writing assembler - somewhat necessary in order to do anything cool like *ahem* copying games which relied on raw sector reads of deleted data on 5.25" floppies as copy protection. Our local radio station even had a computer show on a Wednesday evening where they would play programs out over the air for people to record on their handy tape deck.
When I started high school they had a whole Econet network built around BBC machines with an SJ Research file server. That sparked a whole new interest and, under the premise of writing a multi-user network game, I managed to persuade SJ to send me a load of very useful documentation. A matter of weeks later I was blowing my own PROMs at home and discreetly slotting them into the BBCs in one of the music classrooms. The docs from SJ were what today's coders would describe as "undocumented APIs", but you would essentially just load up the registers and JSR to a particular address to unleash teenage stupidity with gusto.
Instead of trying to steer me toward applying my skills in a more constructive manner, my school decided to ban me from using any computer in the school for a year. Being somewhat "on the spectrum" I went a little off-piste at that point and headed off down the road of rock n roll, girls and weed for a few years; until it became necessary to actually earn a living.
When I came back to computing things had changed a lot and the PC was taking over; it was late 486 and very early Pentium dominating the market which I found fairly easy to slip into. I became relatively capable with a lot of the common languages of the time and whilst I'm decent with x86 it's only on a handful of occasions I've ever needed to write it in the raw.
I don't work as a coder, but that early experience has been enormously valuable in terms of understanding how things actually work under the hood, being able to turn my hand to most common languages when the need arises, and in terms of the problem solving mentality I learned back in the 80's.
Starting in 7th grade I learned to code from Calcu-letter articles in Popular Science, my "programmable" TI-55 calculator, the description of BASIC from the back of my Algebra 1 book in 9th grade, BYTE magazine in the school library, my dad's Fortran programming assignment from a college class he was taking (punch card era). Problem was I didn't have a computer. When I was a junior in highschool I got my first "real" computer a Sinclair ZX-81 with 1k of ram. When I was a senior in highschool I was able to take a programming "class" with TRS-80 Model III computers. The teacher was a history major. He learned more from me than I did form him. After that it was Pascal as a freshman in college, VAX-C on a VMS system as a sophomore, and finally C on a Unix system as a Junior. I took a networking class as an undergraduate, but had no internet connection until I was in grad school.
... because I really _wanted_ to. Cost about USD 2'700 in today's money, really had to lay into mom &dad to get me one. One or two other people in class who were into it, am working in the field today, hence my rather reactive opinion that the only people who should be allowed to program are the once who are really into it. Nothing worse than code by the person who got into it for the money rather than, at least in part, to geek the eff out.
Like Choose-Your-Own-Adventure books, but requiring the reader to execute included BASIC programs.
As a kid felt alone and isolated - not into sports, family issues (divorce/remarry). Computers were an escape, a way to feel "special" and a way of exerting control.
Dad was into computers through his work, brought home Vic 20 then C64, learned some programming by typing in code. Later assembly to do cool stuff like switch out character sets etc. Had a small job programming menus for touch screens on an Apple ][.
High School had computers TRS-80s but teacher did not know how to use them which gave us free reign to do what we wanted. Learned some assembly there as well (Block Moves ROCK!).
Very good community college professor who was "in the industry" and taught (for the time) formal computer coding and design methodologies. I learned fortan & pascal there.
Picked up more bits of programming (particularly database apps) while working on side projects for various jobs and friends - Lotus symphony! Clipper Summer 87!. First real programming job learned the hard way about business app development - just get it done!! No time no spec no testing! You are a good programmer but not our kind of programmer! You're fired!
Finally started working at a proper but very small computer firm had a great older mentor who taught me about integrating what I learned in college with the "real world" stuff. The job forced me to work with clients directly, larger scale projects and learn more about "cost" and the "business way" of doing things.
As others have said - having a personal interest in these things helps keep driving you forward with learning and adapting to new stuff. It's not a job it's a hobby/lifestyle etc. Never stop learning!
I was introduced to programming when I was a sophmore in college. There was a course on 3D programming using the new API called OpenGL that sounded interesting.
Ever have one of those things that just seemed to naturally click for you? That's what it was like. Took to it like a fish to water. Just regret it took me so long. But it's not like everyone or every school had a computer back then.
~X~
My father, having used IBM PCs at work back in the 1970s, spend a small fortune to buy the IBM PCjr when it became available, and tricked it out with a RAM upgrade, hardware-cartridge BASIC, a second (gasp!) 5.25" floppy drive, so that he could write his own software in BASIC. He still uses that program today, thanks to my finding various ways to allow the video modes he hacked to continue to work on modern Windows systems.
I was an eager subscriber to the magazine 3, 2, 1 Contact, which had BASIC programming samples in the back of the issues for various games and stuff. After entering them in (usually slightly incorrectly) I'd hack them to do various other things.
I distinctly remember typing "debug" as a command into the BASIC interpreter because I thought it would find the bugs for me. I discovered the command line, learned DOS (about a day, right?), and I was hooked. Formal education first in C at the local community college concurrent with BASIC in junior high school, then Pascal in high school, and I picked up Perl in a self-directed small-projects class in 1995 where I learned about this cool new replacement for the Gopher protocol.
I now write Java web applications professionally, and my 7 year old is writing toy programs in Scratch, wanting to know when he can have his first computer of his own.
Self taught BASIC on a timeshare system in a Bell Telephone engineering department, then picked up FORTRAN to write some engineering apps, then XEROX assembly for a new job, then IBM 370 Assembly as an MVS systems programming manager, then C to move into UNIX security ...
I missed an opportunity to learn coding in 1961 as the computer was 30 miles from campus, I had no car, and was taking semester hours of math and physics. Then I was accepted for graduate school in 1975 and decided that since my goal was to become involved with science and research I should acquire skills to handle data and signed up for FORTRAN.
FORTRAN was offered by the Business department and 'goto' was heavily used. It appeared that only two or three of us in the class of about 30 'got it' but I might have been biased since I was 10 years older than most. Debugging was a bitch. Once the code was key punched the packet of cards was placed in a container embedded in a wall; at some point the computer operator would run the packet through the CDC 6000 series main frame (60 bit words) and then the output wrapped around the card deck and put in a pick-up pile a few hours later. All this to find syntax errors! I wound up doing my coding from 9pm or so until 2am as wait times were substantially shorter. I made friends with the operator and learned how to run the main frame.
About this time a time sharing system using Teletype Model 33 ASR terminals distributed around the science building was installed so I started to use it for my FORTRAN class (slightly different than the CDC) and learned BASIC.
I was given a 6502 computer on a board designed for engineers could learn how to use the 6502 chip and I/O chips. Input was a keyboard, output a paper tape similar to a cash register tape. I learned some assembly on it but had to purchase a couple of tape decks and build an interface to save and load code in the 'Kansas City Format'. I wrote a version of Wumpas using the included BASIC in ROM and used this computer in a data structures class I took.
I did take introductory courses in Pascal and C, for instance, but was self taught in C++ and in the last 4 years Java and Dart.
I read all I could to understand what to do to conceptualize and then start to code projects. Since most the coding I've done is in support of data acquisition and converting raw data into data usable for analysis and display I find that I kind of cherry-pick topics to learn, skip others, and have spotty knowledge of some aspects of the languages I use.
Programming has mostly been a secondary task in my job descriptions. I think requiring primary school students to learn coding is about as sensible as requiring them to take calculus in order to be accepted in University for Humanities majors.
Nate
I learned to code by enrolling as a Computer Science major at University. I had no computer at home. My first exposure to programming, or really computers in general, was in the computer lab's Unix machines. My first CS class, CS 201 or whatever it was, was where I first learned to code. Coding became my profession, and I'm pretty good at it. So I get to roll my old-man eyes whenever I hear that we need to start teaching kids to code when they're 6.
I learned on a batch system using keypunch machines and 11x14 line printer output, about 1970.
I don't believe programming should be taught in schools. Telling a computer what to do has changed every few years. 'Compilers' with AI will revolutionize it again. How do you teach a robot how to program? Programming is the art of saying EXACTLY what ou want.
When I was around 16-17 I was excited by computers. Back then it was HARD to get access to one, but when I did I just wanted to make it do stuff, ANY stuff. When we finally got a VIC-20 that we could really do something with, then my brother and I went crazy, and he's 4 years younger than me. We made some pretty GOOD video games and I wrote a few simple utilities. Of course we did simple stuff first, and often just copied demos out of magazines and then learned how they worked so we could do something new with it.
BUT I don't think most kids are going to get a LOT out of being taught some very simple "move the turtle across the screen" kind of thing in 4th grade. It won't hurt them, but it seems wasteful to spend billions of $ on that when half our schools have paint peeling off the walls and water leaking in the roof.
"Malo periculosam, libertatem quam quietam servitutem." -- Jefferson
I was given a Vic-20 by my parents for Christmas one year when I was about 10 instead of the Atari 2600 I really wanted. I did enjoy the game that came with it (Radar Rat Race) but was still disappointed. Later that day I cracked open the manual and began typing in the commands. "HELLO, WORLD!" appeared on my screen. Eh. And then an animated ASCII jumping-jack man. That's pretty cool. And then a program that asks for your age, runs it against several IF-THEN statements and prints out an answer based on your age.
What a second. What?
So I added numbers together and did more IF-THEN checks. Holy fucking shit. I realized at that moment that I could do anything with these commands. I could create any program I wanted including games like Pacman. There was no limit. I had the Power.
So I programmed hardcore for the next 6 years. I became very good in Basic and proficient in machine language. And then I stopped programming around 17. I was burned out and it wasn't fun anymore.
Eventually I became a music major (composition) and gave up on computers altogether. Then a few years ago I came up with an idea for a super massively large music generating program. While I had forgotten how to program and had no feel for modern technology (when programming) and anything that had happened in languages in those 30 years, I still knew how to think like a programmer.
I chose Lua for this project (which didn't even exist when last I had typed code into a machine) and have become fairly proficient in it (some 6000 lines of code or so).
So yeah, entirely self-taught and then re-self-taught.
I have some huge gaps in my knowledge concerning really cool mathematical algorithms that I'll probably never learn. But I'm not really a programmer. I'm a composer using programming to realize a bigger project.
Started with GW-Basic, then moved to C and then to ASM and later to C++ and C#. Coded in professionally ASM for about 5 years. Uploaded apps to bulletin boards. Learned a lot on the subway going downtown to work each day. For me coding was not just something I learned but it was an all-consuming passion. I couldn't get enough of it (and still can't). I used to just blast text to the 8086 video memory address at 0xB800 and watch it display and think that's the coolest thing ever. Coding is difficult. Perhaps others can succeed in it as purely a day job but I cannot.
Read a book. A bunch of books, really. For me, first a C++ book in HS. Then many more in college. You see, if you need to master a language, you research the top 2 or 3 books for said language, then read them all cover to cover, spend several thousand hours coding in that language, and then you'll start to be proficient. Copy/Paste programmers are a lower breed in my view. When I conduct interviews and ask any sort of question about bit manipulation, it's staggering to see how few "Senior/Principal" engineers can't recall how many bits are in a byte, or how much space their data structure will consume. Perhaps these are tradesmen, however? Does the pipe fitter understand hydrodynamics, or how exactly his lathe cuts threads into a pipe? No, he just knows how to measure, cut, and install pipes. There is a use for those who grok and those who just build, but I hate seeing the moniker "Senior Software Engineer" applied to people who have just copied and pasted code for a few years, as they don't understand the 'why' of the system at lower levels.
HTFU
That was the name of a book serialized in Analog in the mid 70's. Part of the story involved a physicist writing FORTRAN code to calculate the magnetic field inside a cyclotron(?). Since I wanted to be a physicist I went to the library and got a book on FORTRAN, then a book on BASIC. A bit later I read about computers using aa language extension called to calculate curvatures from metrics for General Relativity. I couldn't get access to a FORMAC compiler, but did get access to REDUCE, so I learned Lisp along the way. Then Pascal. Forth when I got my C-64, Then when I got my ST Modula-2 then C. I remember Mark Williams C and my first debugger, along with my first exposure to Emacs via Microemacs. What a nasty way to pervert a young adult! ( Emacs that is. )
Started with HP25 calculater and upgraded to HP67. The I increased knowledge with Basic on a mainframe from manual (slow progress). At last I got a personal computer (ABC80). All coding have been due to need. I have programmed in about 8 languages as needed.
I think that I self-taught in my teens using computers available to me from friends (KIM-1 I think, building electronics and a local high-school had a PDP-11). I also visited a Honeywell data center and looked at code and I visited local colleges to use their systems and we might have had remote access at one of the libraries. My kids learned on their own when I gave them a K&R and set them up with a compiler on a desktop. They started a lot younger than I did and they didn't have the internet resources that kids have today. They both have CS degrees today.
As an undergraduate I took an Introduction to FORTRAN Programming course because I needed another course to maintain full-time student status after dropping a much-hated French literature course. Punch cards on a CDC 3600, with later use of a CDC 6500 and an IBM 1800 prior to graduation. That first course was the second quarter of my freshman year; I took a CS course every quarter until I graduated, then spent two years in grad school working on a master's degree in computer science, until I dropped out to go to work in compiler development at Sperry Univac.
I was about 14 or so and bugged my parents so much about computers, they didn't buy me one, but somehow I got some books on basic. The I would "write up" basic programs on notebook paper when I was bored during class at school. My first 2 complex programs were a black-jack program and a D&D character generator program that would randomly generate D&D character stats. Of course, no graphics, just text in these programs. Then whenever I had access to a computer I would type them in and debug them and make corrections on the notebook paper. The computer would usually be an Atari 400 or Atari 800 on display at Sears or a Single TRS-80 Model I that was in my Junior High school's Math classroom.
Then when I was 15, I talked them into taking a college level programming course where I coded on TRS-80 Model II and wrote some business programs, basic stuff. Finally, I talked them into getting a Commodore 64 for me and I learned to write complex code "typing" in numerous basic game programs that could be found in some magazines at the time. The C-64 came with quite a manual and by coding all those games and looking at the "Peeks" and "Pokes" I learned about Bytes and Bits, memory addresses, the CPU functions and registers, sprite graphics, etc. I then did some Simon's basic coding of some simple games I came up with and did some assembly coding for the C-64 chip. Also got my first modem, a 300 baud, and learned about communications, uploading, downloading, etc.
Took a few more classes in high school and coded on the Apple-IIe and TRS Model 3/Model 4 and I was on a roll. Sailed through college and learned Cobol/RPG/Pascal/C and some other languages and I just keep coding in whatever seems to be in demand that someone will pay me to do and is also fun.
Been coding almost 35 years now and still keeping up I hope.
Circa 1979-80 or so; she and I wrote a gradebook program (pair programming LONG before the term was coined), as she was an educator and wanted to learn something new. My Dad would come down to the basement, stand there for a while, trying to understand what we were doing, then just shake his head and go back to his EZ-Boy and watch TV :-)
It was Jr. high. Looking over the shoulder of an upper class kid because there were only 2 computers at the time. Then things progressed. Hey JLM, y'all still out there?
For me, it was an epiphany, one of the very few in my life.
I was always attracted to computers, but these were the old days, and the concept of PC was starting to develop. A kid like me had no access to any computing device, except a TI calculator that my older brother had. That piked the interest, but no revelation forthcoming.
Then a government agency decided to introduce computers to the local business, and allowed computer time in a street office, to business people. The interest wasn't too big, so they had the computers sitting idle most of the time, and finally they let interested youngsters in.
I was one of those youngsters, like 15 at the time. I fought my way through the BASIC manual, in English, a language I knew very rudimentarily, and did some coding. After copying some examples, I remember the moment when I decided to do something that wasn't in the manual, that is, draw a circle. I drew the circle point by point based on the distance to a center, by calculating the x and y coordinates, and the circle appeared in the screen. At that moment I knew that that was what I wanted to do.
The most important feelings that I remember were the sensation of the machine doing what "I" told it to do, and the feeling of wanting to do something (draw a circle), and finding by myself the solution to that problem using logic. That was it for me.
Rome taught me patience and assiduous application to detail. Virtues which temper the boldness of great, general views.
The first language I learned was 8080 assembly at age 14. I hand assembled on paper and then programmed by entering hexadecimal machine code into a Prolog PROM programmer. A couple years later, I was working with CBASIC and a Z80 macro assembler on a CP/M system.
It was 1962, at C-E-I-R. I was a "junior programmer," two-steps lower than dirt, paid less than the departmental secretary. But, there was a team there (many of whom went on to be well-known names) who were writing code to punch on cards to feed the 4K (7-bit bytes) IBM 1401. I needed to learn what they were doing, so I started reading the 1401's assembly code of a package of utilities (read/write tape, Fibonacci sort, etc.), and offering suggestions for improvement...until they let me start making those suggestions myself. The card deck was called CELIB (C-E-I-R Library), and I discovered a copy of that deck of cards in an Australian government agency where they were still using it (about 15 years later) on an ancient 1401 that, by that time, had grown all the way up to the maximum of 16,000 bytes of memory! And I proved it to them by showing them my name in the comments of some of the code they were still using, where we would note what we'd changed, and when.
After I'd grasped how IBM 1401 assembly language worked, I started taking home a binder of the kernel code of the IBM operating system IBSYS, for the IBM 7090; we had one of the first. (The 1401 was used to copy card decks to tape, so we could mount the tape on the 7090, instead of spending precious time on that $800/hour computer loading the card decks at the card-readers' speed; all printer output also went to tape, which we moved over to the cheaper 1401 to actually print out on the then novel IBM 1403 printer).
Once I'd figured out how some of the "kernel" of IBSYS worked, I began to realize that "Coding" wasn't "Programming." That led me to begin to understand the "bottom-up" (write some code, see if it does what you want, revise it, repeat) versus "top-down" (here's what we want to accomplish: Now, break that down into codeable, callable subroutines, which--in turn--were broken down into smaller bits of code, like CELIB) models of design. That lead to initial "Principles of Programming" in which we started with System Analysis (what exists; what's needed?), and did top-down decomposition into documented procedures, which then were written in the languages of the day: Assembly, FORTRAN, COBOL, and so on. Looking back, it was fun to survive those early years understanding how architects and engineers created new buildings--by starting with what the building was intended to achieve ("Start with the a definition of the end state")--all the way down to the laying of the flooring--in what came to be known as "top-down system design."
It's been a fun ride. I still chuckle at people trying to start with coding, without a clear plan of what it is they want to eventually achieve. Coding is just the implementation of design. It's the tip of the spear...but you still gotta know how to find the game you want to throw it at! I still write the occasional utility--sometimes in .bat files--just because its' such an engrossing activity. But, I still start with a sketch of what I want to achieve before I turn to the computer to actually "code."
Programmed in Algol, on punch cards, for a Burroughs B6700 mainframe. Learned circuit theory, logic design and assembly programming as well
Then, in minicomputer lab, learned how enter the bootstrap program, in binary, with toggle switches
After college, took a break from computers to run a manufacturing business
I returned to computers with an Imsai 8080, taught myself how to program it in assembly, and used it to build a control system for an aerospace test rig
Later, I built an 8086 PC clone from a bare circuit board (yes, back then bare circuit boards were available). Taught myself how to program it in assembly
Then, I taught myself the C language, and got a job writing wafer inspection software..image processing on a 4Mhz 8086 requires some serious assembly skills
After that, I learned the 68000, and used it as the controller for a machine used in eye surgery
Next, I used a variety of commercial computers and custom designed microcontrollers for controlling a bunch of stuff in the theme park business
Various hardware designs and control designs followed, including a telepresence robot, stored-value payment system with SQL database, lane tracking system for semi-autonomous vehicle, computer-assisted landing system for military helicopters, control and monitoring system for charging large industrial batteries, and the control system for high power microwave amplifiers used in satellite communication
TL/DR..Learned the basics in college, the rest was self-taught
Cracking copy protection on C64 disk games. Had to write a disassembler. First commercial language was C on a Mac Plus with lots of 68k assembler.
Started out on an Amiga 500. Did most of the fun stuff with assembler on an Amiga 1200.
I had to learn to do something I knew nothing about. March 1978, ordered a TRS-80. Weekly calls to the store, hasn't come in yet.
June 22 1978, Radio Shack calls, my computer has arrived. I bring it home and start typing in the examples to see if it works. I had my first original program running the next day.
I needed to move to a better apartment with ventilation and air conditioning. It got very hot. July 1, I move to a duplex with a window unit. July 5, I'm fired from my job.
I go to work. 12 hours a day for months. Just banging away. I was learning what it would let me do.
April 1980, I have a job with Texas Instruments. I being paid to program the 99/4.
Programming kept me alive till I was fired from a hospital IT job in 2010. I was sort of burned out.
Dropped programming for 2 years while I had cancer treatments.
Now I'm on disability. I have all the time I want to program. I'm programming for me now.
I give myself projects.
Yesterday I bought an X Box 360 Kinect for $5.00 in a thrift store. I'm going to learn how to program it as soon as the AC adapter comes in.
It's been fun.
I had a babysitter who showed me how to get into QBASIC from Windows 3.1 and I taught myself how to code from there. ;). Every line had a manually inserted line number. You always went by 10s in case you needed to go back and add a line later (didn't want to break those GOTOs!
Of course, initially there was no internet and I didn't have a book to work from, so I just used the only flow control tools I had (IF and GOTO) to create some really beautiful code
First "formal" attempt to learn how to program was in freshman year of college in Calculus class. The professor spent about five minutes trying to teach the basics of FORTRAN: "This is a DO loop it ...", etc. Then he assigned homework to write programs to numerically integrate the equations in problems 1-10. It was a disaster. (I won't even go into the ancient computing system that everyone had to use for these assignments. The lack of adequate computer resources was another disaster I won't go into.)
I finally ran across a copy of Kemeny and Kurtz's BASIC programming book in the discount bin at the student book store. Bought that, logged onto my computer account, and worked through all the examples in that book one rainy Saturday afternoon. By then we had a brand new system that had been installed the summer before. Still not unlimited access but orders of magnitude better than we had during the learning-programming-during-Calculus debacle of the year before. Yeah it was BASIC but it was a springboard to the other languages I'd wind up learning in the future.
CUR ALLOC 20195.....5804M
11th grade my math class started a programming class in BASIC along with the math curriculum. This is the computer I used. Please note, this is about 40 years before all the big hype about teaching kids to program. Nothing is stopping schools from doing this, nothing except the schools themselves.
I bought a Sinclair ZX81 in 1981, and taught myself BASIC. I went on to Z80 machine language; an 8- bit word is easy to deal with; it made more sense than BASIC anyway. Then I went on to the scripting languages; along the way got some Java. Now I create silly apps in Lua (using Corona) that people actually download.
Doh.
On a Tymshare teletype in my father's office in the mid-60's. Fortran and COBOL, if memory serves, all saved to paper tape. It sounds so primitive now, but, at the time, it was the bleeding edge...
Best course I ever took. Still coding in Fortran today on big iron all these years later.
Gave me the basics to easily learn shell scripting, C, Scheme etc.
I don't know about starting in grade 4, but I certainly support introductory computer science courses in secondary school
I learned from Daniel D. McCracken's Guide to FORTRAN iV Programming.
When our school finally got a computer with a screen, it was always snowing. I remember...programming was uphill. Both ways...but we were happy back then. Kids these days don't know how good they've got it.
Was your computer coal fired too like ours was? I remember going in early on Thursdays because it was my day to shovel coal.
'The tyrant will always find pretext for his tyranny.' - Aesop's Fables
Slightly off topic, but back in the 1980s our local vocational/trade school offered a career path as a punch card operator. You have to feel at least a little bad for anyone who opted for that vocation.
'The tyrant will always find pretext for his tyranny.' - Aesop's Fables
I agree with the comments about passion.
I have hired more than a few junior programmers, and the really useless ones took instructor-led classes, did the minimum homework and received some kind of certification. They don't like to spend the time to really learn programming, they just want the money.
The really good ones stayed up late nights banging away at code, making something work.
Both of those types write shitty buggy code at first.
The good ones listen and work to improve.
Teaching all kids to code is stupid -- more than half the "advanced" kids struggle with Algebra 1 -- they are just are not wired to think abstractly.
It is ok, the world needs fry cooks, roofers, and CEOs too.
When I was a child, there were no computers. At least not that regular folks saw. Then in middle school there were Apple II's. And they were pretty simple and anyone (with access) could poke at 'em and make 'em do stuff. Simple stuff, but enough to get the idea.
Now everything is a computer. And most of 'em are magical black boxes. They are not approachable.
I spoke to a telemarketer a couple of years ago. When I told the young man (I'm guessing late teens) that I was a programmer, he asked "do you know any good codes?" Like making computers do things is a magical incantation. Like on TV.
So I'm in favor of very basic programming as a class. Probably not in elementary - probably middle school. Just like basic science classes. Because this is the information age - people should know how that works - at least BASICally :-)
I had an excellent mentor at NASA at age 16. Learned about high-level languages and algorithms using the CAL language on Tymshare. Learned about how computers actually work by toggling in programs through console switches on a PDP-5. Learned how to code efficiently mostly by reading other people's code. Learned FORTRAN IV from McCracken's book. Read a lot of computer manuals, back when computers came with full documentation sets.
Still working as a developer at age 63, and still love programming. These days I mostly use Scala and Python, and when I must, JavaScript. In my spare time I pursue my passion, which is machine learning, taking online classes and working on Kaggle competitions.
I started typing in programs from byte magazine into a commodore 64 while sitting on phone books so I could reach the keyboard. I then picked up C, x86 asm, pascal and c++ in that order but when quale came out it had a compiler that made replacement dlls from quake-c. Looking at that code as an example and modding it to make tame shoggoths and super weapons imprinted me with my coding "style". Different paradigms (oo functional etc.) don't really change what is my core balance between simplicity readability maintainability and performance.
refactor the law, its bloated, confusing and unmaintainable.
In my 5th grade we had a class named Computer Science. Basic stuff - some excel and power point practice, very basic web pages in WYSIWYG editors - this sort of things. As we were still kids they gave us an old DOS game to practice keyboard typing. In short, you had to type letters as they were falling faster and faster from the top of the screen. The maximum speed wasn't enough for me so I decided I wanted to 'edit' the game and add adjustable speed. That's how it started.
I had no broadband at home at that time. All I could afford on my low 10-yo pocket money was an expensive Internet Cafe twice a week to download any available tutorials and tools which I was carrying on floppy disks home. Boy, I couldn't count the number of times one of the floppies carrying a part of a split zip archive broke. Not to say that I was just making my very first steps in the English language at that time. It took me almost a year to improve my linguistic skills, comprehend Turbo Pascal and its graphic library and to write my very first game exactly as I wanted it to be.
And then I discovered C and yet again I started a journey to where I am now.
I got aTI-99/4A for my birthday when I was 8. I didn't know how to type yet, so my mom helped by typing in the examples from the Beginner's BASIC programming guide. Then I would edit them and figure out how to do stuff on my own. Eventually I was writing my own simple programs and trying to figure out how to make databases saved to cassette tapes.
A few years later, my dad bought an IBM PS/2 80 that came with a BASIC interpreter. A couple of years after that, I was in junior high school and had to take a programming class (taught in BASIC). I had been programming for several years at that point and was already well beyond what the class covered. This was still the 80s and the school didn't have a specialized computer teacher. Since computers had keyboards, they recruited the typing teacher for the class. Being a computer class, at some point Borland sent her a Pascal compiler. She knew I was way more into computers than anyone, so she gave it to me. I installed it at home and taught myself Pascal by writing programs in BASIC, then re-implementing it in Pascal.
When I got to college, I learned the "computer science" aspects (e.g. data structures and algorithms) of programming in C, then C++, and also learned things like COBOL, x86 assembly, and OpenGL. Along the way, I've also taught myself other languages as needed, like HTML, perl, php, SQL, etc.
I think the idea of making programming a requirement is pretty stupid. I have taught many programming classes myself and have observed the same thing as every other programming instructor I've ever met: there are a few people who pick it up instantly and advance far beyond the rest of the class in a very short time, a large number of people who are capable of doing it at a basic level, and a few people who just cannot get it at all. We should definitely have computer usage classes, especially for standard business applications, but what is far more important is how to think critically about information. We don't need any more anti-vaxxers or climate-change deniers.
bytesmythe
Hypocrisy is the resin that holds the plywood of society together.
-- Scott Meyer
C64's BASIC was my first exposure to programming. I had to take a FORTRAN class in Aero Engineering school, and coded a computer model based on some old NASA code for my Master's Thesis. My first job was writing FORTRAN and C code for spacecraft flight software. Learning on the job ever since.
Same here. Except I cannot for the life of me shove JavaScript down my own throat. My whole being will always vehemently be in opposition learning it. Which is sad because that's what most programming jobs nowadays seem to require.
I had fooled around with C a bit because my dad was always writing little [incomplete] games in it. All the tools I had were his.
For some reason I was running Windows NT on my computer. It came in the box with Visual Studio and I thought it sounded cool. Even got it to play Half-Life after horsing with video drivers long enough.
One day I was "cleaning up" the hard drive by deleting files that I didn't recognize or care about. Apparently on that version of NTFS there was a file in the file system that you could delete that was...vital to the filesystem itself. Lost all my data because I sucked at backups back then. "Enough of this Microsoft garbage, I want to try Linux!" I said. And since I had no idea what I was doing, my dad also picked me up a copy of 'Using Red Hat Linux'. Something like the second half of the book was just to introduce you to shell and Perl scripting, and I was like "holy crap this is so much easier than C". And then I discovered Ruby (via Slashdot), and it just made so much sense to me, and programming was actually kind of fun.
This was late 90s or early 2000s. I was about 16 at the time. I got a kick out of finding ways to run Doom on school computers. The librarians always thought I was "hacking" and got all upset. Bahahaha stupid librarians.
Learning new programming languages is always kind of cool. Maybe because I suck so bad at foreign human languages.
Duct tape, XML, democracy: Not doing the job? Use more.
I used to be able to sit down with an intensive read through of the reference manual, then immediately code it. A prblem these days with dusappearance of most bookstores, its harder to get abhold of the reference manual.
The second big learning curve are of all the best practices of a successful software company. I was under the delusion once that beacause Imwrote nifty programs in high school and college, I could code commercially. No way. We insiders call this academic software, an euphemism fior semi-crap. A commercial coder must know about source control, writing tests, continuous compilation and delivery, specification systems, training and so on. I call these best practrices in comparison the emerging academic discipline of of rigorous software design. Best practices include corporate culture and dev-lead style as well formal engineering. You dont have to work for a commercial company to learn these practices. Some of the better open source cooperations in Github incorporate them. Somto,can learn partipating in them.
When I was 4-5 years old, Dave, my dad's best friend from childhood, gave my family a Commodore 64, a stack of magazines, and a programmer's reference manual. I learned to code when I was 5 and started programming when I was 6. By the time I was 7, I had to start learning to optimize my code and conserve memory.
By the time I started college, I had many years of experience under my belt...
On an IBM 360 mainframe at my University. First using SPSS to look at 15th century tribute lists from Yucatan, then bringing the college mainframe to it's knees in an experimental computer mapping course. We were assigned to do a fishnet of 10 data points. I did an actual map (Fortran) of the state of Yucatan (outline and 101 municipios). It didn't work in the 4k students were allocated. We looked for errors and found none. Finally they shut down all of the admin programs and let mine run full out over one weekend and it worked. Now I have more power in my phone :-)
A few things picked up, getting introduced to a Robotron machine, doing homework on an Amiga and then finally learning to program from the docs, trying examples and joining computer work groups. And lots of video games.
I was born in 1976. I had logo in I think 4th grade which was the first time I'd ever touched a computer. That summer my grandfather got a TRS-80 color computer and I borrowed/kept my 4th grade math text book. That text book had a BASIC tutorial in the appendices which we had not looked at during class. I used that BASIC tutorial along with a manual that came with the TRS-80 along with some source code print outs from programs that my grandfather wrote (simple programs to help him choose lottery numbers) to learn to write some simple programs. One of my first programs told random jokes. That summer since I had limited access to my grandfather's computer I spent a lot of time writing BASIC programs on napkins at restaurants. A year or two later he gave me that computer and I started making more complex programs. My first ambitious program generated Basic D&D characters, rolling the stats and then suggesting an optimal race and class to go along with the stats. I continued to make that D&D program more and more complex throughout Junior High, adding AD&D rules and adding inventory and spell book parts.
I didn't learn structured programming (with procedures and data structures) until high school when I took a Pascal class at my high school (a math and science boarding school). I taught myself C from the K&R book right after I finished Pascal. I taught myself C++ while taking a C++ class in which the teacher didn't understand the language. The class used C++ in 21 days, but I used Stroustrup. Then I taught myself Perl from the Camel book in high school as well. Whenever I learned a new language I would first work on understanding and modifying example programs and then choose a program I wanted to write as how I would learn. I made programs to build mazes, a web app that was an early kind of forum/blog, and more and more complex AD&D character generators.
I also spent a lot of time in 7th and 8th writing programs for my TI-81 to implement various math formulas we were learning such as a program to do the quadratic formula and to compute other things about parabolas like the location of the focal point and a program to use determinates of matrices to solve systems of equations. The more math tools I learned the more fodder I had for writing programs to implement them.
I found in high school that one of the major obstacles to programming courses was that many kids understood how compiling and linking worked and many didn't. The kids who didn't had a really hard time even getting Hello World to work because the teachers taught the language but didn't teach the tools so the build process was just kind of like a magic incantation rather than a process they understood.
I learned to program as a senior in high school in 1968-1969. Our school had an IBM 1620 and I learned both FORTRAN and IBM 1620 Machine (not Assembler) Language. At the University of Maryland (1969-1973) I learned Univac 1108 Assembler, COBOL, FORTRAN and other technologies. After graduation I learned C, C++ and Java. Pretty good career.
My first experience in programming was TI-BASIC on a TI-84 calculator in high school. After that I began learning from textbooks which I bought, first Java, which I have now grown to despise, then C for embedded systems applications, and most recently Python for data science.
Bought a shareware floppy of F83 Forth by Laxen & Perry.
Contains all the code from assembler, compiler, interpreter, editor, +++, Learned from reading the code. Forth is great for writing a word then executing it on the command line.
Forth code snippets in early Dr Dobbs Journal, before the Forth branch fell off their programming tree.
Forth group on bbs.
Starting Forth and Thinking Forth by Leo Brodie
https://www.forth.com/starting...
https://sourceforge.net/projec...
IBM PC technical manual with circuit diagrams and BIOS listing.
Programming machine code on an 1802 with a thumb-wheel prom programmer.
Go well
While attending college I worked second shift at the Control Data Corporation (for you youngsters those were the days when the CDC 6000 series was THE supercomputer) in Rockville MD.
During idle periods I taught myself my first language, FORTRAN, from a book I found in the data center library. Because I had a background in wiring plug boards for Electronic Accounting Machines where I had to take into account component timing issues I found computer logic and even assembly languages easy to learn. In fact the second language I learned was assembly language for the IBM 1401 and my third language was IBM 360 Assembler.
That was in 1964 and I learned well enough to stay gainfully employed as a programmer, database administrator and systems administrator beyond my 70th birthday.
My first job was programming loadlifters.
that still yields 2...
CLI paste? paste.pr0.tips!
First, I was formally trained on music (+14 years). This opened my mind to abstraction, not only because you need to figure how to translate the figures to sounds, but also because it is not the same to play baroque than romantic music. All this have a big context around that prepared me to work with today's complex scenarios. Also, I learned two years how to use mechanical typewriters without letters on the keys; this, together with complementary piano lessons helped me very much to make a healthy usage of the computer keyboard (very fast typing and zero carpal tunnel syndrome).
Then, in Costa Rica we didn't have all the facilities other countries have when I was a child. For me, a computer was a big refrigerator full of bright lights and some big round tape circles dancing and making bip bip bip. Was when I had an old second hand 1960s book describing how these machines really work that started to catch my attention.
After that, my brother began studying Electronic Engineering on the University while I was still in High School, and a Tandy 1000 EX computer arrived home. There I was playing with an Epson Printer on Basic and made my first music paper calculating how to use the individual pins in the printer. After that, everything was obvious (of course I was very good at math on my early days). In fact, today I see that the students are lost on extremely abstract concepts without digging enough on the basements ... it is important, at least once in our life, to create our own graphical interface using our own rules and designs, and not to depend so much on Windows, OSX or X APis, or to think that everything in this life is pure HTML.
I soldered transistor shift registers together in the sixties. In 68 IBM taught me Fortran Everyone should know that a series of simple steps can yield useful results.Past that, if a kid hasn't the taste for it then enforcing learning isn't going to help
In middle and high school, I kind of self taught myself electronics by reading a lot of Radio Shack books and doing project kits, so in high school I wanted to learn how to program. Outside of some basic LOGO and BASIC stuff, I never really had exposure to programming. I took my Pascal text book from the first day of CS in high school, and read it cover to cover in about 2 days, doing all the exercises in Turbo Pascal. Next weekend I picked up a book on C/C++, took a few months to get through since it was more than a syntax difference between the two, but read that cover to cover as well. That pretty much solidified my basic understanding of modular and procedural development, and introduced me to OO. A few times in between I would code in the examples from Debug that were in PC Magazine, and that sparked an interest in Assembly that I would later go back to. Spent the next few years reading books on algorithms, program logic and design, and OO design patterns. I was pretty far ahead of the curve by the time I stepped foot into college level CS course. I spent those years honing in C++ and Java, and learned assembly and circuit design as part of engineering courses. The rest was being in the right place at the right time.
Truth be told, it took a lot of interest. I had to really want to do it. It is a passion that I pursue, and it takes more than just learning "syntax" that are taught in schools. Not everybody can do it, just like not everyone can solve complex math programs, paint a masterpiece, or break through a defensive line and run a 50 yard touchdown. But introducing it to populations of kids that wouldn't normally have access to it through schools is a good idea. But that kicks up a whole other discussion about education that is outside the scope of one post.
It was 1979, and I was living on a sailboat in Key West, bringing contraband from the gulf stream off large cargo ships into smaller
lots into USA. I had cash to burn, living a Jimmy Buffet fantasy. I saw a magazine called Byte, advertising
these Apple II machines that you could program with a cassette deck. I understood lots of machines/technologies in our civilization, from
cooling with ammonia and propane, to celestial navigation. Here was a tech that I truly didn't understand. I went up to Miami,
and bought a plastic box for $1800, that could play pong and be programmed. It was the most difficult thing that I ever learned,
and then realized that I could make money at it without getting ripped off (at gunpoint), or (generally speaking) ending up in prison,
writing my memoirs about the consolations of sodomy. Best $1800 I ever spent, and a subscription to Byte was all it took to
get me programming.
the whole point of Logo is that you give commands to move the turtle around on the screen. Sounds like bluffing!
I had a Z80 computer and didn't have many games. Got my hands into a bunch of magazines with code in them, and painstakingly copied the code of each game (I didn't have a way to save them, so any program I entered would last only until I switch off the computer).
After a couple of days of entering code, I began understanding what the code did, and started programming, initially by making modifications to the code to make the programs more interesting. I think it was an excellent way to learn. I've been self-taught ever since, and I've been working as a software developer 25 years, and I can code in at least 10 languages.
My dad gave me a ZX Spectrum with a Z80A back in my 15 year-old anniversary, summer time, learned BASIC till December with books and in December started programming the darn thing in assembly. From there, learning gw-basic, pascal and C in technical school was a breeze, and learnt x86 assembly on my own. Later on did as my thesis the first ZX Spectrum emulator for Windows.
Is coding today really like learning to read or write? I don't think so. I would say learning to draw by hand is even more important than coding. Regardless of your field, knowing how to draw simple figures and diagrams will help convey your idea. But yet, we don't say that everyone should learn to draw.
Computer programming should be like any other field, those who are interested, get in. True, computers are getting more and more pervasive, but so too are cars, motor cycles, and bicycles. yet, not everyone knows or need to know how to drive a car or ride a bike.
It might help a person if they knew how to drive or ride, but that only depends of if they live some place where they have access to a car or bike and it matters that they know to drive.
As a mostly self thought programming, I have been posting [YouTube videos](https://www.youtube.com/channel/UCnVxTe31G4nTbhp9dQEO4iQ) which break down programming concepts and addresses one concept at time. I think it is a really good introduction to computer programming for *anyone* who wants to learn or is curious. But even as simple and clears as my videos are, still there will be people who won't get it, because programming is not for them. And they shouldn't be torture to learn it.
BASIC on mark sense cards, West Vancouver BC. After school program.
I wanted a computer so bad, but it was expensive at the time and my parents couldn't afford one. they did inlist me in a programming class, i joined as a the only kid amongst adults. this was during the boom of the 8bit home computers, so they teached basic. i started writing programs with pencil & paper because i still didn't have a computer. after a year or so, with some funding from other family members a computer was bough (a typical 8 bit, Amstrad CPC464, awesome) and i finally could type in all those programs i made! other computers followed, programming languanges changed, i evolved along.
On a long enough timeline, the survival rate for everyone drops to zero.
Self taught C++ writing mods for Starseige: Tribes in 1999 at age 12
I first wrote some BASIC programs on a Commodore 64. After that, some DOS batch files on an early PC. .NET and C#.
Went into the AF and through tech school, learned Ada and some assembler. Still didn't understand much about OOP (I was such a noob when I came in - the others in my class already had professional experience, if not degrees as well).
Maintained a mainframe, wrote a bunch of what were basically batch files.
Finally transferred to a programming job...to learn COBOL (So painful!).
Switched offices, learned Java (they actually sent me to a civilian class for this - that helped drastically). Finally understood OOP and a good bit about database design.
Later, I switched to
Much later, I've done a good bit with Javascript and Python as well. Looking back, I would say that you want to start with procedural languages, something really basic. Skip COBOL and anything to do with mainframes unless you really need the money (yes, they're still around). Once you're comfortable, go on to learn about object oriented programming languages. Learn about networks and databases as you go, certifications can't hurt.
FORTRAN course in high school in 1963 (high school did not offer it, dedicated teacher took two of us to an early morning vocational school), and then CORC in 1964, required course for 1st year engineering students.
I taught myself how to code thanks to the manual that came with the Timex Sinclair 1000. In the back of the manual were sample code projects, I went through those and the logic of BASIC programming just clicked in my 5-6 year old head. My Elementary school also had 2 books in the library with sample code projects that I checked out and went through. By the time we got a 286 in the house I was creating my own projects, mostly text-based RPG's since I was big into D&D at the time. By middle school I got into graphic design, and by High School 3D modeling (POV-Ray, Lightwave, and 3D Studio). Entirely self taught, by the time I got to college I knew more than any class could teach. There was a new class offered my 2nd year for this new-fangled thing called "Java" but I figured it was just a fad. :/
-==- Buy a Mac and leave me alone!
So I got into computers early on - having been a technological terror growing up - taking apart everything. My friends dad had gotten a SWTPC 6800 with an SS50 bus and I used that to get my early knowledge on - we were typing in BASIC code on the thing, either adapting games found in issues of Creative Computing magazine, or modifying them to have some fun while figuring out how to do things we wanted. That was early on - later on, when the TRS-80 became more mainstream, the games in the magazine got more platform specific - and Creative Computing printed all the source code for the game in the magazine. Back then there were no "downloads" or "OCR" that could replace simply typing in all the content and trying it. That's what we did. And people weren't perfect - so after typing in 10k lines of code to make a dancing robot, getting random errors at various lines in the code was inevitable - it was that "post entry" debugging where the code education comes in - now you're checking your own work for syntax and other little bits - but to really know what's going on takes time - and then it clicks. The incentive was when the new space shooter was Commodore specific and you had an Apple ][ - this forced you to figure out what they did, convert to Apple, and try your own version. The "programming" nerd switch, for me, took some years before it clicked - around the middle/end of 10th grade before I became dangerously knowledgeable in this stuff - enough to write a game that summer and get hired by a software firm during my Junior year in high school. That was some 6 years of hands on, with 3 of it focused on learning to code in my off-time.
I learned coding from an IBM 7094 Operations Manual and then from an IBM Fortran II manual in the 60s
I learned to program on a TI-82 graphing calculator using the Z80 assembly language.
I too, RTFM.
Tracy Johnson
Old fashioned text games hosted below:
http://empire.openmpe.com/
BT
1978, 8th grade, I had already been playing around with TTL chips (thanks to The TTL Cookbook). Cool math teacher was going to a weekly Saturday continuing education thing in the big city about programming computers in BASIC, brought me along. I actually figured out the IF statement before it was covered. Sad part was that he had to miss 3 of the 10 weeks and couldn't get the credit.
The next year we had to move, but I got a 16K TRS-80 for my b-day (partly because it was delivered to the wrong store, thus bypassing the 6-month backlog!) I must have spent an hour trying to figure out how to answer the "MEMORY SIZE?" question. (stupid answer, just press enter)
Within a year or two I had acquired a Z-80 programming reference card and started disassembling the ROM. So I learned a lot of 8080 programming style from Bill Gates. (not much Z-80 optimized code in there) Around 1983 or so, I even got a 4K CoCo just so I could hack 6809 code. Factoid: the inner loop of FORTH is just two 6809 instructions. I later had a paying job '97-'00 working with 6809 code.
#naabhaprzrag, #sverubfr-000, #agi-fcbafberq, negvpyr[pynff*=' negvpyr-ary-'] { qvfcynl: abar !vzcbegnag; }
no computer (easily) to buy back then, a (here in the USA you call it high school) teacher asked a bunch of us in math and physics class who was interested in learning how to program. The initial group of about 25 whittled down quickly to 6 or 7, as we did for weeks all programming in Pascal on paper before getting access during summer break to a PDP-8 at a local university. After the summer break, I then was able to buy a self-assemble kit for a KIM-1 through a contact directly from the USA, where I first had to use 6502 assembler, the "upgrading" to Tiny-BASIC. Then got more and more in contact with local computer vendors/importers and got access to the first CBM PETs, TRS-80s and some early CP/M-80 boxes. The journey/learning continues to his day... ;-)
Fortran and then APL on an IBM 360 targeted at modeling and numerical methods classes at university in the 70s. It's no wonder that I still can't code.
Because I somehow knew I would get all involved in it, my first impulse was to avoid learning how to code and just enjoy using that 'new' devise called a computer. I was fascinated at the things it could do so my friend set me up with a 386-25, Windows 3.1 machine. He really did me a favor, set up several what were then 'trick' BAT files on startup so I went right into Windows. As I said, I was fascinated. During the first week of playing with my new machine, I got hold of a copy of DOS disks and through experimentation with my toy, learned many things about how computers and software work. I thought it was a later version of DOS and I thought I'd be real cool and upgrade the system by myself. Whether it was a later version or not, I ended up ruining the entire installation - could never boot again, much less get back into Windows again. Long story short, I more-or-less forced myself to learn how the thing ticked - followed the programming chain from BASIC to QBASIC to C to C++ before abandoning compiled languages for PHP and the proverbial LAMP stack. The whole trail led me to actually enjoyment of coding by developing interactive websites from the ground up and from the inside out. Long live coding!
A computer language is like normal language School will teach you proper grammar, and vocabulary but only the local can teach you the real language.
School need to teach you How to THINK;
What make an Algorithm FASTER, how to use memory; How to read other peoples code.
These are academic goal.
Writing a program is different every time; Every one use past experience to solve a present problem. The more experience the better the solution. The more exposure to difficult problem, and grading the simplicity and efficiency of the solution would benefit student more than any language they will ever learn.
My first "coding" experience was writing batch files. I remember writing a choose-your-own-adventure tale as a kid and thinking it was so much fun. There was no programming in school, so my next experience was with a Java programming class my freshman year of highschool. This was before javascript, back when you used java proper to make applets for the web.
I then had some computational chemistry projects in college that led to me teaching myself C from "The C Programming Language" (a great resource).
For the most part, that one year (two semesters) learning Java from the ground up has allowed me to pick up any language if I put my mind to it.
I worked summers walkin' beans, detasslin' corn, and buckin' hay bales and eventually bought a Laser IBM compatible which had a REAL GW-Basic manual! Read that cover to cover and learned things I'd been using for years but didn't really understand. . .
I wrote a lot of programs for my own use on that computer (and follow on ones I bought) for school work, organizing stuff, stupid games, etc.
Got a job as a programmer when I started college in C++, which I'd never heard of (I remember looking in the book store in the "S's" for "See Plus Plus" because I had no idea there was a language called "C"). I totally faked my way through the interview. I did know "programming," just not language specifics, so that helped. The interview was luckily on a Friday and I bought a book on C++ on the way home from the interview, read that book cover-to-cover over the weekend and started the job Monday.
I had a lot of programming classes in college (Computer Engineering major at University of Illinois). That helped a lot.
Told my first day on the job (officer in the Air Force) that I'd have to be programming in Java once my security clearance came through, so I spent the time learning Java from a book (or maybe the internet existed enough at that point that I used that. I don't remember).
I'm not proud of it (probably still leads me to be more "hacky" than properly trained Computer Scientists), but I think I'm about as "self taught" as is possible to be. . .
I was 11 and sat in the school cafeteria when a friend told me that it was possible to hack into computers and remote-control them from afar.
I was hooked.
I learned QBASIC by myself by trying out the various words that the language consisted of. Look a new word up in the manual, try inserting it at random places in my code until it worked.
The internet came to my home, and I quickly found a web site that had tutorials on writing computer viruses in x86 assembler. I went to the book store and bought a book about it, despite that the bookstore owner warned me that assembly language was dead. A few days afterwards we went to my grand-grand-mother in the very far north Sweden. It was summer, so the sun never set. 24 hours daylight and nothing to do. Except read the book.
By the time I got home I knew assembler for x86 by heart, despite never having written a single line of code. I wrote a virus for DOS, and then my interest in malware disappeared. I was 14 and switched to writing an operating system instead. Nowadays it still works, is 8kB large and can only boot from PXE and floppies.
Many of the more "optional and advanced" stuff we learned at the university, I had self-taught before I even began high school.
I took an introductory computer class as an undergrad in 1978. The language was BASIC on a teletype. I was a math major at the time, but I liked programming and the field was booming back then (still is) so I switched my major to computer science. After ten years in the field, I still liked it so I went back to school and got my Master's in computer science.
High School: Acoustic modem, teletype (with paper tape reader/puncher), HP2000F shared between several high-schools, running BASIC.
College: IBM 360 (later a 370) mainframe, punchcards and line printer (never any displays/monitors), FORTRAN, COBOL, IBM BALR (assembler), SIMSCRIPT, PASCAL. BS degree in CS.
40+ years professional software development, mostly for US DoD.
I taught myself rudimentary BASIC on my dad's suitcase sized luggable in 1982 (probably a Kaypro or some HP portable testing device that supported BASIC), so I could create random character scores for D&D. Took BASIC a year later in my junior year of HS, then FORTRAN my senior year, and again as a freshman in college. Took assembler my junior year and then a 101-level evening course in C right after I graduated. Everything after that was either self taught or on the job training to learn various IDEs (C++, Java, VB, C#, and a few others), scripting languages (Perl, PHP, Bash), and one-offs like HTML, XML, and SQL.
These days it's primarily just the occasional MS Office Macro, Excel spreadsheet programming, or web development using a CMS like Wordpress, Drupal, or Joomla.
Thinking about teaching myself some mobile game development over the summer, but I need to find a good cross platform (IOS & Android) development tool to invest the time in.
I think the early instructional course work was valuable for teaching the basic understanding of stepwise problem solving and some of the deeper concepts of computer and software architecture. Without it, the later self-directed stuff would have come a lot harder.
oh, the good old TI 99/4A... lot of afternoons in front of the black and white TV screen, coding games at the age of 6, saving them on the old cassette tapes. Learned to code (and also, learned english!) with the big books with programs that came with the TI. After a lot of coding, a good game of Parsec or Jawbreaker made my day. After that, the first Amstrad 8086 with Basic.... and of couse, Bushido, Maniac Mansion, Monkey Island and the mighty Leisure Suit Larry! how can I resist to code my own games?? I learned to code by myself, pushed by the needs of having my own personal game characters on the TV screen... And now, more than 30 years later, I still have joy coding projects in my spare time, of course, doing IT business of my own. But it all started with the TI 99/4A that I still have on my home!
-- Francisco Rivas C.
learned at a trade school (ITT-type thing) in SLC in the 90s pursuing a simple degree in computer programming (2-year degree). then threw it away being duped by the whole dot com craze. after the bubble burst, there was no demand for Perl monkeys. =(
alive to the universe, dead to the world
Started at about 7 disassembling dead TVs, radios, clocks, calculators (electromechanical), and typewriters. By 12 I'd learned how to wire up 74xxx TTL devices and build some basic circuits. About that time a neighbor/mentor friend of mine bought an Apple II+ to experiment with an early CNC package. He didn't get far with it, but he would let me dink around on the computer. At first I was just into thew gaming aspects, BBSs lead to exposure to the thriving software cracking and swapping communities. A few lucky finds got me interested in 'serious' programming APPLESOFT BASIC wasn't cutting it, and it wasn't long before I had a copy of LISA (Lazer's Interactive Symbolic Assembler) an early 6502 macro assembler IDE. It had a decent disassembler. After that I was off to the races, learning how to write 6502 assembly code from articles, disassembling chunks of commercial games and so on. By 15 I got my first exposure to a mandatory class in computer programming. The class was going to be teaching Business BASIC... on the department mini. When I finished the first month's homework while sitting in class by the end of the first week, the instructor had the good sense to pull me and a few other more advanced students into a separate work group that swapped lessons in programming assembly language for our respective platforms of choice.
By my junior year a few friends and I would get together for hacking sessions. This led to a simply dizzying explosion of projects, reverse engineering, hardware experiments, software development, and also dumpster diving the lucrative back alleys of the business parks in the south Bay Area.
By the end of my senior year I'd picked up a contract at Apple developing software to test Software... At first on the Apple ][ line and firmware testing on the Apple //gs and later Macintosh, and culminating with a test engineering spot on the HyperCard development team.
Along the way I'd picked up 68k assembly, C, etc, but it took a long time before I had any decent skill in software design. Eventually I ended up working for Microsoft in the early to mid 90's... That experience killed my enthusiasm for the software industry. I went back to my roots... bare metal... and electronics.
I picked up a little BASIC programming on the Apple ][ at school in 1985. Then in '87 we got our Tandy 1000 HX which came with BasicA. Just had the manual that came with the PC, which had rudimentary descriptions of the language. From that, I made a few text adventures, eventually learnt how to draw on the screen (WITHOUT crayons), and how to play single-note melodies. Later, I did QBasic, and got really excited when I found a compiler (trans-piler) that converted qbasic into executables. Around 1989, I got a book on the 'C' programming language. Problem was, our Tandy did not have a hard drive (just a solid state eprom with built-in DOS 2.11). All the C and C++ compilers required a hard drive, but I really wanted to learn C because all my favourite games were programmed in that. I went through every excercise in that book with just a steno pad and pencil. A couple years later, we got a 386 with a 20MB hard drive and I could finally compile, I already knew the language and dove right in to making my own home-brew version of Starflight. I didn't get too far with it, but got the basic UI and a ship that could fly around a bit. Moral of the story: if kids want to code, they will learn how to code whether it's required or not. If they don't want to, they will fail out of spite.
Typing BASIC commands from books into a TRS-80 MC-10, connected to a TV, saved to cassette tapes. Then later on a C-64, then onto x86 machines, some Sperry-Univac stuff, and eventually computer science.
There are over a hundred podcast stories of how people got into computing here:
https://wildermuth.com/hwpod
I've listened to about a dozen of them, some are very interesting.
Beware of the Redittor who loans you a Sharpie.
I taught myself QBasic when I was 12. Not too sure why I chose QBasic, but I think it was a very good decision. I have never been the type of person to keep at something if it was too demanding (I get bored and give up), so QBasic was great because I could easily and quickly achieve something, and whenever I pushed myself the next thing was easy to learn as well. There was no structural code, no libraries or headers, no complex IDE, or any of the other issues that come with learning a lot of the popular modern programming languages. It was possible to just type a single line of code - something like "print Hello, World!" - hit F5, and technically you had a running program. And this was before I knew about the Internet as a resource for learning; I actually taught myself by reading the help menu, which listed all the commands in QBasic, with had clear explanations and examples for each. That was how easy the language was to use. I figured out how to print to the screen, get user input, read from and write to files, and draw graphics with no help beyond the help menu. (QBasic had zero support for image files, so when I wanted to make a tile-based game, I had actually figured out by myself the logic and math required to store pixel colour values in a file, load them and display them, which I was quite proud of.) The only issue with QBasic is that it's difficult to make meaningful programs with it, as the available commands are quite limited and the programs are extremely slow. But it did teach me the fundamentals of programming and cemented the mindset of a programmer within in. It was effectively like training wheels for programming; you weren't ever going to be a pro if stuck with it, but it made the initial learning a lot less painful.
I didn't know better. Hey, it was BASIC on the VIC and BASIC in the book, what's the diff?
So, I learned to work around software that didn't do what it was "supposed" to do right off the bat...
I was self-taught because in 1963, when I got out of school, there was no one teaching. They taught me FORTRAN syntax and how to submit a job on punch cards and threw me in the deep end. With considerable wasted time, at my employer's expense, I eventually caught on to good practice techniques that are elementary now. I am against self-teaching. With coding (as with probably theory and statistical inference) it is all too easy to think you know more than you do. Just because your program runs, and gives the right answer on a few test cases, does not mean your code is secure, the inevitable bugs will be easy to trace, or that anyone (including you) will be able to figure out what you did 6 months later. If many coders are self-taught, that may partly explain the sad state of software.
Self-taught + learned on the job + books. Getting familiarity with various machine architectures, multiple languages, compiler quirks, and having to work within the tight performance constraints of earlier OS's & hardware definitely helped. There is a lot to be said for understanding how to do it yourself (even if you end up using some pre-packaged solution). Anything handed to you on a silver spoon loses its value when the silver rubs off.
In 1966, the sponsor of my high school's slide rule club arranged a once-a-week night class at the local college - FORTRAN II on an IBM 7094.
I'm not saying you're wrong, but education is FILLED with statements about how this or that 'helps' or 'works', or whatever without ANY objective evidence. I'd be the last person to resist someone studying the possible benefits of teaching simple algorithms, but if we're spending billions of $ on it when nobody has established its effectiveness, that isn't sensible.
"Malo periculosam, libertatem quam quietam servitutem." -- Jefferson
There were no computer science college degrees available in 1962.
I wrote my first program, in 1962, using the manual input keys on a CDC 1604 console. I used machine language for 2 years, then switched to assembly; much easier since I no longer had to figure out how far away a relative go to address was. I wrote assembly for the next 9 years. I did learn Fortran 60 for a class on a Fortran compiler, and Cobol because somebodies program was breaking the CDC 3600. I finally learned C in 1980. Got involved with network design for a lot of years, trying to make networks faster. It was 1997 before I first wrote code in Java, later in PHP. I didn't write code for the Internet until 1997, prior to that I wrote code that other people used to write code. In all but one (PHP) case, I was self taught.
For 2 weeks I had a Tandy 1000HX available and a GW-BASIC book. So, self taught. I read, tested, imagined, and created. I know a fair amount about more programming languages than I have appendages on my normal human hands. I generally prefer functional languages with proper opening and closing block structures, such as {} or if, endif. I can't stand languages that rely on spacial alignment to determine block structures. My editor of choice is vim. I am quite adept at Object Oriented languages. I prefer interpreted over compiling. The compiling process is such a hassle since I tend to lean towards an agile style of coding. Sure, I try hard to get it right the first time, but that rarely happens. It stinks to wait through an insane compile ritual just to determine the whole thing is crap. I do like the results of a compiled program, but it would be great to have runtime interpreters for most languages. C and your minions, I'm looking at you.
-- Unkmar
I'm 68 yo. Self taught. Cut my teeth on IBM 360/30 (32K ram) Taught myself assembly language then COBOL. Read and re-read IBM manuals that came with the machine. My favourite was "The Principles of Operation". Understood the internals of the compilers and the machine. Those were fun days! If I had a penny for every punch card I created I would be wealthy. Learned Job Control Language (JCL) the control language that told the machine what to do with the data following it and passed parameters to application programs as well as to the OS - (DOS at that time). We were one of the first companies to use the "DUCS - display unit control system" This allowed us to display characters on CRT's (cathode ray tube monitors with built-in keyboard) We could create blinking characters, read data iinput from the screen, display data from within the program or from files. It was magic back then!
Because I understood how the machine worked, how the OS worked and how the compilers worked I had clearer expectations of what the applications could do under the HW/OS at the time. This comprehension made me a better programmer/systems analyst and has stuck with me all these years. I think future coders need to understand the concepts of operating systems, compilers and physical IO systems to be good at creating applications regardless of what the app is designed to do.
Anyway,That's my two bits worth.
I learned in the late 90s, self taught vb5 then vb6 the php, html vbscript,javascrip mysql then c# and java. (planet source code had tons of code to use for learning)
i learned mainly because i kept getting booted in a chat program, learned how to use winsock and connect to servers and created basic chat firewalls. i only program now to create programs to do tasks i hate doing over and over or using unity 3d to make games for my kids.
i am a concrete finisher by trade and never got past the 10th grade.
do i consider myself elite or a good program? Not at all.
i taught my 10 yr old how to make a timer/stop watch using msvs vb.net and he loved it.
But i see all these visual programming languages now...its getting so simple to make a program do basic tasks...i remember writing my first pause/sleep function with a doevents and a integer lol
ya i was lame...
mostly self learned and by looking other examples. testing testing and playing with code. by competing with others friends programmers
Dad and I soldered together a Challenger 2P in the early 1970's and then wrote a BASIC booter for it.
Then we got an old video game monitor for a display (from a tank game where the demo was burnt into the screen), and then got parts from Radio Shack and hand-made a modem that would work with a cassette recorder so we could save source code (and school papers) to a bakup format.
Next we wrote a 'port' of Galaga for the 2P.
After all that, its been 40 years of reading books about programming languages and trying to work on open-source projects to increase skills.
I'm not really sure what they mean when they say "learn to code."
Do you mean how variables, assignments, operators, and control statements work? This is extremely easy and should be simple to teach in a 5-credit community college class, alternatively one can learn on the internet with something like this:
http://codingbat.com/java
Do you mean how to build real, useful systems, be they web applications, networked computer games, or robots controlled by wifi? The best way is to find something you want to build and learn what you need to build it.
What I feel is overlooked in this conversation is that we focus on what I would call "basic programming," loops, assignments, operators, etc., but this isn't really very hard, it's the things between being at that point and building useful systems where most of the work is involved, and it's not magic, it's just a matter of being curious and having access to resources to indulge curiosity including online resources, books, and maybe even more experienced people to ask questions of (which can be done on online forums).
"How did you learn to code?" I'm still learning. New techniques, algorithms and languages I haven't tried... there's more to know than I could possibly learn in a lifetime. I will never finish and that's exciting!
A. B. C. = "always be coding."
ALWAYS be coding.
Always be coding!