BT

Facilitating the Spread of Knowledge and Innovation in Professional Software Development

Write for InfoQ

Topics

Choose your language

InfoQ Homepage Articles How Did You Start Coding?

How Did You Start Coding?

 

A study conducted in July 2015 and recently published surveyed more than 2,200 coders and developers, asking them to “recount personal traits, tendencies and preferences from their younger years” in an attempt to determine what makes kids to end up in a computer science profession. The study, commissioned by Code School, an online learn-to-code website, concluded that on average developers show an interest in computers before the age of 16. Other findings are:

  • Usually men start playing with computers at the age of 15 or early, while women do it at the age of 16 or later.
  • The top hobby of 83% of men surveyed was computers, with sports next for 61% and then music for 59%. Women still preferred music (63%) over computers (52%).
  • Women procrastinate less while some men (41%) wait until the last minute to do their school assignments.
  • Fewer women (7%) than men (14%) drop out of school. Also, more women end up with a bachelor’s degree (51%) or a graduate degree (30%) compared to men with 42% and respectively 27%.
  • When it comes to income, women tend to have a more steady income with 32% making $50K-$100K/year but only 17% make more than $100K. 25% of men make more than $100K but, on the other extreme, 20% of them make less than $25K.

InfoQ has also conducted a survey (How did you start coding?) among our readers and promoted it through social media channels. The survey asked three questions -“What age were you when you started coding?”, “What was your first computer?” and “What do you love about coding?” – and was taken by ~120 readers. After a bit of analysis, the results of the survey are:

  • InfoQ readers started coding between age 5 and 30
  • The majority of respondents (45%) started coding at ages between 10 and 14 years
  • The average age for starting coding is ~14 years (13.89)
  • Younger readers started working on Windows (36%), and older ones on Commodore (19%), Spectrum (14%) with a few (5%) on mainframes
  • When it comes to the reason they love to program, the respondents provided answers that can be reduced to: Creativity (35%), Problem Solving (16%), Magic (15%), etc. One of them said he likes programming for the fun of it, while the one who started coding at the age of 30 is doing it for the money.

InfoQ editors are not journalists by trade, but software architects, team leaders or freelancers in the real life, like many of our readers. Some of them recollected on an internal mailing list how they started coding at early ages, and we decided to publish their stories.

Ben Evans, co-founder of jClarity:

My parents bought me a ZX Spectrum for my 8th birthday. My dad had programmed IBM 360s in the 60s, but by the time I was 8, the family had moved to Cornwall for quality of life and he was working as a TV engineer. He felt that the wave of home computing that started in the UK with the BBC micro, Commodore and Spectrum was of huge importance, so he & my mum scraped together the money to get me a computer.

