How did you learn to program?


I grew up in the internet era, so learning to code was real easy for me :+1:


trying to think what was it about programming that attracted me initially, i think it was 2 things: logic and magic.

logic: code does exactly what you tell it to do. my mind hates inefficiency. communicating with humans for this reason can be frustrating when i try to pass or receive information in the most efficient way possible. talking with machines is easier. in theory, anyway, until you run into some really weird edge case, and discover compiler optimization, and the machine trying to do what it thinks you want to do but it’s not! :slight_smile:

magic: there is of course the famous quote by arthur clarke “any sufficiently advanced technology is indistinguishable from magic”. programs are like spells: you say some magic words and they make something happen, something that would take you days and weeks to do manually. or something that you couldn’t do manually at all. it’s an amazing feeling when you write a couple lines of code and it makes something blink or beep. that’s why i love teletype, it allows you to experience it in the most straight forward way possible. i remember starting on orca, the first thing i did was make all LEDs on arc blink. just sat there and marveled at it for a while :slight_smile:

it’s interesting looking back to see how your approach to programming changes, balances between logic and magic. early on i’d write some really dense C programs where you try to fit as much into one line as possible - makes you feel good, until you try to read it half a year later. so, at some point you realize that readability is way cooler than being able to do cool tricks.

and then if it becomes a profession eventually you learn to create more and more complex systems, and you appreciate the thought that goes into designing something like that. i like a lot the thinking and the processes around that, design patterns (although i still think that most design patterns could be distilled to “use common sense, don’t do stupid things”), agile, continuous integration/deployment. it appeals to my logical part of brain. but what i have a problem with is how it’s all tangled with capitalism. “business value” - i like the efficiency and common sense behind it (say, security is not fixing all your vulnerabilities, it’s figuring out which ones to fix). i hate the soulless machinery of it and how it becomes part of your language. i’m still figuring out how to separate the two.

maybe that’s why i don’t feel bad about doing firmware coding after a full day of work. fuck business value. i can make those LEDs blink and remember what i loved about it in the first place.


i have a problem with is how it’s all tangled with capitalism

I’ve only had this problem once, where at a start up there didn’t seem to be any reason for doing what we were doing other than “it might make lots of money” (spoiler alert; it didn’t)

Other places, yeah, we’ve made money, but the money was a (necessary) byproduct of trying to create something useful for other people. But I know I’ve been very lucky in that regard


inspired to share
by the cool spirit of this place, thank you :slight_smile:

back in the day
in venice, california
were cats that ordered 600 baud modems with stolen credit card numbers
delivered to bogus addresses
that could be swooped up
when the box was left unattended at the spot

that wasn’t my scene
but I maybe knew some of those cats, skateboarding
I thought I heard that one might have ended up working for the cia

in college
me and laura
had to pre-enroll for all classes exclusively in unix
that seemed absurd
computer languages came and went quickly (I thought)
I was wrong, unix was the language of the nascent internet
(everything is a file)

I learned some html
making websites for local mexican, oaxacan,
and salvadoran businesses for barter
we made some friends, and got some cool rugs and cups off of it
I thought of it like 'flying a kite
and mostly I just liked taking the photographs
’I can help you get it up there, I just don’t want to go to any meetings about it

making a beat used to be called
’drum programming
like on an mpc
I’ve done some of that…


i’ve started learning to write code because of the aleph. and a post from @glia.

so 18 months ago, i’ve started a free mooc to learn the basic of C during my spare time. i had no prior experience with writing code. i liked it.

then i took other free mooc to learn a little bit more of C, and to learn about arduino.
i thought it would be ok to write what i wanted. of course not, i was naive !
so i went on, i’ve discovered the terminal, git and github, homebrew, gcc, toolchains. a universe ! and i liked it.

although i didn’t write the program i wanted to yet, i keep going, trying and learning at my own pace. (it’s how i like it.)

and i feel very lucky and grateful to have access to free and shared knowledges and experiences.


