IDM Pre-thesis Weekly Reflection
Week 1
Over this summer, I began thinking about what I would like to produce as a result of my thesis. Two topics particularly stuck out to me:
- Simplified, Community-Driven Documentation: How is the process of learning programming different from other disciplines? I feel somewhat frustrated with consulting forum entries from 12 years ago to find my problems. I’ve been thinking about better ways of restructuring the documentation of programming languages to make it more centralized, sort of in a Wikipedia style manner. Let’s say a person’s issue is X. Rather than a forum commenter saying the solution to X, the website would point you to A through W, all the information required to know how to do X. It would also be heavily about the community. I think about all the people who have taught courses in P5.js or MaxMSP and all how they just have those course structures lying around, Id love to put that to good use. Every language, library, and framework out there has its own documentation, own community, own quirks. This non-standardization creates a high barrier of entry and a gate-keeping-like feeling for those who may be less experienced, but still wishing to access the tools provided within the documentation.
- A new instrument with the concept of mastery in mind: What makes a new instrument successful? There’ve been plenty of attempts at new instruments (particularly with the NIME community) but none have really caught on. There’s an element of mastery in instruments, they take years to perfect, and the inventors are rarely the masters of the instrument. How do you design something with considerations of unknown musical possibilities?
I got an opportunity to speak virtually with Ahmed Ansari in May regarding these two concepts. Our conversation gravitated more heavily to the latter of ideas and I was offered some great resources to read regarding the concept of craft and the concept of programming/digital design as a craft.
While I think idea choice ‘2’ is indeed an incredibly compelling topic (definitely one I’d like to do on my own time), in the context of a global pandemic, I had begun to be particularly more interested and invested in idea ‘1’. I find the concept of improving the structures of learning and teaching oneself within the field of computer programming, particularly for people without formal Computer Science education, to be far more important and beneficial to society.
Week 2
This week, I’ve been thinking about how to properly research this topic. The subject matter of Documentation is quite clear. Here I can draw out evidence of the fact that developers are usually not educators. That documentation, as is, is not the best way to learn a language. This structure places a lot of assumptions on the potential user, which many times, equates to an inaccessible experience or knowledge base. I could pull the documentation from programming languages and frameworks that are commonly used by creatives in tech: MaxMSP, Node.JS, P5.js, etc. The element I have less experience with is the more pedagogical approaches I’d be exploring with my thesis. I do have a meeting scheduled with the Education Manager of Tech Kids Unlimited, Jessye Herrell, who will hopefully be able to give me resources to explore and learning models to frame the pedagogy of my thesis. I am also planning on reaching out to a few more people to hear about other creative practitioner’s experiences with this topic.
Week 3
This week, particularly after my meeting with Kit, I realized that my concept was not as focused as is necessary for pursuing a thesis on this concept. To combat the amorphism of my thesis, Kit and I started drafting out the Miro board below. Kit helped me collect my thoughts, values, and pain points and put them on paper. This exercise was incredibly useful for identifying my scope and giving me options to zero in on. Kit also recommended me some literature to look through, particularly Pedagogy of the Oppressed and DIY Citizenship. These books will help me establish a historical jumping-off point and what’s been done in the space in recent years.
While I am certain about the macro issues I want to change, it has become clear I need to figure out what exactly I’m proposing as my thesis. For this, I must consult research.
To allow me to talk through some of these pain points I’ve identified, I met (virtually) for a chat with Nick Katsivelos, Director of Digital Advisory Services at Microsoft and Executive in Residence/Adjunct Professor here at IDM. Nick talked a lot about his experience using Stack Overflow. Following that link will take you to a somewhat simple question about programming asked by Nick: “What does ‘Void’ mean?” Of the 15 answers, there are incorrect answers, inconsistent answers, and inflammatory answers. Most, however, do not answer the question. Most answer the question, “How do you use ‘Void’?” Additionally, and most importantly, ALL of the answers require a relatively high foundational knowledge of computer science concepts to be understandable. Otherwise, it’s all technobabble that alienates newcomers.
I also chatted with Jessye Herrell, Education Manager of Tech Kids Unlimited (my employer). Jessye strongly encouraged me to meet and talk with the community my thesis is aimed at, to fully understand their needs. She brought up how even if openness is a tenant of a particular platform/language/framework, etc., that it can be incredibly difficult for first-time users to know what to do. It assumes a foundation of knowledge that cannot and should not be assumed. She also pointed me in the direction of various learning models for me to explore.
Week 4
This week, I spent my time researching pedagogy, particularly that of the open-source movement. I started with Pedagogy of the Oppressed, and then continued on to DIY Citizenship. I also developed the slide presentation below:
Week 5
I started this week with another mindmap to help me visualize the problem I’ve been discussing and think about possible solutions. Based on the feedback from my presentation last week, it seemed I was hitting some people’s pain points and heading in the right direction.
I also informally met with Luke Dubois, who helped me understand some of the reasons within the industry that documentation is the way it is. The main problem he cited was a lack of time. For many of the engineers working at big corporations, as Luke described, documentation is an afterthought. It’s something that takes the engineer away from the project at hand. This is the reasoning behind lacking documentation and minimal examples in many large frameworks and APIs (such as Web Audio API).
Luke also cited JavaDocs as the reasoning behind a lot of lacking documentation. Originally seen as a way to ensure developers documented as they programmed, it autogenerated documentation based on the comments surrounding. However, this just led to ‘one-liner’ sentences being used to describe fundamental objects and functions within the documentation.
Finally, we discussed StackOverflow and how, while a lovely thought, its application diminishes its usefulness. There’s a serious need for reevaluation around how we troubleshoot and help others troubleshoot.
Week 6
I was lucky enough to get the opportunity to write an article for https://www.thedoe.com/. I’m writing the article about the problem I’ve been focusing in on throughout the prethesis process. It’s currently in a somewhat disorganized, in-progress state. I will continue to clear and clarify my ideas. The first draft of the article can be read below:
I’ve also begun accruing and organizing my readings on a google sheet.
Week 7
This week, I prepared another presentation on further research performed. This time, I focused more on the actual interactions of members within the communities I’m examining. Namely, discussions over Stack Overflows toxicity (or, for some, lack thereof), as well as testimonials of users who have since quit the platform after negative experiences. The presentation is linked below.
I also finished the article that will be submitted to a publication, which highlights the issue in less granular terminology.
Week 8
This week, I spent more time going back through the readings I assembled in order to more fully understand them. I particularly focused on the longer-form writings, doing a deeper dive into Paulo Freire’s Pedagogy of the Oppressed and Erik Olin Wright’s How to be an Anticapitalist for the Twenty-First Century. In Freire’s writings, I began to understand more greatly the economic factors and implications implicit in the traditional education models we have in place today. The perceived necessary nature of capitalism stems from the oppression that exists within classroom power structures, with the teacher as the authoritarian expert and students as vessels to idly receive and reproduce information. While some university educators have begun to adopt a more Freirian pedagogy, the resources provided to informal learners lack a similar form of empathy that truly empowers a learner. As volunteers, contributors to sites like Stack Overflow are frustrated and unempathetic towards newcomers who “abuse” their knowledge, or worse, push back on the sanctity of it.
Week 9
To supplement the more formal academic literature associated with my thesis, this week I turned to some more modern and (admittedly) digestible content. I first watched Jaron Lanier’s TedxSF talk, You Are Not a Gadget. The talk is named after the title of his book of the same name (which I, unfortunately, could not find a digital copy of). Lanier talks about his resistance to technology informing our decisions, citing things like data collection for ads on Facebook, and rather encourages technology as an extension of self, through things like avatar. He also reminisces about the early days of the internet, in which the exchange of ideas and creative work flowed freely without the intervention of corporations with a profit motive.
As Ahmed recommended looking into more justice-focused resources to inform the language of empathy prevalent in my writings and presentations, I also looked into the work of A. Nicki Washinton, Ph.D. Washinton is the first black female faculty in Duke University’s Computer Science program and was a faculty member at Howard University for over 9 years before that. She’s now teaching a course called “Race, Gender, Class, & Computing” at Duke. In her work, she advocates for justice and equity in computer science programs and practices. I reached out to her on Linkedin to ask for a discussion and, while she declined, she pointed me towards some great talks she gave in the area. I watched a talk she gave just a few days ago called My Work is my Protest for NCWIT Conversations for Change.
Finally, in thinking about a more equitable and empathetic way of accommodating informal learners of computer science, I’ve begun to draft out some manifestations of what a potential platform for this could look like. I was thinking of an all (or rather non-specific) language documentation, concepts and sub-concepts (variable > variable types > boolean), link rich (i.e. to flag booleans), varying levels of abstraction in tabs (beginner, intermediate, and advanced).
Here is the example design I made (I’m not a UX designer, so there are most likely some questionable design choices here). I’m focusing more here on the functionality than the design. As you can see, it is a simple explanation of a specific data type called booleans. The description has plenty of links to send you to other pages within the documentation (delineated by the blue text). It also features a pseudocode example to illustrate how a boolean could be used.
Week 10
This week, I worked on my document that specifies my research and testing methods. The document is below:
Week 11
This week, I’ve been doing some further reading into the papers that I’ve collected. I’ve also been planning out what I’m going to do for research. Namely, reaching out to experts and starting to prototype what the platform itself will look like, so I can start testing it.
So far my experts are:
- Luke Dubois: Had a meeting, will schedule another.
- Tega Brain: Emailed, have to organize a time.
- Scott Fitzgerald: Need to Email.
- Nick Katsivelos: Had a meeting, will schedule another.
- Tommy Martinez: Need to Email.
- Lauren McCarthy: Maybe too busy but good for community dev perspective.
I’ve also scheduled an informational interview with one potential user and am planning out the script for that.
Week 12
Following a meeting with Kathleen, I’ve decided to approach my thesis with a collaborative form of development. To accomplish this, I plan to begin developing and releasing an initial product that will continually be edited, suggested, and added upon by a community. I’ve begun looking into ways to accomplish this, particularly things like MediaWiki, Trac, and Redmine (all of which are ways of making Wiki’s (Trac and Redmine also have version control and some other features). I’m currently organizing and planning how to develop this project.