Why create? Assorted thoughts on software development
Being heavily involved in both machine learning and game development fields, it seems that the majority of building is done while sitting, by only typing on a keyboard and staring at a monitor. Whether there is a pandemic forcing people to work from home or not, I can continue creating without moving from a single room, or even from my desk.
However, the creations that are built with this relative physical ease, can be spread across the world. People in Norway and Japan have purchased and played my games, readers from India frequent this blog, and ML I deployed has been interacted with by people all over Canada.
This ease of creation to the sheer scope of impact is a reason that draws me to build, be it in machine learning, web development, video games, or any other type of software. An example of scope of impact, is that, as a user of Visual Studio Code, for 5 hours a day, could that philosophically mean that the developers of the code editor created 5 hours of time? That what had left their fingertips in lines of code, is now physically in my room, on my monitor, and likewise in the lives of people around the world?
In addition, since millions of people use the code editor, does that mean the developers generated tens of millions of hours of value every day? I’d like to think so. As you can tell thus far, this article veers more on the thought exercise direction, but I hope that we can walk through these ideas together, and see if it provokes some thought on how you see your own creations and impact.
- 2 types of impact software can make on peoples’ lives
- Type 1 - trickle impact
- Type 2 - Mindblowing impact
- Examine your creations and how you would like to impact the world
2 types of impact software can make on peoples’ lives
Previously, I used an example of a code editor, such as VSCode, and its impact in terms of time to peoples’ lives on a large scale. To continue on this logic, let’s examine software that could impact a stranger’s life trajectory. Life trajectory impacts, for example, can be like how one’s first full-time job out of school has ripple effects through one’s career. Thus, if software has played a role in one’s first full-time job search, it is possible that the software had provided that trajectory nudge.
Apps like Way of Life, which is a digital habit tracker, are examples of software that can impact the physical reality of one’s life trajectory. For a person for whom the app has made a large difference in their self-discipline and habit-building, the app might help them achieve a much different outcome in life than without it. Disclaimer: I don’t personally use Way of Life, but mention it as an example because I habit track on pen and paper in my daily journal. Systems like habit tracking certainly helped me live a life which I couldn’t have otherwise, and I believe that many types of software helps facilitate these systems in peoples’ lives.
Now that we’ve gone through some examples, I detail what I observe to be 2 different types of impact software could make on the world:
- Trickle impact - daily and “invisible” such as VSCode, or the ML algorithms on YouTube
- Mindblowing impact - experiences that inspire and linger in your mind, or even alters your worldview
Note that I will purposely avoid strictly defining what counts as software in this article. I’d like to leave that up to your own interpretation - and I encourage you to tie it back to your own experiences!
Type 1 - trickle impact
Now let’s dive into each type of impact software can have on the world and their characteristics.
What I mean by software that makes trickle impact, is that they may be used on a regular basis as part of one’s day to day life. To one, it could feel as insignificant as cutlery - I use a fork and spoon every day, but I barely notice or consciously reflect on the fact I own these cutlery. (On an unrelated note, did you know that chopsticks are great for flipping bacon?) The fork and spoon is almost forgotten, invisible, yet allow us to eat, which makes tools like these essential because of what they enable.
Examples of software that has these characteristics include IDEs, email clients, word processors, web-based calendars, and so on. I use these software for minutes or hours combined every day, and they greatly benefit me and in turn allow me to create. However, as a user, I rarely consciously think about the tool, much less recite each time I open Gmail, “I’d like to thank the developers of Gmail for allowing me to collect newsletters…”
In my personal experience, I’d consider many smaller components of software to have trickle impact in their own right. To illustrate, machine learning algorithms within YouTube, Spotify, or social media, also silently make an impact on the user’s day to day, for minutes or hours.
Why create software with trickle impact
Despite their relatively low-key, even forgettable presence in our lives, we can’t deny that software with trickle impact truly facilitates essential activities, much like how the humble cutlery enables us to eat and cook.
Reverse engineering this for a second: The people that built those tools also have a presence in my life, enabling me to do business, write code, and meet new people. Perhaps the creator doesn’t even think about the impact they have made, but to me, as both a user and builder, this is one of the fascinating things about software.
As a thought experiment to quantify the impact with units of time: let’s say I use Slack for 30 minutes a day on and off. Assuming the average user also checks it 30 minutes a day, and there are 12 million daily users, that is millions of human life hours a day that this product touches, even if it’s relatively unassuming in the users’ minds. Then, we divide those hours by the amount of developers that worked on it, let’s say 5,000 developers, to get 30 * 12,000,000 / 5,000 = 72,000 (impacted minutes per developer).
That’s a lot of minutes a day each one of those developers have influenced. Even with the numbers being wildly made up (as I’m not privy to Slack’s real user stats), and the fact we haven’t even touched on the potential business, happiness, or dollar impacts of trickle impact software, hopefully this can provide some thoughts on why I find this type of software to be incredibly powerful and fulfilling to build.
Type 2 - Mindblowing impact
The second type of software product impact I call “mindblowing”. Often this is content-based software, such as video games, or a virtual reality trip. In general, the characteristics of software with mindblowing impact is that it facilitates an emotional or philosophical experience.
To explain the impact of this type of software, using a non-software example, think of how a film, book, or song lyric can drastically inspire one’s actions or even change one’s worldview.
A personal illustration is, recently, after watching the finale of Canada’s Drag Race, I was in a daze. I stayed up quite late at night mulling over the experience of following the show, how inspirational each of the contestants were, and finally, the reveal of the winner. I went on Reddit and Twitter for hours to follow the discussion. Content or experiences like this make me reflect on my own life, what I value, feel inspired, and be immersed in a community.
Software such as video games, can often achieve a similar effect. Online communities spring up around games, and people might also feel a similar mindblowing and emotional daze after playing The Last of Us 2. These types of software are so powerful they can change people’s lives. It is incredible to be on the other side as a creator.
Why create software with mindblowing impact
To flip it to the creator’s side: compared to content like films and books, the “mindblowing” impacts of software can be just as deep. However, to create media such as a TV show, it is often required to film on location, and have tons of staff and physical labor. In contrast, software is interesting and unique in the sense that the creators might not even need to leave their rooms. (Let’s set aside the high budget games with motion capture etc.)
As to why this type of software creation is enticing as a creator, in terms of video games, it is simply incredible for thousands of people to spend an evening with any creation of mine, feel emotions, and mull on it. It is like I can invite them into a piece of my imaginary world, through a keyboard and monitor and code.
“I came for the cute dogs, but left with existentialist and class based nightmares.” - Steam player
“[H]ow much wonder and joy I felt going on this ride with Syd. I loved delving into her past…” - Switchplayer.net
As a creator, it is a uniquely exhilarating feeling that an abstraction in my mind can be materialized by typing on a keyboard, which can then make someone across the world feel wonder and joy, or even existentialist nightmares. I don’t quite have the physique, or crane operating skills, to be building the next Taj Mahal. I believe, that with software, we as builders have the power to incite feelings of awe and wonder like that.
Examine your creations and how you would like to impact the world
Now that we’ve examined two types of software impact, and how incredible and meaningful it can be as a creator, you might have thought of examples in your own life of both types of software. I am also willing to bet that you’ve come up with examples that seem ambiguous, with a mix of the two types of impact. I want to talk about some of these examples briefly, because I think it is important to round out the ways you can choose to make impact, and thus apply it to your own creations.
One such ambiguous case could be Jekyll, the static site generator that this very site is coded off of, or say, Ghost. Let’s say you’ve read an article that spurred you to action, or gave you a worldview-changing insight. On the Jekyll developers’ end, are they creating trickle impact or mindblowing impact software? On the end of the writer of the life-altering article, are they creating mindblowing impact? If they also coded the website on top of Jekyll, what does that make them?
It’s not this article’s purpose to provide an absolute divide between the two types. I can’t really answer the above questions, but I can say it’s a mix of them. I also can’t speak on behalf of other developers’ subjective opinions. The purpose of this particular example is that to illustrate that you yourself know best where your creations are coming from. By providing this thought framework, it could be easier to narrow down your interests and intentions when building software.
In my own journey building software, I can accomplish both types of impact: trickle, since the ML I built has been launched to millions of people, but they might interact with it for only a few seconds each day; mindblowing, since I have made a game that immersed people in an alternate universe and provoked them to think and feel.
This article was overall fun yet difficult to write - I really wanted to share what makes this skill so important to me, yet I understand that people might not feel the same way. It’s like trying to explain why you like ice cream - it’s a bit difficult to put something so subjective into words but one can try anyway. And it is usually the case we like it first, before attempting to describe it in retrospect.
As to you who’s reading: What do you think about the two types of impact, and do you see it in your own creations? Had you thought about the impacts of software in this way before, and if so, what parts overlap, and what parts do not? I’d love to hear your thoughts: feel free to reach out on LinkedIn or firstname.lastname@example.org.