it’s amazing how quickly you’ve progressed!

i’m curious, which post made you dive into code? perhaps you dont remember which one


wait! I forgot a really core part of how I learned to program:


Our computer room at school was Macintosh, and when I was about 9, I started tinkering in HyperCard because it was there, and because other kids were too. People would share little tips and tricks - I remember having to ask an older boy how to unlock scripting (set the userlevel to 5).

It was the first tool I built end-to-end things of my own in, not just modifications of BASIC listings I loosely understood. I drew out things, scripted them, linked them. If I could draw it, I could make it do a thing.

Hyperscript wasn’t a very good language, but it was real code that did stuff, and it was probably the most empowering environment I’d use for a very long time. It was such a good tool; the Bill Atkinson love is real.


1955 was the year my grandfather got an MSEE. His thesis had something to do with COBOL. “Computer Science” wasn’t a field of study yet. My mom was born a few months later. She was the third of four daughters. Mom also had three brothers.

1973 was the year grandpa used a foreign key for the first time. He was running the accounting project for the F16. It might have been the first foreign key in production outside of academia.

1975 was the year I was born.

In 1980 at Christmas my grandpa asked me what I wanted to do when I grew up. I said I wanted to be a fireman. He replied that I should study computers. He spoke in a deep voice that resonated through his considerable jowls. He had gravitas as the patriarch of his oversize Catholic family. As a five year old I took him very seriously and started saving my allowance.

In 1984 I used by allowance to buy a TRS-80 Color Computer 2 and started to teach myself BASIC.

BASIC progressed to Pascal during high school, but by that time I was starting to question the wisdom of the whole ordeal. Given the values my mother had raised me with, I was more likely to side with war protesters than defense contractors. I saw how the engineering trades had a way of railroading you into certain types of careers. By this time I was as interested, if not more so, in music, and drawing, and theater, as I was in programming. During my senior year in high school I had become the school expert on desktop publishing and laid out the school’s literary magazine and weekly newspaper in Pagemaker. I was the paper’s photographer. I figured I’d study journalism in college.

In 1993 I started college and I was utterly lost. Most of the j-school students wanted to go into broadcasting, and I just couldn’t hang with the big hair. I signed up for programming classes, but that wasn’t working too well either. Why were we studying FORTRAN in class, when after class I was able to explore the newly minted WWW in the SGI lab. The glories of Mosaic. I switched my major to psychedelics and dropped out soon thereafter.

Between 1994 and 1997 I bounced around various technical jobs (tech support for ISPs mostly) and other odd jobs (temp work, construction jobs) and began wandering my way westward from Missouri to California by way of Colorado.

In 1998 I met the woman I would marry, in an IRC channel related to I was traveling (homeless) and she invited me to visit her Boulder Creek house. We lived there for a couple years before buying another house in Boulder Creek that we lived in for another decade. We must have been just a few miles away from @shellfritsch at the time. Pity we never met, but then, San Lorenzo Valley folks had a way of keeping to themselves. In 1998 I was 23 with few prospects and less resume. My true love was 30 and working for Netscape and appeared to have the world as her oyster. She suggested I level up. Which ended up translating to a series of jobs writing HTML, for Cisco, Adobe, others. Also a rather strange job doing escalation tech support for an IBM tape backup system. A 1999 job for a company called Lutris in Santa Cruz gave me a chance to push the limits of the nascent world of CSS.

The 2001 tech crash was hard on a lot of folks, and we were no exception. We had just recently bought a house and also encountered a need for major structural engineering, so I said yes to every HTML contract I could find. After years of this I eventually grew tired of contracting and in 2005 I landed at Yahoo. What a stroke of luck, I was able to level up on JavaScript with the help of folks like Stephen Souders and Douglas Crockford. But something interesting happened in 2006: I had been making prototypes for use in the usability lab, and I started to observe the sessions. It hit me that I was so much more interested in understanding our users and their needs than I was in fixing one more god damn browser bug. I began my transition into UX.

