How did you learn to program?


#22

I’m enjoying this thread. Thanks for having started it, @Andrew_Sblendorio.


#23

In 1998-9 I realised I needed a website. Looking at what HTML could do at the time, I decided I wanted a Macromedia (remember them?) Flash based site. I spoke to various developers and designers and the the consensus was that the time and workload would cost me $200k. I didn’t have $200k for a website (who does?) so I set about learning ActionScript (Flash coding). I’d never done any coding before, but fairly quickly it just seemed to be just logic, which I’d always enjoyed. It took me about a year to build the site. By about 2006 I’d come to hate Flash based sites, so I scrapped it and replaced it with a CSS based site. I didn’t really code that. I used Dreamweaver, etc. A little bit by hand to finesse. I very much regret being talked into replacing that site with my current outsourced WordPress based site. It turned out to be way more generic than I’d hoped, but that’s what you get when you don’t DIY. The only ‘coding’ I do these days is Teletype. That’s my abbreviated story.


#24

My Dad had us into writing (copying) BASIC code from magazines into the Acorn Electron then BBC B. My sum retention of BASIC can be written in 2 lines that pretty much everyone knows…

10 Print "Steve* is cool"
20 goto 10

  • you may have used your own name!

#25

No problem! I’m enjoying it too!


#26

Thanks for asking.

Well everything I’ve done so far has been either music/sound (max, max for live, supercollider) or visuals (processing). I enjoy these things because I love having the ability to create exactly the tool I want and I love making it work as well as it possibly can. So, so far my endeavours into programming have been for pleasure, not business.

I do from time to time consider trying to learn enough to make some money with programming somehow. There are different things that keep me from really jumping in:

1/ I have strong issues with corporate work, which seems to be where a lot of the work is. Working for an entity with legal status but no real moral status? I guess I’ll leave it at that unless someone is really interested it getting into this.

2/ While I enjoy programming, and have used my computer for my music exclusively since about 2014, my philosophic outlook is slowly turning me off from computers in a pretty compelling way. I would say one of the most troubling things is today’s emphasis on individuality, which often seems to come at the expense of “real-life” community. Computers (through their programming) have played a large role in this. This is currently in my philosophically unresolved bin.

3/ It seems like employers are looking for degrees, which I don’t plan on getting both for the reason of debt and ethical reasons (in the united states, common core curriculum is an obvious flaunting of an institutions goal of taking your money, among other debatable issues). On the flip side, I wouldn’t be who I am without the education I’ve gotten. This is still in the unresolved bin.

4/ And fear.

A little of my story, I started playing the guitar around age 10, and that was my main instrument until I started to experiment with electronic music (using ableton live) in 2012/2013. Once I got into it, I believe that the association it made with my screen time playing video games when I was younger made the whole thing really click. Then a few years later I had heard about Max and started poking around, and didn’t get it at first. Once I had an idea for a max for live device though, I ran with it and really got into programming. I think that clicked with the part of me that always used to obsess over the skatepark builder in the Tony Hawk games, and the problem solving of Zelda, Banjo Kazooie, and Paper Mario. And ever since then I’ve focused more on process than on product, at the expense of making “music-music”.


#27

@Andrew_Sblendorio

TL;DR, I don’t know the best option but there are companies out there that are doing good things for the world.

The corporate vs independent thing is definitely a tough rope to walk.

When I started as a developer I worked with a guy that had built a nice little local business where he did contracting for just about anything people wanted: networking, pc support, building custom apps, web sites, etc. I envied him but he didn’t get to code as much as I would have wanted if I were him. And he had to do a lot of pc networking and general infrastructure stuff that I’m not interested in. He also had to keep his customers and balance finding new customers while having time to please everyone. And there would be dry periods when his customers didn’t need as much. And he had to pay employees and manage them and deal with the general issues of owning a business and had to protect his personal finances (eventually became an LLC).

the worst aspect was that he worked alone most of the time. I couldn’t stand that. I wanted to work with others.

Since moving into the corporate realm, I’ve been really rewarded by working with a lot of super knowledgeable people. I’ve learned tons from them and become a much better engineer because of it.

we tell folks we interview (they almost always ask) that the biggest skills that they’ll need are an ability to communicate and coordinate with others. I think most are surprised by that.