I learned Spectrum BASIC and Z80 assembler on that machine. I also had a subscription to a computing magazine which contained program listings that had to manually retyped in order to run them (but they could be saved & reloaded, once they'd been typed in). My mum tells me that one afternoon, I'd invited some of my friends over & had persuaded them to type in a full listing, with the promise that we'd be able to play the game once we'd typed it all in (which took several hours). So, I was reading the listing & watching what the typist was doing - a form of pairing.

I went through several generations of Spectrum (culminating in a +3) before moving on to a PC. We built up a machine a bit at a time. Despite my best efforts and saving pocket money & parents kicking in a chunk for my 15th birthday (1991), we couldn't afford a 386 - had to settle for an upper-end 286. Even with this compromise, the machine sat sadly without a graphics card or monitor for a chunk of that Summer, until we found a cheap Hercules monitor and adapter. I now had a workable (albeit floppy-only) system, that I could work with until I could save up (& sell my +3) to buy a hard drive - with a mind-bending 40M capacity.

I'd graduated to Pascal and some rudimentary C by this time - enough to write a simple "Light Tracer" / Snake clone, and got a color monitor just after Windows 3.1 came out. Somewhat frustrated with Pascal, I didn't really consider a career in technology, and instead opted to study Math (in order to study Theoretical Physics and become an academic) at University.

At Uni, I hacked into the rudimentary access network between my college and JANET so I could connect to early telnet-based chat services. This rekindled my interest in C and I heard about Perl for the first time. I persuaded my tutor to sign off on a Unix account and worked out that there was a dial-in number that I could use to connect (at the cost of a national rate phone call) from home. At the end of my first term, I discovered that my Dad's new job used remote working to cut down on paperwork - the field calls he needed to make were downloaded onto his Windows 3.1 laptop at the end of each day.

Bypassing the crude safeguards gave me access to the modem & Winsock components, and now I had home Internet access.

By the time I left Uni, I'd discovered the Linux and UK Usenet communities, but was still expecting to become an academic. The PhD didn't pan out so well, although I did have an encounter with a language that would be important later. I had been earning some extra money by helping a disabled student who couldn't physically attend his first year Computer Science classes. I'd learned Dijkstra's algorithm and enough graph theory to stay ahead of the class, and at the end of term, he came to me and asked if I'd sit in on another class for him - some new programming language called "Java".

After that first taste of Java, the grad office (who had been finding me work) asked me why I always took the teaching jobs instead of the higher-paying programming jobs. I'd never really considered it (no idea why) - so I took on some website work in Perl & JS. I'd also started an online music fanzine with some friends. It was really novel at the time (1997-8) so record labels were happy to send us vinyl and concert tickets. The fun of running the fanzine & the better money from website programming (and one of my first clients who paid me in surf equipment & a bar tab at a club he owned) made me pause.

I decided to take a summer off from the PhD, got a temporary job in London writing music and film websites, and when the Summer ended, I decided I wasn't going back to academia...

(Wow, this got longer than expected...)

Victor Grazi, VP at Nomura Securities and Java Queue Lead Editor:

When I was around 12 or 13 (hate to date myself but computers back then required a large room pumped lots of cool air, and you had to be careful not to drop your punch cards) my parents bought me my first computer, a plastic creation called Digicomp 1.

It was cleverly powered by a hand controlled binary "clock" that you slid in and out. You programmed it by inserting small straws in front, and longer ones in the back. You could program it to do all kinds of amazing things like count by 2 or count down from 10, stuff like that. The result appeared in three plastic binary display cells that oscillated between 0 and 1 as you controlled the clock.

Fast forward to college, they kept a PDP something in another building somewhere, where you were shielded from the cold. You could sit in front of a remote monitor (wow!) and  issue instructions in APL, and have a response within seconds. It was great but they only gave students $50 per semester of computer time, and no real option to buy more. But that didn't matter, Syracuse University was a great party school and most of the population was busy spending that on a night of partying, so it was easy to solicit other student's time, because they mostly could care less about computers!

Some time later, before the first commercial PC I had a programmable HP calculator, and discovered that the program memory was mapped to some of the calculator's upper data memories, so I was able to inject programming code directly into those registers. Sinister! 

Then came my first real PC, a TRS 80, which came standard with 8K internal memory and a cassette tape recorder for persistent storage. That lasted for a few months until I traded up to a Northstar Horizon Z80 machine that I promptly maxed out at 64K, and we were off! There was an article in Byte magazine that year (Aug 1980) on the Forth programming language (August was always their "Language of the Year" feature) I fell in love and had some articles published in Byte and other journals at that time. My start to publishing! Many more stories as well.

Good times and happy memories!

Charles Humble, Chief Editor at InfoQ:

I borrowed a friend’s ZX Spectrum one summer holiday and programmed the heck out of it - think I was 9. That Christmas my parents bought me a  Commodore 64.  I was 10.  I really wanted a puppy, but I was pleased once I got over the initial surprise!  Anyway it was the main machine I learnt on.  

I started learning Commodore basic, but wanted to write an Elite clone and the high-res support on the 64 from basic was unbelievably slow so I ended up writing an assembler for it and coding assembly - frankly Commodore basic was such that the move to assembly wasn’t that big a jump.  My Elite clone was rubbish, but it had an awesome sound track. The 64 also had an amazing sound chip with this weird quirk that, by design, the oscillators never stop outputting signal—even while not in use. It’s a total design flaw but it’s a big part of what makes the SID sound like it does.  Also turned out to be a fantastic grounding when I got seriously into synths later on. 

School had a BBC model B at which I also used to code on a bit.  Later there was an an Acorn Archimedes - RISC based - which I also played with a bit.  Then Windows, C and C++ at university. Hilariously my first professional coding job was writing VBA in Excel and Access at a publishing company.  Java at the bank was a lucky escape!

Abraham Marín Pérez, an independent Java programmer and Agile aficionado:

I first familiarized myself with computers when I was 7 or 8 years old. My dad worked as an accountant at an office, he sometimes worked on Saturday mornings too, and when he did I often came to the office with him and use a computer. They were generic i386, I believe, and had most programs in 5’' 1/4 floppy disks (some of them games!). For some reason my favorite program was called AccuType, a program to learn to touch-type, which meant that I was able to type without looking at the keyboard before I was 9 (and before many people ever even touched a keyboard).

Then my cousin was given an Amstrad computer, which was just a fat keyboard that you had to connect to a standard TV and with a slot for some weird-looking floppy disks that I haven’t ever seen again (slightly thicker than a 3’’ 1/2 floppy disk, but narrower). His computer came with a book to learn to program in BASIC, however, we were about 9 or 10, and self-teaching programming from a book that was aimed at professionals was beyond our capabilities. So what we did was browsing the book, picking up random samples of code, and copying them verbatim to see what they do: sometimes it would draw a circle, sometimes it would print a sequence of numbers, sometimes it would be something interactive… and sometimes it wouldn’t do anything at all, perhaps because the snippet was a fragment that was meant to be used within a context. We didn’t really know what we were doing, until one day I had a light bulb moment. We had copied a piece of code that had drawn a rectangle on the screen. Then we wrote the next piece of code in the book, that drew another, smaller rectangle inside the first one. I realized that the two pieces of code where basically the same, the only difference being that some numbers changed. I decided to write a third piece of code, keeping everything the same except those numbers, that I would change again in the same proportion, and a third rectangle appeared inside the other two. It was a fantastic moment, I didn’t completely know what was going on, but somehow I figured out that those numbers where the coordinates of a rectangle, and that everything else must have been a way to tell the computer to draw.

Eventually I had my very own PC, a generic i486 (100MHz, top of the range!). It came with 400MB of hard drive and 4MB of RAM. By this time I had a few friends who also knew quite a bit about computers, so I got used to play with them. I also started to learn BASIC programming at an academy after school. It was all a lot of fun, but the first piece of code (or rather scripting) that I wrote out of necessity was a batch script: my dad had told me off because all my games were taking too much storage in the hard drive, and he told me I would have to remove some of them. I was a teenager by then, and I didn’t want to lose my games. Instead, what I did was zipped all of them up, and write scripts that would unzip them, run them, and then re-zip them in sequence. Bear in mind this was MS-DOS, which didn’t support multitasking (Windows 3.1 was just a program that you invoked), so there was no registry to take care of, or shortcuts, or anything out of the folder where you keep stuff, and that running a program (like a game) effectively halted everything (like my script) until the program finished. It meant that it took a couple of minutes before I could play, but it allowed me to use less storage and keep my dad happy.

The next piece of useful coding that I did was also something very simple; I could do more complex things, but I just wouldn’t find use for them. My dad was sometimes annoyed by colleagues that would use his computer without his consent. Everything was MS-DOS based back then, which didn’t have user control: the computer was just a machine that you turned on and used, like a TV or a VCR. So he wanted a way to ask for a password that would prevent others from using his PC. I wrote a simple program in BASIC with a hard-coded password, which would simply block if you entered the wrong one, and then I instructed my dad to configure his PC so this program runs first thing when it starts up. Again, since MS-DOS wasn’t multitasking, a program that hangs meant you had to hard-reboot the machine, there was no way to kill a process, so this effectively achieved what he wanted.

Not long after that I went to university, and I had my first experience with C. That was more complex than BASIC, but also much more powerful. Then came C++ and the concept of classes, which I found fascinating. And then Java and the concept of garbage collection… wait, I don’t have to worry about destroying the objects that I create? This is awesome!

Oddly enough though, my first professional experience was with Flash and ActionScript… which I didn’t love at all. It didn’t feel like real programming, more like drawing boxes that had snippets of code embedded in them but that I struggled to coordinate properly. The next job was with a COBOL-translated-to-Java codebase, we called it Javol. It was weird, but fun in a way. I had to learn some COBOL (and some OS/400) to properly understand what that thing was doing. Then I moved to London, got a job at a bank, and got exposure to all sorts of esoteric programming experiences: Excel spreadsheets that connect to databases, VBA with hand-written XML parsers, C# that called VBA code embedded in a Word document… and then some proper ASP and Java. And then all the way to today, where most of the programming feels “normal”, although sometimes I wonder which parts will sound crazy in a few years from now.

Ralph Winzinger, Principal Architect at Senacor Technologies:

Well, when I got in contact with computers for the first time, they already could be placed on tables. I was also at the age of 12 maybe 11 and living in a really small village when a friend of mine got a Commodore C64. Pure magic. First, we only used it for playing games but soon we also started to write our own games. Well, kind of. We had no idea at all of how to create clever software, but at least we tried. The results were some hardcoded text adventures … „go north“ - „look“ - „go west“ - „look“ and also some sprites that we were able to move around the screen with a joystick. Anybody remembering „load *, 8, 1“, „sys 64738“ or „poke 53280,<something>“ from that time?

Then I moved to another city and I lost my C64 connection. Instead, my uncle gave me his old ZX81 Spectrum - that tiny computer with the plastic membrane keyboard. The keyboard not only had the letters printed on it but also all the keywords to write software. I just had a look at it in Wikipedia and I must admit that I don’t have an idea how this worked at all. But I do remember creating some turtle graphics and stuff with it. No surprise I started to spend my afternoons in a large department store where all the latest computers were on display and free to use. 

I think I was around 14 or 15 when I finally got my own „real“ computer - a Commodore C128 and it even had a 1571 floppy disk drive. I started to create real software for example to manage my audio tapes. I don’t know why I had to manage my tapes with software but it was the first larger system that I created. I even tried to publish it but it seemed that the world was not ready for computer aided audio tape management.

I think most C128s only received one command: „go 64“ to enter C64 mode where all the games lived (imagine putting your iPhone 6 into 3GS mode :-)). Well, on my C128 there was at least one application - a Pascal compiler which was my way out of the Basic world. 