I’ve been trying to improve the UX of software created by major corporations ever since. While we’re getting pretty good at fixing usability issues, we’re still pretty bad (as an industry) at having a coherent and repeatable process for UI engineering that doesn’t drive everyone involved a little bit crazy day after day. And increasingly I am concerned about the ethics of the industry. I feel I am a conscious contributor to surveillance capitalism. It doesn’t sit well with my conscience. But along the way the house turned into a farm in Watsonville. It feels good to be an active participant in the growth of organic food systems, and to be something of a pioneer in the ways and means of very small microfarming. But I’m eager to wrap up my financial ties to the software industry. Just a couple more years before my stock vests…

And maybe a few years after that I’ll be able to return to programming with an artist’s eye. It was what got me interested in the first place, and it was what sustained me through those early days of Pascal… But it turns out that my youthful intuition that computer science would send me into a certain narrow set of career choices was not entirely off base. I’m glad I kept my interests broad, and I’m looking forward to broadening them further still.

EDIT: I keep thinking about parts of the story I left out. Like the guys across the hall in the freshman dorm who were hacking Linux in 1993. It was tough going back then! I can thank those guys for my interest in IRC. I’d never have made it out to California and I’d never have met my wife without that influence. Other weird parallels: One of my favorite websites in the SGI lab that year was Justin Hall’s He was better than Yahoo at Yahoo’s game at the time. Through him I learned about the chat room spacebar. Turns out my future wife was a member way back when. We were already bumping into friends of friends a decade and a half before we finally met. The internet makes a big world a whole heck of a lot smaller.


my high school offered two semesters of “computer programming” which was PASCAL. I took it freshman year bc friends of mine did too.

I’m not A Programmer. yeah I’ve done plenty of MaxMSP and a little of this and that and the other but it’s not my deepest skillset.


Hi everyone. There seem to be a very motivated/clever/creative/thoughtful group of people here, so cool to read some background stories on programming.

My initial career was design where I inevitably started working on digital projects. I became interested in front end development, UX, server side development, and programming in general.

I know a lot of gurus talk about programming being a means to an end and the important thing is making stuff people will value. But I think I enjoy programming just for the sake of doing it sometimes.

I now work as a software developer and do a lot of coding in my free time too (mostly music related). I’m presently trying to get my mind around reactive programming for work and would like to learn lisp this year for fun.

To address the question ‘How did you learn to program’ directly. I did everything that people say you shouldn’t. I initially jumped around languages, resources, projects etc just trying lots of stuff out. But sticking at it, albeit inefficiently seemed to work out.


ZX81, learnt basic, then Z80 assembly (to hack bootloaders used to protect games, bad kid :wink: ) then, not long after, got a Jupiter ACE, so learnt FORTH…
then did some really big programs on the ZX Spectrum, so that was more programming than hacking.

apart from that… taught myself C/C++ at Uni (whilst they were teaching Pascal/Cobol for some stupid reason), then was a software engineer in the real world, where I really learnt to code properly.

as others have said, you never stop learning, I still improve my C/C++ skills even after 30 years, and learnt all sorts of weird languages for fun along the way.
(even created a few of my own for some unknown reason :wink: )

I found, the more languages you learn, the easier it is to learn more… and they start influencing the way you code in languages you know already.


thanks for the kind words : they make my day !
this is the post : Emergence and Generative Art

i thought : wouldn’t it be awesome if an op could use this ? … mhmh sure ! let’s do it ! :grinning:


I don’t really share the same interest in UX but damn if that doesn’t hit hard as I sit here ready to go in and fix browser bugs…


This thread is making me want to learn how to code. Seriously. I’ve worked in a software company for almost 2 decades, but never on the coding side.

As I am certainly not someone with tons of free time, what would people recommend to get started? Which language is most relevant and reasonably manageable as an entry point (only did 2 years of Pascal in school). Any specific classes/books that would be recommended?

