Super.NET Blog, Dawg

Words on the brave path towards a ubiquitous .NET client model.

Developers Win! is now Super.NET. Learn More

Culture of Excellence

This is an article on the topic of philosophy in software, business, and life.

The Final Chapter

In our final section here, we examine the ideal culture that we want to build around the philosophy that is being described here. In describing software as a craft, I made a comparison between a “one-person band” and a “jeweler,” suggesting that we should be striving for more jewelers in the world than one person bands.

In this section, I take this further to demonstrate why the jeweler model is preferred, and why it can lead to our goal as a culture of experts. Let’s first start by diving into what we mean by experts and generalists.

Experts vs. Generalists

You might have heard about the 10,000 hour rule and why it is no longer considered a valid measure of what constitutes an expert. While it has been “debunked,” I still like to refer to it here for the purposes of this discussion, which is describing an expert of a particular skill or craft.

It doesn’t matter how many hours are used. It could be 20,000 or 30,000 hours. We could call it Effort-to-Expert (E2E) to simplify the notion. What matters is that the person undertaking those hours can be considered an expert in a provided craft – in this case .NET – once they hit those hours that are required to become that expert, whatever that number might be.

Consider now that if a person is spending half of their time learning .NET and then half of their time also learning JavaScript (or PHP or GO), then they have to spend twice as much time to become an expert in either of those fields because their attention has now been divided and therefore becomes inefficient. This is the definition of a generalist for the sake of this discussion presented here.

In our mission here, what we’re aiming for is a world where those E2E hours are exclusively dedicated to .NET and its supporting ecosystem of technologies. We want the developer squarely within .NET technologies for the entirety of their development (from both a personal and product perspective). The more time they are within the same system, the faster they can achieve expert level on their own terms with this specific craft – that being .NET.

The faster they achieve expert level, the faster that they can yield their highest value not only to the ecosystem that has trained them, but to themselves as we will see in a bit.

JavaScript’s Drag

Of course, we do not live in this reality. Currently, we must split our client development time in JavaScript and HTML5 – but specifically JavaScript as it is the language that is ultimately interfacing with the HTML5 DOM. JavaScript is completely incompatible with .NET, so any work that is accomplished there cannot be leveraged in the .NET space. This means each and every developer is spending twice the amount of time:

  • Writing code
  • Testing code
  • Maintaining code
  • Fixing bugs
  • Learning and managing idiosyncrasies

And more. Essentially, all the risks that are part of learning a language have now been doubled and are in two separate systems, instead of one, thereby doubling the risk and associated cost of a solution that is required to be built using this strategy.

Fostering Innovation and Inspiration

Why is being an expert so important? Well, the first quality that comes to mind is exactly that: quality. An expert developer understands the system on a much more fundamental level, meaning they understand its quirks and deficiencies. They also understand its pitfalls but more importantly they can start using such knowledge to contribute back and innovate this system and provide even more value back the very entity that granted them expert status in the first place.

From a business perspective, an expert is a better return on investment as they produce higher quality software, one with less bugs and higher functionality. From a community perspective, an invested, motivated expert provides even greater value because they have the opportunity to further innovate this community, which in turn provides a positive feedback loop to further innovate and inspire the ecosystem in which they attained expert status.

Finding Higher Purpose

As I mentioned, I feel that the work we do here is art, which means that on a fundamental level the work we do here has higher purpose. I have to say that I like where I have seen the latest messaging from this year’s //build (2018) that positions the world as a computer.

That is a pretty inspiring and bold image, in my view.

Such a proposition reminded me that I myself once had the idea that the world speaks to us in music, and that this could be captured by monitoring music being played throughout the world at concerts and events, leading to the following questions:

  • What is this notion of resonance?
  • How is music created?
  • Does each person have a “sound”?
  • What is this “sound”?
  • Does each person represent a sound (or vice versa)?
  • Does a person share the same “sound” with their friends and family?
  • Does a person play a “song”?
  • Does an individual’s “song” resonate with particular people in the past?
  • Does a person find themselves attracted to other people with like or different sounds?
  • Does a person purchase items from other corporations/entities with a certain type of sound?
  • Does our species play a “song” collectively?
  • Can collective “notes” be tied to certain events in history?
  • Is there a “code” to music?
  • If so, is there some Higher Entity (God/Universe/Earth) talking to our species through music or vice versa?

Yeahar. Now that is the stuff right there, in my opinion. I, of course, am completely biased and oh-so-impressed with my own line of thinking. But, the point here being that we want experts to land on their own lines of reasoning that lead to big questions such as these. These big questions are what I consider “higher purpose” – ones that art is made to solve (or at least describe) and something that an expert artist can devote their lives to solving or at least contributing.

As such, the goal is to efficiently create these experts at a maximized capacity, providing the necessary support and structure to be able to attain such potential so that they can pursue such interesting and innovative (if I do say so myself) lines of thinking.

All of these big goals and ambitions mean nothing if you do not have inspired developers undertaking the required activities to contribute to the cause. Additionally, true innovation and discoveries will not occur unless you have expert developers within the .NET ecosystem that are required to continue the cycle and further innovate upon the innovation.

Finally, the more experts you have within a system, the greater the chance you have of not only opening these doors, but being able to confront what is on the other side once those doors are opened.

Conclusion

In these pages on the philosophy of the Super.NET project, I covered the important elements of being inspired, of treating software like a craft, striving for elegant simplicity, exploring the business of art, and concluding with this article where I discuss prizing a culture of excellence and innovation.

These elements all aim and strive at yielding experts in .NET who, in turn, yield higher quality back into the .NET ecosystem. This goal is opposed to what we primarily find ourselves in now, whereby we are producing .NET generalists who, in turn, yield lower quality.

By having these elements in place, we place ourselves in a position to maximize the potential for the sweet spot of having a positive feedback loop of innovation inspiring innovation.

I hope you have enjoyed this section on philosophy as much as I have enjoyed exploring it and writing it for you. If you are still along for the ride, feel free to leave some comments and discuss any thoughts you have in the comments below. Otherwise, see you out there in the game!