The Cognitive Style of Visual Studio

" Why learn a bunch of crap you’ll never need?"

Because if you know that crap, you will use it when it is most suitable.
If you never learn it you will be limited to knowledge you already got.
Some may be comfortable with that, but I see it as limiting.

One the other hand - if you need and IDE to manage the language, maybe it is time to look for another language?

I see a common decomposition of developers. Developers that write code because they love to code, and those who write code for a living, or because they have to.

This reminds me of a McDonalds training video from 1985 that I found online. It basically taught that enthusiasm is contagious, if you act excited and happy about what you are doing, you will be, and so will the people around you.

In the same respect if you love to code you will learn everything you can so that you can do it better, you will become more knowledgable and people(especially from camp 2) will rely on that knowledge.

We recently needed a new developer for our team, we interviewed people for over 4 months trying to find someone to fit the position. I intervied numerous people, and one thing I asked often was whether they ever wrote code at home after work or on the weekends. Frankly I was suprised how many people said no! Eventually we found somebody that loves to code, and know what? When I need him to do something he has a very solid foundation, he knows how memory is laid out, he knows what the IDE and the framework are doing. If he doesn’t know what it is doing he opens up ILDASM(we are a .NET shop after all) and reads through the function. I don’t have to pay him to spend days learning another vertical system because of the low level pedistal that he already sits on.

I feel sorry for people that code because they have to. As for me a day barely goes by when I don’t write code at home, and a day never goes by when I don’t learn something to support my higher learning.

The kind of people that doesnt know how to code outside the IDE usually doesnt know (or care) why his program runs slow, if it only does

void strcat (char *dest, char *src ) {
while (*dest) dest++;
while (*dest++ = *src++);
}

and they even tested it:

char str[255]; str[0] = ‘\0’;
strcat(str,“Hi “);
strcat(str,” All the people”);

My concern with IDEs is that at some point they stop being the tool and become the problem.

Jeff said:
“It’s hard to create source code that compiles cleanly on all the various FreeBSD/Linux flavors – and that’s purely at the command line!”

Which is true - there’s way too many variations to worry about.

So why add IDEs to the mix? It’s a tool - the difference between a hand saw and an electric should be time, not quality. Ideally, the end user shouldn’t be able to tell the difference. And the person who comes after you should be able to use the IDE of her choice (even if that’s Notepad) without problems.

The answer to making programs faster is not better IDE’s, it’s better libraries. If windows programming is so full of boilerplate the IDE needs to write it for your, the GUI library is at fault. You should always attack the cause, not the symptom.

Why your “Enter the Word” captcha image always have only 1 word “orange”. I mean this is not a real captcha image. Isn’t this unsafe?

Cuz it’s a windows style security captcha, it only misses the “are you sure?” message.

If anything, better tools provide faster programming. Assuming that the code that was developed faster has the same quality as the code that was developed slower, this is a good thing.

But the IDE can become the problem very easily and sometimes Visual Studio IS the problem. I remember developing MSVC applications with Visual Studio 6. I really liked the IDE, it was robust and reasonably fast (unlike its successors), but in certain situations it provided you with incredilby bad code and you had to spend quite some time to make that code better.

My favorite example are (or were) dialog classes. Each dialog gets its own class and when a dialog needs to be opened, you create the corresponding object and tell it to run. But most of the time, dialogs are shown to get some input from the user. And how did MS think we should get a hold of the data from the dialog? By accessing its member variables that were of course all public by default. Now if that isn’t bad programming, I don’t know what is. But the style was encouraged heavily.

well… all said good! ill just add me two cent rant.

notepad.exe is the most hideous/absurd/useless piece of software that came from an operating systems giant!

notepad++ comes fairly close to being a good tool for a developer (yes, it is* about developers. other people can suffice with word!). but the real power lies in legendary text editors (veterans?) like Vim and Emacs. Vim, 30 years in service and still fresh is my new most favourite tool!

Visual studio is great. Its a great debugger utility, its a great file/projects/solutions organizer. Its helpful with c#/VB for intellisense. But for a hardcore c/c++/asm developer its pretty useless. Heck you have to dive deeep deep into visual studio to actually know what command line compilers are available and how to use them. And then again, you will find them when u know what ur trying to find. MS loves to create consumer products. I wish it werent so. PowerShell? yes… but i guess its pretty late.

Am I the only one who is reminded of SmallTalk? Tight coupling of language and IDE isn’t the future, it’s the past. An interesting past, for sure.

SmallTalk’s structure is really great. I learned it after a history of almost 20 years of coding in all languages I could get my hands on, and at first I was alienated by the concept of no compiler, no source files, nothing resembling traditional development. But I gave it a chance, and it’s amazing. With modern SmallTalk implementations like Squeak, you can write fully working GUI applications without a single line of code. No, not even the usual one-line button click handlers. The development environment is up to par with commercially successful IDEs, and yet I didn’t find it annoying at all (which IDEs usually get me), because the IDE is not just tightly coupled, it /is/ the language. And if you say, hey, that’s the future, I’d gladly agree. Of course, SmallTalk has other deficiencies (although most aren’t really deficiencies, they just stem from the unusual language concept and would be called innovations today), so it didn’t prevent C from being invented/becoming popular. Still, what you describe predates even C itself.

But please hand me over my text editor for all common programming languages, including C-alikes. If it gets stored in files, I’d rather choose the text editor that fits my style of working best. I hate being forced to do things a certain way with IDEs. A really good text editor with a separate UI designer and a decent language concept for integrating both beats any IDE for all commonly used languages, IMHO.

The problem with VS 2008 is the code it generate is in the wrong layers. I hate having data access code intermingled in the UI layer.
MSFT is promoting n-tier development and their tools are not even compliant.

Moreover simple things like native data binding is missing. How can any company be so behind the times not to natively allow a UI control to bind to a data business object property? FoxPro can even do that. Not to mention VS class designer is missing visual inheritance for UI controls. Foxpro is closer to a RAD tool then VS. Moreover VS falls well short of the claims being made by Microsoft.

“the guy who put the h in hWnd”

Oh dear… is that in VB?

the guy who put the h in hWnd

All this time I was blaming Charles Simonyi - with his Hungarian Notation - for making Win32 code such an ugly, unattractive mess to read. Now we have another culprit… :slight_smile:

Thank god we are now in the era of .NET and there is no longer a need to wade through such eyesores to code for Windows.

With the rate rapid rate of change, it is very difficult to keep up with the latest tools and technologies.

Even more difficult is keeping up with what is really going on under the covers of these various tools.

At some level we all have to look a black box and say “that’s magic” – then move on.