Looking forward to any input.


my question would be: what do you want to do, ultimately? I found I never learned anything in the abstract; I needed something to apply it to, even if that’d be eventual, once I’d done some abstract stuff. (And: I’m usually pretty good at abstract learning. Just not with code). I also think it helps you get away from reproducing test cases and into thinking about how to model things and apply them.


Learned Basic as a teenager and also did some simple html pages. I didn’t become interested again until my mid-20’s, when I lived in the city near Carnegie Mellon University and University of Pittsburgh. Decided to go back to school to get my masters degree in Information Science, but before that took classes at Pitt, including an intermediate Java course. Java is the language I feel most comfortable with and I mainly work on web services now.

If you’re starting out, I would recommend learning about some of the concepts behind unix based systems before even delving into anything else. Then, learning about C and Object Oriented programming would be another good step. I find that, at least for me, understanding some history puts things into perspective and helps me to retain info.

If you want to try some coding exercises:


This is precisely why embedded programming is so much more interesting and non-overlapping to other forms of coding. It’s right at the interface between the physical and the ephemeral.


I don’t remember when I became fascinated with computers; it probably had to do with my very early fascination with space travel and NASA - I remember watching a Mercury launch at my grandparents’ house, and all of the Gemini launches in grade school.

I only know that by 3rd or 4th grade (1966) I managed to persuade my parents to buy me a Digi-Comp I - a plastic digital “computer” with 3 bits of memory - and I was utterly unable to convince any of the other students in my rural WV grade school that this was the greatest thing ever.

On and off through junior high, I pursued the idea of building a more sophisticated version myself, as of course no one would be selling a computer I could afford anytime soon – though in ninth grade the Altair 8080 came into existence, and I remember really, really wanting one! I tried reading the few programming books that our local library had - they were not particularly good, as they were high-level surveys and not meant to teach you how to program. I pestered my parents into a subscription to Scientific American for the Martin Gardner column, where I learned about folks like Donald Knuth, and things like the Game of Life – I ended up doing a science fair project about that, in which I hand-simulated all the possible results of two gliders crashing by hand on paper.

In high school, there was a computer programming course – YAY! But my advisors said it was a “vocational course” and refused to let me take it. (This was during the period that my parents had already planned for me to become a physician, and I still suspect collusion. Instead, I dissected cats and memorized muscles in a physiology course.)

Once I got to college, I got to actually play with an interactive programming environment. The first computer program I actually got to try was CPS, IBM’s answer to BASIC programming – a stripped-down version of PL/1, running over 110 baud modems to IBM Selectric typewriters; the program was a modified mad-lib that built sentences from randomly-selected phrases (this also led to my continuing love of semi-controlled random processes!). I was hooked. My first full-up program was a one-atom simulation of radioactive decay, following one uranium atom’s decay to lead for a side-project in a chemistry class. I had been working as what we’d now call an intern in the inorganic chem lab (a chem major was my compromise on pre-med), and when I compared my programming experience with the chemistry one, I decided that there were far fewer sodium fires, acid burns, and accidental poisonings with hydrogen sulfide in computer programming. And also that it was more fun.

After that, I fell in with the better CS students, learned about OS internals and assembler, transferred into CS, disappointed my parents, who were certain I’d picked a dead-end field (they did perk up when I got a job at NASA), and the rest is history.


I had no idea you were an ex-Yahoo! I started in January 2005, and worked on tools there till 2010. (Remember igor? That was my baby.)


I was in corporate marketing, so my role was not super technical, but it allowed me to interface with most of the different groups in the company. It was a great place to level up in frontend engineering, and a great place to make the crossover into interaction design.

But holy cow, three different photo products that competed with each other? A zillion acquisitions that seemed to lead nowhere? GMs/VPs that created absurdly toxic culture (often to the point of being illegal, yet HR brushed it under the rug) etc etc etc. It’s no wonder they weren’t able to sustain that 2005 high.