Bad convention of Microsoft

Currently I’m refreshing my knowledge on C#/.NET
When MS introduced .NET, I picked it up and studied it. One thing I found was that they changed very basic syntax or keywords whenever they introduced new version. For example, the character for pointer type was changed. It looked to me that they didn’t decide or finalized their design with languages/frameworks but made it public without caring confusion it would introduce.

After a while Bill Gates announced that their.NET failed and gave it up. I believed it. So, I stopped studying it. However, it was not true and they have introduced so far. Still MFC is quite alive although programmers working in business logic/financial industry would not agree.

Recently they announced that HTML/JavaScript will be the next generation of dev. environment. Well, it’s not bad. However, it sounded like that they are going to give up C/C++, C#, .NET/MFC/Win32 environment.
Probably people learned lesson from MS history. I read a few articles saying that MS was not going to abandon their existing languages/frameworks.

OK. It’s good, and they should.

However, still I see fundamental problem of Microsoft.
Instead of using well established terminology in this industry, they creates their own terminology. If their new terminology is easier to understand, there is nothing wrong. However, theirs is not clear and thus doesn’t convey what it means.

About 1 year ago, I had a chance to read WPF document, because I thought I would implement codes with .NET/WPF. I found out that they still used their own terminology there. Code-behind and what else?
In this industry there are well known words for those : Model-View-Controller or MVC pattern.
I had to read their whole document to figure out what they intended to mean.

Today, I ran into the same problem. GAC and Strongly Named Assembly.
OK. GAC (Global Assembly Cache ) is what I could guess, but I think calling it “blah-blah cache” is odd, very odd. It’s not actually cache. It is persistent there in Windows directory. It is not to be stored there for the time being for faster access to them. It is rather central repository of shared libraries.
In the case of GAC, it is OK, because at least I could guess it.
However, what about “strongly named”?
What do they mean by saying “strongly named” assembly? Is the assembly, or library ( assembly is also a new term they invented ), with its name engraved deep? What is a strong name?
It turned out that it was a digitally signed assembly.

Well, I didn’t follow the C#/C++ .NET development for a while, because I had to work on C/C++ MFC projects and Objective-C/Cocoa projects. ( It made me very busy because I had to work on many projects at the same time. I was responsible for up-to 4 Windows projects and 5~6 Mac projects. I had to give up some ideas on iPhone programs called “Video Journalist” or “Street Journalist”, and “Social Parking” program. I have heard that CNN and others introduced very similar program for iPhone/Android phones, and some Indian people in Boston or New York started a company with the “Social Parking” program. )
So, it can be my fault. However, MS should make their terminology easy to understand either by :

  • Use well adopted terminology in this industry
  • or invent their own which is easier to understand like Apple does with Cocoa

 

People who work on Windows platform only don’t seem to realize this kind of problem. However, I have worked on Unix ( SunOS and thus Solaris, HPUX, SGI Irix and also Linux ), Mac OS X, Windows. Virtue of that is I could compare differences how different group of people approach similar problems. It is also possible to see shortcoming of specific approach. It gives me a chance to think differently when I need to solve problems. Because I need to understand all of them, my understanding starts with their philosophy. Without understanding the philosophy, it is practically impossible to understand the difference, styles, architectures pushed by each of them. Once the philosophy is understood, it is not really necessary to memorize all the small details. ( This is where I got misunderstood when I had been interviewed by people who knew only one platform, one language. If I didn’t answer to their questions with the term they wanted, they seemed to think of me as “Oh, this guy didn’t know about this.” )

MS would have been successful by making their languages/frameworks hard to understand when they ruled the earth. Actually I understood their pushing .NET either as a mean to sabotage Java or steal time for programmers’ studying and writing Linux application programs.
It worked great for MS. However, right now although their market share is still amazing, it doesn’t seem to work anymore. People spend their time in developing iOS or Android apps.
About 10 years ago, it was not like this. Many programmers would not know or see the strong technology side of new cool non-MS tech or even though they saw it, they tended to say “Well, it is good, but it’s not from MS. It would not be successful.” I would like to give a credit to Steve Jobs. He successfully introduced iPhone SDK by introducing HTML/JavaScript dev plan first, saying “There is no iPhone SDK. You can just use your knowledge of web development”, and after it drew enough attention from dev. community, they announced native SDK for iPhone. And after that, the MS’s hegemony seemed to be ended.

So, please, MS. Make your words easier to understand. It doesn’t help you guys anymore.
If you want developers to jump on your platform easily, please do so.

Leave a comment