As a .NET developer (for 5+ years) some times I think I should know all about the history of the dot net and also how the web was formed.

However, I overlook the question by some justifications which the history is not necessary and it's just wasting time since I can move forward without any problems.

Poring over the history of programming is something that I have always been into. And, I would say maybe this knowledge is a pillar of software development which is crucial in order to get the maturity of programming.

Thanks for your comments but it's not enough.

Is it necessary or not? Any help would be appreciated.

  • 1
    This is a bit philosophical. Perhaps you should try to view it from a less utilitarian point of view. Why ask if the search for knowledge and historical truth is "necessary"? Isn't it a virtue in itself? Jun 29, 2020 at 4:27
  • You might not find an answer that really satisfy you
    – Miau
    Sep 29, 2020 at 15:32

3 Answers 3


This is not absolutely necessary in order to be a skillful developer. You don't need to understand how a thing evolved over time in order to know how to use it now, in its current state. Similarly, you don't need to know the history of planes to be a good airline pilot.

However, learning the history could have the following benefits:

  • You'll better understand why was such and such thing done in a way it is. Some aspects of the technology we use now are quite cryptic, and without a historical perspective, there is no way you can understand it. You can learn that this is done in a given way, but that's all.

  • You'll know what was already tried before and failed. This is important when you believe that you have a great idea, but in fact, you're just repeating what others have already tried and proved that it doesn't work.

  • You'll be a more interesting person to speak to.

Note that the same logic works for the World Wide Web, but also for the IT in general (what was IBM doing nineteen or one hundred years ago?), and for the specific technologies (why were table layouts so omnipresent ten years ago, or what were the problems with JavaScript at the era of IE6?)

  • 3
    As well as what failed, it's good to know what DID work. History isn't just filled with mistakes! Jun 29, 2020 at 5:03
  • "You'll better understand why was such and such thing done in a way it is" yes yes yes. Cryptic or not, once something becomes 'tradition', we (as a changing community) easily forget why we used it in the first place, and it is very easy for people to point at something that has always been there and declare its only there because it has always been there, completely missing the point of what it is there. I'd go so far as to say these points apply to everything in life, but I have no life, so maybe I shouldn't comment. Jun 29, 2020 at 9:53

There is an old saying:

Those who do not learn history are doomed to repeat it.

A lot of our current best practices are the results of the collective experiences our industry made in the past decades. The reason why we do many things the way we do them today is because we used to do them differently and suffered from it. If you are not aware of these problems we had to deal with, then there is a good chance that you dismiss all those new inventions (like the SOLID principles, for example), do your own thing, and end up suffering in the same way people did before you.

The tools we are using also reflect the history of best practices. Most of the features we take for granted exist because certain best practices were inconvenient to follow with the technology we had, so we created a new technology to make it easier.

  • Lots of features of C# are shortcuts for things which were annoying to do in Java. Like if you want to have proper by-the-book encapsulation in a Java class, you had to write a getter and a setter for every single variable. C# makes that much simpler with the syntax for properties.
  • Java is mostly about "What if we had C++, but without that annoying manual memory management, without unpredictable behavior when mishandling pointers and without platform interoperability issues?"
  • C++ was the answer to the question "What if C supported a proper object-oriented programming model?".
  • 1
    C++ adds a lot more than classes to C, and OOP isn't the dominant style for most modern C++. Java and C++ share classes, and C-style syntax, and that's about all. Jun 30, 2020 at 15:20
  • 3
    @Deduplicator Those were of course simplifications for rhethoric purpose. If I had explained every single improvement over the predecessors, I would have exceeded the character limit for answers.
    – Philipp
    Jun 30, 2020 at 15:25
  • Especially if you also added the downgrades. Templates are so much more than Java generics, and whether being forced to gc is an upgrade is debatable. Jun 30, 2020 at 15:52
  • @Deduplicator No, you are not going to bait me into a "which is the best programming language" debate.
    – Philipp
    Jun 30, 2020 at 15:54

Seems like an overview of .net and not just C# is missing. The .net framework is too interesting (at a technical level) to narrow it to just one of it's languages. If you want to read a compelling history of it maybe try The early history of F# by Don Syme (he is the one that added generics to .net many years ago and also the designer of F#)

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.