My computers became more capable (286, 386, 486, …) and soon I left Pascal and moved on to C++ - ooooh object orientation. The Borland distribution came with nearly one meter of manuals. In the first half of the nineties we really needed to read those books made of paper because we were still programming without internet access and Stack Overflow. Well, I guess we had more than one Stack Overflow back then but not the one with the „.com“ suffix.

In the meantime, I also started to learn Java at university which is still my daily business. And just like every other CS student I made some money with programming. In my case it was mostly for Psion handheld computers and that was actually my first contact with the mobile world. I also was fascinated by WAP phones back then and I even implemented the first mobile planner for public transportation here in my hometown. That was more than 15 years ago but for some strange reason nobody turned it off. I suppose they just forgot that this thing is still online.

That "mobile hobby“ finally took me to InfoQ and as you can see, I’m still fascinated by mobile computing - phones, wearables, IoT …

Now that was fun … thinking about the digital part of my past 30 years…

No matter the age developers started coding or their current age, the computer they typed on first or what they are working on now, it is obvious that for many programming is marked by passion, they spending many hours learning, exercising their skills and producing software for the world.

About the Author

Abel Avram has been involved in many InfoQ editorial activities since 2008, enjoying writing news reports on Mobile, HTML, .NET, Cloud Computing, EA and other topics. He is co-author of Domain-Driven Design Quickly.
In the past he worked for many years as software engineer and project/team leader on legacy systems, Java and .NET. He started his career as an assistant professor at the Computer and Automatics Faculty of the Technical University of Timisoara, Romania.
If you are interested in submitting a news story or an educational article please contact him at abel [at] infoq.com.

Rate this Article

Adoption
Style

BT