Coding is only part of my job. I’m team lead so much more of my time goes into coordination and planning, meetings, requirements gathering, design, architecture, long term planning, research, code review, etc. did I say meetings? There are so many meetings. We spend a lot of time working with customers to build a better product. Communication skills are indispensable. I’ve worked with plenty of people that had it, and many that didn’t. It doesn’t matter how skilled someone is with code if they don’t also have the ability to work effectively with others.

Some employers care a lot about a degree, but many are going to also be impressed by accomplishments and meeting someone that can talk with enthusiasm and background about coding and projects they’ve participated in. If you really want to look for work, maybe get involved in an open source project you’re interested in and see where that takes you.

One last edit: coding all day has definitely dampened my willingness and desire to sit in front of a laptop at night for personal projects.


#29

slowly, repeatedly, until it stuck, and now I don’t really know how I learned, and can barely suggest ways to learn to other people. Which means:

  • inevitable early tinkering in BASIC - specifically, GW-BASIC on a 286 - when I was 7 or 8.
  • brief stumblings with the Adventure Game Toolkit
  • tried to learn C for the first time when I was about 12. That didn’t work.
  • picked up truly minimal HTML - core tags, bascially - at about 16. Also did some Actually Useful Basic as part of some maths coursework.
  • At university, had a stupidly fast internet connection in my room. Fell into early blogging. Taught myself much more HTML, markup, beginnings of CSS. This was when I basically got into doing things online: templating languages and so forth.
  • At my first job - which I got partly through knowing markup and such - I asked for time to teach myself PHP, which we used for our systems. Spent 90 minutes a week with a book. Things began to actually stick… although something about the language drove me spare.
  • And then, in 2005, I started playing with Ruby - this was around Rails 0.13b - and it just fitted my head. For the first time, programming felt like it could be expressive.

But from there it’s a blur; I slowly started tinkering and writing more code, got a job as a front-end-dev, learned a lot about browsers, did more Ruby and then became a kind of full-stack dev. But I have no formal CS training - my degree is in literature - and whilst that’s made certain kinds of code always challenging, I kinda like the way it makes sense in my head. My natural home is futzing with string processing or writing useful CLI tools to do things. C still does my nut in, though I finally understand pointers.

My problem is now it feels like a muscle - not an innate language, but not a thing I can easily explain. I have no idea how to teach other people where to begin, other than ‘have a problem you want to solve’. But I like being able to creatively apply technology to solve useful problems, and I appear to have learned some things about architecture and production and writing code for other humans, and that’s the stuff I like the most.


#30

1/ I have strong issues with corporate work, which seems to be where a lot of the work is. Working for an entity with legal status but no real moral status? I guess I’ll leave it at that unless someone is really interested it getting into this.

I’ve been lucky to have worked at all levels, from independent contracting, small 5 people start ups through to larger independent companies and up to the hundreds of thousands of employees mega-corps. And really they all have their advantages and drawbacks.

When an independent contractor, you’re constantly living in fear that your current client won’t have any more work for you once your contract ends and your niche has grown too niche and you’ve lost track of the current technologies while you’ve been busy, but you’re your own boss, can do what you like…

Small startups, you fear that your idea won’t fly and you’ll crash and burn, but hey it’s fun start up life and everyone thinks you’re the cool startup in town.

Middle sized companies, well they’re ok and you’ve got a moderately successful product but there’s the risk of a buy out, managerial whims, getting into a rut.

And big corps, it’s easy to hide and do your own thing, the benefits are very good, but projects you’ve been working on for years may suddenly get cut, and it’s hard to know if what you’re doing actually makes any difference. And yeah, corporations have some less desirable sides, but corporate culture can change and some of them do try to do more good than bad.

It seems like employers are looking for degrees

Yes and no, a good GitHub page and actual worthwhile experience will trump a degree most days. A friend of mine has just become project lead at his company, and he has no qualifications having just decided to change career a few years back, but he’d worked on a few projects, got to know some people at developer meet ups, gave a few talks on what he knew and worked his way up through some good companies.

FWIW, the amount that I remember from my CS degree can be written on a very small piece of paper, and is mostly from the Music and Pop Culture of the 20th Century class I took to make up credits.


#31

coding all day has definitely dampened my willingness and desire to sit in front of a laptop at night for personal projects.

Strangely, I don’t mind it still, although looking after a baby and trying to make music has certainly reduced the amount of time I have to do it and the amount of projects I’ve started and not had time to finish continues to pile up.


#32

great thread!

I was rather late to the party and basically began programming when I started my CS degree in my mid twenties, after being very bored at my corporate job in finance.

