Software Developers are Creators too
This is a bit of a hot-take, because I know there's this unspoken chasm between those in creative fields and those in technical fields. But today I'm going to propose that software developers and engineers are creators too.
(Note: I'm aware of the nuances between the terms "programmer," "software developer" and "software engineer" from the point of view of the tech world, but because I will be focusing mainly on the wider, business sense of building software in this post, I will be using these terms interchangeably.)
I was on Pillowfort.io late last year, trying to see what this new social media has to offer. Touted as a cross between LiveJournal and Tumblr, I was very curious about it, as LiveJournal had been my favourite social media platform back when it wasn't a ghost town. I came across this post in a community.
Five months later, I still quietly simmer in indignation every time I see this comment. There's just so much to unpack here, and you know what? That's what I'm gonna do. Let's get to it.
Software development is not a one-time thing
The notion that software is something you build once and merely "tweak" from time to time is so misguided, I half-think that this person is trolling. (Or I don't know, maybe they truly are trolling.) But let's suppose they're not, and who knows, maybe there are plenty of other people who have this misconception.
Look, if you think that software is only developed once and tweaked from time to time, all you have to wonder is this: if that were true, every software company will become smaller as their product matures. Which is unheard of. In fact, the only time companies grow smaller is when they actively retire products from their product line, or take away features from the products they're still supporting. The common denominator? The product is shrinking. That's because software requires deliberate and constant maintenance in order to remain usable to their customers.
These maintenance aren't mere tweaks either. The most common cause of stagnating software is simply that every other technology is rapidly evolving. A software can remain untouched and will still become obsolete in a matter of years. Operating systems are constantly updating. Hardware is becoming more advanced. Malware and hackers are constantly becoming more dangerous and more sophisticated. A piece of software needs to keep up with all of these changes even if its core functionality never actually evolves. Thinking that software updates are a mere "tweak" is the exact reason why those who exploited the Log4j vulnerability last December might be laughing at you now.
Maintenance can involve onboarding an entire new team of software developers and IT technicians. Database migrations? Moving from on-prem to the cloud? Switching programming languages? Supporting IE8 (lol)? Some of these "mere" maintenances can actually require an entire team of people to plan out a strategy and execute it.
And we've only talked about maintenance. What about fixing bugs and expanding support to a growing user base? What about implementing new features altogether? People's tastes and preferences change. If a piece of software fails to keep up with what people need, that renders them obsolete too. It's funny, because I think half the people who think software development is a one-time thing are the same people who make fun of developers for missing a bug, then demand from those same developers an entirely new feature with no notion of how complex building it might be.
Even the commenter's analogy to a shelf is kind of outrageous. What happens when it gets full? Does this person think they're the only ones who will ever put something on that shelf? That their work is so limited that they will never fill up that shelf by themselves? If they think they have a use for a shelf, then it follows that thousands, or even millions of people, will have use for a shelf. What, do they think that everyone will be using that exact same shelf? That new shelves wouldn't need to be built for everyone else? Do they think it's merely a "tweak" to build thousands of new shelves, even if the design is the same? Or how about the ingenuity and creativity it takes to craft a new design for a shelf that allows for personalization and better usage? Really, we're supposed to believe that all of these are mere "tweaks"? The analogy itself doesn't work for shelves, so I don't know why they would think it would make sense for software.
Software development... is like writing?
What really riles me up is this notion that software development, because it's apparently a "technical" field, is somehow less worthy of appreciation than writing or drawing or other art forms. But the line between what requires technical skills and creative skills may not be as distinct as you think.
I feel like people think there's no creativity in programming, because their introduction to the subject looks like this: System.out.println("Hello World"). Or they hear that you need to study math and computer logic to build software. Or... to be honest, I'm actually not sure why people think software development requires no creativity at all, because I've never encountered that absence in my entire career.
Seeing a bare-bones program that outputs the typical "Hello World" and thinking that's all software development is, is like seeing the grammatical rules of past/present/future tense in English class and thinking that's all writing stories is. And while it's a little bit more of a stretch to say that math is creative, it can actually be. Just think of proving and transforming trigonometric identities, or solving mathematical puzzles. These often require a type of thinking that you can't just memorize. They involve tackling the problem from different angles until you arrive at a solution.
Furthermore, building software isn't just about a single line of code. It isn't even about a single function or a single script. When you're developing a large-scale product that you know millions of people will be using, you need to think holistically. You need to build well structured pieces that can fit together. You need to ensure that what you write is understandable so that others can read it. You need to make sure you build your product in a way that is usable and engaging to your target consumer while remaining within the limits of your resources. Building software is often a labour of great caring and craft by a team of dedicated developers. There's a reason why software practices are debated heatedly and passionately on online forums. Developers actually care about what they're building.
Hmm... putting pieces together, using understandable language, making a product that's engaging to your target audience, ensuring you're more or less complying with industry standards, suffusing your work with love? Wait, doesn't that sound like... writing a story?
Yes, yes it does.
The converse can be true too: writing and art can be more technical than you think. Grammar rules? Story structure and plot points? Composition rules? Perspective? Rendering light and shadows appropriately depending on the material of your surface? These are technicalities that can make or break an artistic work.
And then there are lines of work that fall exactly in between what we consider "technical" and "creative". UI/UX designers, front-end web development, HCI research, technical writing, and tons more. Why are we playing tug-of-war with each other, when so many jobs require both technical and creative skills? A quick perusal of the popular website, Clients from Hell, will show that there are just as many programmers and software developers who have very similar experiences as designers and artists. Whether freelancing or working for a less than ideal company, we often face the same struggles. People make assumptions about the quality of our skills or how much we should be charging. Interviews are painful because the standard process doesn't actually evaluate our skills correctly.
I actually don't find it surprising that many authors had or still have a gig in software development. Naomi Novik and Carol Berg are the ones that pop quickest in my head, but I've come across plenty of authors whose bios listed programming as a career they once had or still have. And now that writing and selling books independently is becoming easier, many people within the software industry are also working on a writing side-hustle. Like me. Like my peers who write poetry or fanfiction in their spare time. Like machine-learning engineer and blogger, Chip Huyen, who writes Vietnamese stories on the side.
All of these points are just a segue to what I'm really trying to get at: the entitlement that consumers have towards creators is very much present in the software field. But somehow people think this entitlement is okay for software, and that bothers me.
The things that bother me
Lately, I've been seeing a really hypocritical attitude among online creators in traditionally creative fields like writing and art. They demand their work be appreciated, taken seriously, and financially compensated, but then turn around and show the same entitlement they complain about within their consumer base towards software developers.
There's a growing sentiment on social media, one I've seen become more prominent specifically on Tumblr, not to pirate books. There are lot of people on Tumblr who are in the publishing industry, and I noticed a few viral posts going around about how damaging it is to pirate books. Maggie Stiefvater was even on one of these posts. Ironically, when I go to the blogs of users who reblog these posts, some of the most vocal anti-piracy advocates for books will have posts for how you can pirate software. As if software developers don't deserve compensation for their work. As if how well a software product does on the market wouldn't affect the company's decision to scale back production and lay off programmers. As if profit from commercial products aren't diverted to support free-tier products that anyone can use. As if there aren't legitimate open-source libre alternatives to the software they're pirating. (You know people are pirating for the lulz and not out of need, when they ignore open-source software that are often just as good, or even better, than what they're pirating.)
People see writers and artists as humans who need to pay bills and put food on the table, but then refuse to see software developers as humans who need to do the same. Instead, they conflate us with the "Big Tech" giant business overlords who are all billionaires and can't be affected by a little pilfering. Look, I don't pretend to be on a better moral standing here, but if you're going to be a bleeding heart for anti-piracy, at least make it consistent across the board.
I see a very similar attitude when we start talking about monetizing software that was once free. Again, because Tumblr is basically the only social media platform I use, I can only talk about my experience on there. Over the last few months, Tumblr has been slowly rolling out new features to generate income. All of Tumblr used to be free, then they introduced ads when Yahoo! bought them, and now they're experimenting with features that people can choose to pay for. Every time they roll out one of these features, the Tumblr user base goes wild with criticisms. How dare social media not be free? How dare the staff ask for compensation? How dare it have ads? How dare they make it harder for content-creators to run their businesses?
Again, I feel like these sentiments are fueled by ignorance for how difficult building software actually is. Like our "bookcase" commenter on Pillowfort.io, I wouldn't be surprised if most of the people who are saying these comments have absolutely little to no idea of the scale and complexity of building a social media that millions of people use. All those posts you put on your blog? Yeah, those need to be saved to a database. The fact that you can see those posts without waiting two to three minutes for the page to load? Thank you, NoSQL and CDN. The storage and infrastructure required to support a social media, even if it's one not very popular anymore like Tumblr, is still outrageous. Then of course the developers and designers and managers need to be paid. Where do the users think that money is coming from? Or do they think those people and services don't need to be paid?
I feel like the tension is coming from the notion that because software is a tool -- and in this day and age, it's a tool that supports content creation -- then the people who create software are somehow subservient to people who create content. Which is absolutely bonkers to me.
First, I already made my case about how software and creative content are both products that require a combination of technical and creative skills, and as such, people who participate in the creation of those products are all deserving of appreciation and compensation.
Secondly, I just don't understand how people fail to see that the producer-consumer relationship is a symbiotic one. Software is a product. Content creators consume that product so that they can create a different product. Other people (including software developers, actually) consume those products from content creators. We are all in a cycle of production and consumption. If writers and artists, or other types of content creators, don't want their work stolen or underappreciated or devalued or sneered at with contempt, why would they do the same to the creators of the very tools they rely upon? (For some context, the developers of Pillowfort.io are actual developers who decided they wanted to build a very specific type of social media, and even now, they are 100% user-funded. They don't rely on VCs. So yes, they can actually be considered creators.)
To further prove that creators and consumers are symbiotic, and that creators can't be the only raison d'etre of social media platforms, look at it from the consumer perspective instead. Consumers increasingly want control over their online experience. What happens if they no longer want to be on a platform that allows a certain type of content and decide to leave? Will creators remain on a platform without an audience? It's all a delicate balance. Sorry, but nobody is anybody's raison d'etre here.
I just want to reject this entitled mindset of "You need me, but I don't need you so you better do what I want." If you heard that from a friend or from a romantic partner, you'd think you're in an abusive relationship. So how is it any more appropriate saying this to people who help you in your work, whether you rely on them for your tools or for your views? How many writers have been told by so-called fans that they owe the entirety of their success to their readers? How many artists get approached by clients who want to pay them with exposure? And now people are actually saying that software devs are subservient to content creators? Are you for real? That is not a healthy producer-consumer relationship. Our relationship will be more enriched if we treated each other with respect and dignity. I can't believe I wrote 2,400 words just to get to that conclusion, because honestly, it sounds trite and mundane, and it's strange that people still need to be reminded of it.
Want to leave a comment on this post? Send me a message through my contact form or ask on Tumblr.