A few weeks back, Ryan C. Gordon invited people to share their first programming experiences with him. Looking through the responses, I noticed some commonalities that seemed interesting and decided to put together this series of visualisations as a for-fun companion piece.
Before we dive in, it's worth highlighting that responses will be heavily weighted by the demographics of Ryan's followers, and that there was no structure to the solicitation for stories. As a result, the amount of detail covered and clarity provided varies wildly and where it's felt appropriate, I've used my best guesses/personal knowledge/a little extra research to supplement what has been shared.
Given the small sample size of 96 respondents, and the value of respecting privacy where I've had to do a little extra hunting around, I've opted to not share the data I've distilled. The original responses are viewable on Storify and are worth reading for the extra context.
The most obvious data point to draw from the responses is the programming language respondents had their first experiences with. This is also the most commonly shared detail across the responses, with 74% including an indication of language. Four responses included two languages, which distorts the numbers a fraction.
Programming languages indicated in "How I Got Started Programming Stories".
We can see that across a number of variants, BASIC is the most common first language mentioned by respondents by a large margin, accounting for over half of the identifiable languages. Pascal and C/C++ are the next highest frequency languages.
Unsurprisingly given the sampling method, newer languages and languages with comparatively new-found popularity feel like they have lower representation.
Breakdown of BASIC variants.
Breaking down the responses mentioning BASIC, it becomes apparent that the majority of responses did not specify a particular variant. It feels less likely that recent BASIC dialects will be included here, with Visual Basic's branding and IDE features leading programmers to be more explicit when referring to BASIC.
QBASIC is the most represented named variant - Its presence on MS-DOS and Windows throughout both operating systems' history are likely to have made it more discoverable and accessible through the dominance those platforms have shared.
TI-BASIC is also notably common, with the relevant respondents speaking of discovering programming during unrelated institutional learning experiences that involved Texas Instruments programmable calculators.↑return to top↑
Another aspect that seemed interesting to explore was the apparent area of focus that respondents' first programming experiences took place within. Unfortunately, this was only inferrable from just over half of the responses, but the breakdown still shows some meaningful commonalities.
Area of focus indicated in "How I Got Started Programming Stories".
With Ryan's day-job being porting games, it's unsurprising that two thirds of respondents indicating an area of focus had their first experiences working with or attempting to create games. It is interesting to compare these results with the Influencing Factors charts, in which games and a desire for better tools also make an appearance.↑return to top↑
A number of respondents indicated libraries or enviroments (not including IDEs) that may have influenced the form these first experiences took. Unfortunately, the number of responses with this kind of detail is low, with only 21% of responses giving an indication. One respondent indicated two technologies.
Technologies indicated in "How I Got Started Programming Stories".
As is probably expected, games and game modding account for the highest frequency, with over half of relevant responses mentioning a game or game engine.
Blender makes an appearance as the next highest frequency response, with respondents talking about shifting from a 3D artist focus to programming via writing Blender plugins.
Breakdown of games and game engines.
The numbers here for individual games are small enough to not be meaningful, but the list is an interesting mix of scripting games and game clients like StarCraft and TinTin++, editing/modding existing games like Jedi Academy and Vendetta Online, and working in game engines and games that expose scripting as an in-game mechanic such as RPK Maker 2k and Garry's mod.↑return to top↑
Even though the number of responses indicating the platform that the respondent had their first experience with is only around 54%, the diversity of platforms included in responses is surprising to me, and aggregating platforms for the sake of a readable chart was a bit of a challenge. Two responses included indications of two platforms as part of their first experiences.
Technologies indicated in "How I Got Started Programming Stories".
Commodore platforms stand out as being the most represented in responses. This adds weight to the suspected age of respondents, or at least the time period during which most had their first experiences. Combined with older Apple platforms and DOS (the next two highest frequency platforms), they together account for just over a third of relevant responses.
Texas Instruments platforms (including their programmable calculators), Linux and Sinclair platforms follow, before givng way to older x86 platforms (spread across an unknown number of brands/clones).
Breakdown of Commodore (left) and Apple (right) platforms.
With its dominance in the 80s as a hugely successful home computer, the C64's presence as the most represented Commodore platform is to be expected, and is equal to the frequency of responses mentioning DOS (the most occurring individual platform) in the preceding chart.
Looking at the breakdown of Apple platforms, the relevant responses seem to reflect the Apple II series' popularity across the late 70s and into the 80s.
Breakdown of Sinclair (left) and Texas Instruments (right) platforms.
Sinclair's ZX81 and its sucessor the ZX Spectrum also had popularity in the 80s. Both of these platforms provided Sinclair BASIC oriented experiences and would expose their users to some level of programming.
The Texas Instruments divides mentioned in responses are mostly programmable calculators, although a TI-99/4A was an early 80s home computer which shipped with TI BASIC.↑return to top↑
Most responses included an indication of an individual or situtation that prompted them to encounter their first programming experience. This is the second most common identifiable data point, with 72% of responses adding this kind of context.
Influencing factors indicated in "How I Got Started Programming Stories".
Self motivation, primarily driven by curiosity and experimentation is the biggest indicated factor across relevant responses. It's entirely possible that many of these experiences were set in motion by external factors, but indication of a strong sense of ownership that respondents feel over their first programming related steps is interesting regardless.
Moving down the list, we can see that parental guidance is also a notably common factor in first experiences, indicating that these respondents discovered programming during their childhoods. These kinds of early experiences can build a powerful sense of nostalgia for the feelings associated with early programming experiences (I certainly know I have some!).
We see school environments, games and brothers (considering the role that relatively unsung women played in the history of computing, it's disappointing to see that responses are significantly gender weighted, and that the only mention of a sister is one who wasn't interested in a computer and passed it on to their sibling) as the next most frequent responses. Interestingly, as we'll touch on in the Institutional Experiences chart, the majority of school related experiences did not map to institutional learning activities.
Job dissatisfaction and a desire for better tools were two responses that I was not expecting to see. These responses suggest a degree of self-motivation for resolving "real-world" problems - a mentality that can be beneficial to a programmer.
Breakdown of parents and other adults.
Looking deeper into parental influence in respondents' first programming experiences, we can see that fatherly figures approach nearly three quarters of responses.↑return to top↑
A little over 36% of respondents also indicated some form of supporting material that assisted with their first experience. Two responses contained indication of two separate materials.
Supporting materials in "How I Got Started Programming Stories".
Primarily, we can see respondents referring to books and documentation. These are typically experiences which a respondent would be persuing independently (though, if a book was given by an individual, that would be noted in the Influencing Factors chart rather than being marked as a self-motivated experience).
The next highest frequency of responses indicate discovery of programming without any supporting materials, consisting of a mixture of responses mentioning personal experimentation and watching/learning from others. Included here is an unnamed course book, which appears to support institutionalised learning rather than stand alone as a resource.
Breakdown of books and official documentation.
Digging into books, only a few were mentioned by title, though the majority referenced are some form of BASIC focused publication.
"Official documentation" in the supporting materials chart is an aggregation of manuals, API docs and help files. Again, we see BASIC related resources well represented, echoing the language's priominence in the Programming Languages chart.↑return to top↑
While not often explicitly mentioned, whether or not a first learning experience was part of an institutional learning activity (such as being part of coursework delivered at a school) felt inferrable from almost every response.
Institutional learning experiences indicated in "How I Got Started Programming Stories".
Even when leaving a large margin of error for misinterpretation, the vast majority of responses came from people who discovered programming outside of a school environment. We've speculated earlier that most respondents had their first experiences in the 70s and 80s as children, which would place them in an era where the presence of programming and computing related classes were comparably rare. That said, even amongst the respondents who are identifiably younger, extracurricular experiences are still noticably common. Of those where schools are mentioned, a number of respondents highlight that their first experience was outside of any course they were taking.
Few responses indicate whether respondents went on to study programming formally, so it's possible that the continuation of many of these stories involve some kind of direct school involvement, but it seems clear that learning institutions were not typically involved in introducing respondents to programming.↑return to top↑
In addition to the information explicitly shared, I've also gathered together an impression of where in the world respondents are located. These are current locations of respondents rather than where in the world these first experiences may have taken place.
North America features heavily in the location of respondents, perhaps influenced by the time zone from which the original tweet was made. Approximately a quarter of responses were spread across European countries.↑return to top↑
Looking back across the accumulated data, it feels very much that respondents are primarily composed of a mix of Linux users and game developers/porters over 25 who had their first programming experiences in Western cultures during the 70s and 80s. The data we've explored here gives some very vague indications of what the initial steps of a programmer with this background may look like.
While the sample size is too small to draw any meaningful conclusions, there are some interesting points to ponder regarding the relevance of BASIC as a learning language, the roles that educational instutions should or should not be playing in introducing and nurturing the concepts of programming, the roles that family members and acquaintances have in shaping the lives and interests of children, the comparitive diversity of platforms available today compared to 30 years ago, and the value of games in motivating and engaging prospective programmers.
Before finalising my data points, I reached out to Ryan to ask what his first experiences were. While light on specifics, his answer seems to touch on the kind of motivations and dreams that are echoed in many of the responses.
@ValiantCheese Wanted to make games since Ghostbusters on the C-64. 15 years later, I did.— Ryan C. Gordon (@icculus) January 5, 2016
@ValiantCheese (It's way more complicated than that, but that'll fit on my gravestone, so that works, I guess.)— Ryan C. Gordon (@icculus) January 5, 2016
While working through the responses, I couldn't help but feel a small sense of elation. In a way, it was exciting to see mention of a grandmother who worked on educational games, of adults taking charge of their lives, of parent-child bonding, of teachers recognising and encouraging student interests outside of curricular activities. The disappointment from reading of students being steered away from programming is offset by respondents talking of pushing ahead and returning to programming regardless.
What resonates most for me personally is a reflection of my own experiences, with tales of young eyes being opened and young minds being empowered by discovering the creative and challenging world of programming.
Thanks for reading!
Twitter is a notoriously terse medium, and the 140 character limit often hinders the ability to convey or express nuanced thought. The grey areas (represented as grey areas in the charts) are massive, and the tiny glimpses at the respondents' lives must barely represent the richness of their stories.
Thanks to all those who did choose to share some memories and thanks to Ryan for pulling them all together!
If you've got any thoughts on this article, you can email me at firstname.lastname@example.org.
This article was published on the 9th of January 2016.