mind you, I still consider myself a rookie and operate on a rather high level of code (web/mobile).

I’m lucky enough to live in a country where you don’t have to take a loan to make a solid career. but nevertheless, I’m not sure I would recommend going to college for CS, it’s not really necessary. so many resources out there. be active, get feedback. it also doesn’t hurt to take some steps back from framework x and implement fundamentals like data structures, design patterns, well known algorithms, know their complexities… in that sense the career was very helpful, but you can get that by reading books and… implementing.

and so many jobs out there… you can easily get a job by just showing your skills (github was mentioned before), more than anywhere in CS…

It’s no coincidence I began to wonder about programming when repurposing/hacking a midi controller and then later on getting a monome. I remember things just making so much sense right from the beginning when attending lectures about binary system etc.


#33

Yeah, at least in my field (games), I don’t care at all about where/what someone studied but I focus on the person’s experience : what they worked on and where, what kind of tech are they familiar with, etc. Education/university/etc. is a factor when you have zero to just a few years of experience but its importance very quickly fades once the person has been working for some time.

And depending on your field this might be relevant or not but showing that you can work not just by yourself but within a team (and not only a team of other programmers) is extremely important too. That can actually apply to things like Teletype development done by a number of people here, I think. There’s a clear distinction between working on some project just by yourself and doing something with other people…


#34

These stories are great! Thanks for sharing, everyone.

My story is similar to some others here. My dad is a photographer, and worked for a long time in photographic technology. When I was about 7 in the mid-80’s he brought home some computers from work - A C64, an IBM XT (8086), and a few specialized pieces of equipment. I started dabbling and became really interested in writing BASIC programs and fell in love with Logo.

Fast forward to the late 80’s/early 90’s and I was writing some basic graphics and audio programs. I got really into the demo scene, tracking, and games. I joined a demo crew, mainly focusing on the sound part of it. Around the same time I picked up guitar as my first real instrument, building on my love of music that I’ve had since childhood (and got from my parents). Learning how to play music, while also being exposed to the amazing work done by demo crews and in the early tracker scene was awesome. I learned some C, Assembly, and other things.

Around 1994 we got an internet connection at home, and I started exploring making websites, scripting IRC bots, and whatever I could get my hands on. Eventually getting into Director, Flash, etc and really experimenting.

In high school I thought that my path was comp-sci. The University of Waterloo is near where I went to high school and it has one of the best comp-sci programs. Then in grade 10 I took my first art class with a great teacher who really loved art. It changed my life. My high school guidance counselor had heard about this program called New Media at Ryerson University in Toronto, which looked like it would let me make art with computers! I was sold.

At university I learned about SuperCollider, Max, PD, hardware hacking, PICBASIC, and more. I was even on a team making an Arduino like platform before Arduino came out - we called it the Art Interface Device (AID). When Arduino came out about six months later we realized that it was way better :slight_smile:

As an art student I had the amazing opportunity to learn about programming and technology from some incredible artists - David Rokeby, Bruce Elder, Lila Pine. It also provided the opportunity to work as an assistant for them, and visiting artists like Stelarc. They all taught me how to approach programming as a creative activity, focused on artistic expression rather than code optimization.

From there I worked in the arts, design, and other things often as a hybrid of designer and developer until discovering the Interaction Design field in about 2005.


#35

Do a lot of you feel that you enjoy making the tools more than you enjoy using them?

When I started getting into programming, I realized that a lot of what I enjoyed about music was learning new techniques and new ways music were made and not so much about the music itself. I guess I already knew that to a certain extent, but learning about creating my own tools made me feel like it was OK to enjoy these things, that I wasn’t doing anything wrong!


#36

I go back and forth on this… sometimes I get really into making tools and systems, and sometimes it’s the last thing I want to do. Often when I just want to make music I realize that I don’t have the tools I want to make what I’m imagining… :slight_smile:


#37

tell me about your demo crew!

and hopefully i can find a minute to contribute to these stories soon


#38

I lost a lot of time to this (the time was not really “lost” in that it was still a learning experience).

I’d say though, not any more (when this happens I can stop myself) – because I’ve evolved a process where the tools cannot really be separated from the world that I disappear into when using them. The code may “appear” generic/reusable, but it addresses very specific themes beyond the musical/compositional which are more cross-cutting and experiential. Everything’s merged together into a process which allows me to work on tools only when I feel the need. The aim is always the same: to recover an animal relation to music.

