Monday, November 24, 2008

Visual Studio's IDE made transparent

Perhaps some day, in the not to distant future, I will retire. Then I may become a CIS professor so I have an arena to preach to young programmers about the evils of Visual Studio. I will make Visual Studio a case study in how “NOT” to develop software. After all Microsoft has given us so much material to work with from system analysis, coding practices to implementation we should find a good use for Visual Studio somehow since obviously a productive development environment is NOT one of them.

One of the features of Visual Studio as told by Microsoft is the single IDE. The idea behind this is we have one interface or development environment which we can create different types of applications Mobile, Web and Windows using one of the languages Microsoft provides VB.NET, C#, C++. (As pathetic as it is, a true data centric language doesn’t exist in Visual Studio and it is only a matter of time before C++ is gone as well).

On the surface a single IDE appears to be a great idea, but like most things Microsoft does it was screwed up along the way. Since Microsoft failed in developing a solid N-TIER framework for VS most of the business layer code really can not be shared in an “elegant” fashion across these applications. Furthermore the UI layer obviously can not be shared since Microsoft created separation between their API wrappers otherwise known as the .BLOAT FRAMEWORK. For example a webform textbox control is contained in a completely different namespace from the winform textbox control, personally I would fire the mental midget that designed that pattern. It would have made sense to have a single control namespace then based on the environment branch to the appropriate subclass for the actual implementation. If Microsoft would have used that bit of logic then .NET may start to resemble a "real" framework.

So in actuality what Microsoft gave us in providing a single IDE is an over bloated IDE that hinders our productivity. More importantly this IDE is forcing all of our custom applications to be tied BY THE DEVELOPMENT TOOL to the .BLOAT framework which means they are tied to the Windows OS. My friends, that is the real purpose behind the IDE maintaining the Windows Monopoly. The IDE is providing no real development benefit only preceived benefit.

If Microsoft really thought about this, there are 2 different solutions which would have harnessed the power of a single IDE.

1) Create a “true” N-TIER framework that would have made our UI and business layers truly portable across the web, windows or mobile platform from a single set of source. Since Microsoft has never written a “true framework”, they are merely creating class wrappers over the existing OS API and are spinning this nonsense as the .NET/BLOAT framework, this will never happen.

2) Store the basic UI information from the form designer as meta data along with the UI code, business layer code etc. Then at compile time give us the option to select the type of application we want to generate. Visual studio should generate the code and compile the application. While this is not the “best” option, it would have worked better then what we currently have since we could use the same source to generate a Web, Winform or Mobile app.

The bottom line is having a single IDE and providing no benefit is a waste of time. Furthermore, for Microsoft, Soma and the boys to spend the resources to migrate the Visual Studio IDE to WPF for no apparent reason other then showcasing how much symbolic "bloat" i meant flash they can add to VS defies logic; given the amount of bugs in Visual Studio, lack of a data centric language (or any serious data access technology that works) and broken intellisense in C++.

If Soma, GU and Microsoft are incapable or too incompentent, take your pick, to implement a single IDE across platforms and languages so it is useful for developers we would be better off with a single IDE for each compiler so the IDE bloat, for a language we are not even dealing with, is not getting in our way! If you give this some thought this is exactly what we had in the 6.0 days and it worked!

I suppose in the world of Microsoft protecting their Windows Monopoly is all that matters. They rather hinder developers by destroying products and paradigms that worked instead of developing software development environments or an OS for that matter (remember Vista) that can stand on their own merit.

Until next time


Steven B said...

Mark, It can't be any fun getting your comments flamed on the blogs and boards. Your arguments are more then valid. The people flaming you are clueless developers. Don't get discouraged serious developers appreciate your time.


Anonymous said...

Again, your arguments are totally invalid. Using a "single IDE" as you call it, totally ignores the fact that each platform has completely different requisites. On a windows app, you normally have state and consider a local network (a department or a company). On the other hand, developing for the web, has different premises (no state, consider latency and bandwidth). Mobile development introduces another set of limitations (screen size, data size).

Considering that .NET is protecting the Windows ecosysytem maybe true, but what about VB? Was it multi-platform? I think .NET (with Mono) is more multi-platform than VB or VFP ever were.

Mark Gordon said...

If each language or platform requires a seperate IDE as you say then why bloat VS with a bunch of features we DON'T need? Simply give each product it's own environment, wait we had that in the 6.0 era and surprisingly it worked!

On your VFP statement, VFP is fully cross platform the issue was not a technical but legal due to the license agreement. Trying running a VS application the comsumes .NET on linux good luck with that one. Research before posting works every time!