.NET and the death of potential
Much has been said about the failings of OOP, and how to navigate those failings. This is a think piece about closed-source and its impact on human beings.
4 years ago, I entered the workforce as an “as-junior-as-it-gets” junior software engineer. Having just taught myself to program, I approached my new team’s Angular/.NET stack with immense curiosity and drive to learn.
In the 4 years since, I’ve gotten exposure to all kinds of peers, problem-solving styles, and programming languages. For the last 2 years I’ve been a sleeper cell; an FP evanglist in a professional .NET setting — and I’ve gained some insight that I would like to share.
Closed ecosystems (.NET, Java, Apple, Android) and the jungle they bring with them have been massive contributing factors in holding back careers, organizations, and the software industry at large.
Closed ecosystems are carefully curated black holes
Microsoft, Oracle, Google, AWS, Apple all thrive on lock-in. Picking on Microsoft, if you’re developing a Windows application, you’re in for pain if you’re not using Microsoft’s IDE to write Microsoft’s language for Microsoft’s OS.
For any given system you want to create, there’s a curated solution with a Microsoft badge that’s an
Install-Package away. Web, Frontend, IoT, Services, Native Mobile, Native Desktop, Game development — there is a closed-source, Microsoft-approved solution for damn near every problem you could hope to solve.
This sounds great, and rightly so. .NET is a carefully curated black hole, one that takes “batteries-included” to its limits and holds your hand to the end of the earth. C# is only productive in Visual Studio, only usable with .NET, and only relevant on Windows. Swift is only productive on Apple hardware, only relevant for Apple hardware. Java/Kotlin (in 2021) is never productive, only relevant for Android. What happened?
Closed ecosystems are serial killers of autonomy
This black hole of problem-solving discourages creative problem-solving, discourages autonomy, and keeps you complicit in whatever direction the Microsofts want to pull you in.
If you as a person require a central authority to deem right and wrong ways to solve problems, you may not be acting from a place of authentic autonomy.
This is not meant to sound conspiratorial or persecutory, I’m sharing an observation. I have seen many engineers who numbed themselves to taking control long ago, and I wish better for them.
Resourcefulness, autonomy, self-reliance are all highly valued personality traits in life & in software, and it’s important to note that these ecosystems are a valuable resource. When a person’s resourcefulness exists completely within Visual Studio, they’re being starved of perspective, starved of exposure, and starved of potential.
As engineers, we have the collective potential for significant influence; we are the engine driving the way humans interact with the world through technology. We are in the driver’s seat of the most significant and rapid innovation the human race has ever experienced.
I encourage you to imagine with me: what if these ecosystems became fully open and collectively owned? What would that mean for technology as a whole? What would it take to get there?
If we wanted to, we could completely disrupt the economic model of the world and make all software open-source, taking collective control of the forces that shape our lives in this age of technology.
Why settle for something we have no control over? Why settle for something we didn’t choose, but fell in to? Because it’s easy. It’s not easy keeping up with a constantly changing industry. It’s not easy to work full-time and manage life outside of work in the first place, let alone throwing in the monumental expectations of the previous section. It’s easy to surrender to the status quo and defer judgment to the Microsofts of the world.
Dear Reader: Are you fulfilled in your career? I encourage you to really weigh that question. Are you moving towards your life goals, embodying your personal values, in a company that values you? If so, keep doing exactly what you’re doing. If not, act in your best interest sooner rather than later. We are uniquely positioned as engineers; we are necessities, in short supply and high demand. We have the right and the option to find exactly the environment we want. Be your own advocate and actively choose your situation, .NET or otherwise.