I just finished a text that documents the current state of the tools (and really at a high level the overall process), but it’s highly speculative. I’d like to share it, but it’s long, and contains exasperating shifts between technical, philosophical, poetic and even religious perspectives and is structured about a running polemic against anthropocentric notions of transhumanism, the idea of “augmented” reality; “innovation” and its implied teleology etc. in favor of technological mediations that precipitate the disappearance of composer/performer back within immanent, lived reality… rather than being some infinitely powerful, ruler of the universe… it may be a bit crazy even for this great forum, and I wouldn’t know where to put it. It would derail this thread, for instance. But it was in part inspired by your questions and this thread – so thank you!


#39

My first language was Pascal when I was probably 12 in the early 90s. My friend’s mom couldn’t figure out why I asked for a manual on programming for my birthday but she shrugged and got it for me.

From there I programmed my TI calculators (hiding cheats in programs for tests helped me pass some calculus tests, ha) and then Basic, assembly language, PHP, JavaScript, Python, etc.

I work as an application developer now.

I am mostly new to the world of music (been at it for around 2 years now having never touched a musical instrument before in my life) and having a brain trained in making computers do anything I want, I found it fairly easy to learn how to “program” oscillators, VCAs, filters, envelopes, etc to do what I want :slight_smile:


#40

We were a ragtag bunch of teenagers trying to be like Future Crew, but not nearly as hardcore. We had a bunch of names including Yak at one point. (Named in honor of Llamatron)

It started as an offshoot from a Ansii art group, and eventually led me to a netlabel, tracker label at the time, Chill Productions. That’s where I seriously got into programming and computers for music.


#41

I’ve always had an enthusiasm for computers and programming, with my ADHD getting in the way of making much progress.

I taught myself Basic from a book before entering high school because I knew that the school had a computer room with a teletype machine and a time-sharing account on a PDP-11 at a nearby college (and no actual programming classes). By my junior year they had some kind of fancy Textronix computer with a vector display and tape cartridge storage and I got as far as drawing random mazes on the screen.

I taught myself APL from a book while working part-time for a political science professor who did game theory experiments using programs written in APL.

I bought Turbo Pascal for CP/M and then MS-DOS as I received hand-me-down PCs from my mother. It came with a thick manual that did a pretty good job of teaching Pascal. It was rather amazing at the time – an affordable compiled language with no license fees for distributing compiled code. When a local telecommunications user group came up with a graphic file standard (before GIFs, BMPs or JPGs… before affordable grey-scale or color monitors were available), I developed an application for displaying these files on an Epson QX-10.

Later I bought Digitalk Smalltalk/V for MS-DOS, but I could never get anywhere with it. When free computer languages became available, I was equally unsuccessful with various versions of Forth and several other languages. While working at a bank, I ended up helping coworkers develop an application in Visual Basic, but I never really learned Visual Basic. I just fell back on my memories of Basic and Pascal and used the existing code as a model.

I’ve wanted to learn Pure Data and Supercollider, but finally took the ChucK class through Kadenze and it really clicked with me. This was my first real experience with object-oriented programming & multi-threading. Since then I’ve been wanting to create embedded musical instruments using Raspberry Pis, so I’ve gone through the introductory classes on Python and Javascript on Codeacademy. I have a RPi 3 with a Sensehat (add-on board with sensors & an 8x8 RGB LED matrix) and I’ve gotten as far as a drum machine that generates L-system rhythms in ChucK with randomly selected samples, and which sends OSC messages to a Python program that controls the LED matrix.

At this point in my life, to make further progress in programming I need either: a) a class with deadlines and compelling assignments, or b) an exciting project that motivates me to learn whatever I need to learn.


#42

No … i think the ease of making tools on a computer has ruined my life to some degree :sweat_smile: because i don’t enjoy it, but it’s just easier to dwell on that stage of my creative process for some reason(can sit on a couch and do it, doesn’t require alot of movement :laughing: ).
It’s too easy to sit and make tools, dreaming of the awesome things they could do in the right hands once they’re finished, much much harder to sit patiently with the tool, in its completed yet constantly flawed state, and practice until you develop the right hands to do those awesome things with the tool yourself.
no… wait… i could be wrong… i just realized: i don’t make tools, i make instruments (maybe if i thought of them as tools i wouldn’t take them as personally, and would set them free much sooner :thinking: )