We are the Borg. Lower your shields and surrender your ships. We will add your biological and technological distinctiveness to our own. Your culture will adapt to service us. Resistance is futile
- The Borg, Star Trek: First Contact
- Converting other life forms to Borg-controlled cyborgs via nanites
- Integrating the technologies of other cultures into the collective
- Adapting to new threats by rapidly adjusting technology
Recently, I've been thinking more about our programming languages and even us as engineers as not too dissimilar to The Borg.
Let me explain.
I've been working with .NET since it was in Beta 2 back in 2001. A platform doesn't last for nearly 20 without making some adjustments.
.NET is a beast that is hyper-aware of its context in the world, hence the movement away from being tied to Windows and towards cross-platform support. I've seen the rise of generics, extension methods, LINQ, Entity Framework, .NET Core, cross-platform support, WPF, Silverlight, Blazor, Windows Phone, Universal Windows Platform, WCF, Workflow Foundation, Razer, ML.NET, Azure Functions, JSON serialization, Document Databases, and so many other technologies.
Perhaps most notably, with the recent increase in popularity of Functional Programming, .NET has introduced the F# programming language, a functional programming language that is completely compatible with the .NET Framework. Additionally, C# and F# libraries can communicate with one another, making it possible to integrate F# into existing projects.
This ability to evolve over time and add and drop features and tools over time has made .NET an incredibly capable platform to develop with and one that continues to provide more opportunities to learn and grow over time.
It doesn't stop at our languages, we as technologists evolve over time, gaining a wider breadth of experience and growing deep specializations in key languages and aspects of frameworks.
When I became a manager, I realized that I myself was a collection of my personality and habits mixed with every way I'd seen my prior managers succeed and fail - vowing to emulate their successes and work to find mistakes of my own to make instead of repeating their own.
In fact, as technologists, with techniques like Test Driven Development, we aim to inoculate ourselves against bugs so that the same bug never recurs. On a higher level, developers often try to avoid making similar types of mistakes.
This Borg-dom of ours is not a bad thing (other than maybe not the best thing to bring up on a first date). This is a part of who we are and what makes us high quality engineers with a large array of increasingly improving tools and languages.
Keep evolving. Keep assimilating new technologies, concepts, and ideas.
Live long and prosper. We are the Borg.