Slashdot Log In
Does Visual Studio Rot the Brain?
Posted by
ScuttleMonkey
on Wed Oct 26, 2005 05:08 PM
from the also-causes-cancer dept.
from the also-causes-cancer dept.
duffbeer703 writes "As a UNIX guy dragged kicking and screaming into the Windows world, I've never really been able to enjoy Windows programming. Charles Petzold, who is a long-time developer for DOS & Windows really laid out the reasons for me at the NYC .NET Dev group. Visual Studio and Microsoft tools force you to adopt programming techniques designed around implementation speed, not understanding or quality."
This discussion has been archived.
No new comments can be posted.
The Fine Print: The following comments are owned by whoever posted them. We are not responsible for them in any way.
Full
Abbreviated
Hidden
Loading... please wait.
yes, it does rot your brain, or at least habits. (Score:5, Interesting)
I have a good friend whose son is brilliant. He looks at anything, and instantly is taking it apart and putting it back together. In our technical day and age, he has tinkered with computers a LOT and has shown great acumen in troubleshooting and configuring not only Windows, but putting together a network.
I tried to turn him on to coding, but he went out and got Visual Studio, and went off on his own. He came back and proudly demonstrated his various creations.
While I liked his creativity, it was evident his depth of grasp of the workings of programming were as deep as VS allowed him. Cute screens with cute input buttons and cute input boxes. But nothing in the sense of real code.
He is now taking some programming classes, and while he is doing well, they have begun java, and it has totally thrown him. He's getting back on his feet, but his initial foray into VS gave him some bad (and some wrong) insights into programming and languages.
His reaction so far to having to actually write and understand code is that it is stupid. I think that's a dangerous culture to cultivate in an IT universe. He is doing well in his class but he constantly wants to go back and do the drag and drop thing.
who's fault is that? (Score:5, Interesting)
There's a reason we start with printf("Hello World."); and not with dragging a text box into a big white rectangle.
Parent
Re:who's fault is that? (Score:5, Insightful)
Why? They are both levels of abstraction. I don't think too many of us programmers got our start in assembly. I personally started with BASIC on a 286. An abstracted language whose major feature was ease of use. I don't think there is a fundemental difference other than visual abstraction is used to easily create visual applications and textual abstraction was used back in the day to generate textual programs.
Parent
Re:who's fault is that? (Score:5, Insightful)
You're definitely right, but I think that starting out with the high-level languages is a good balance between abstraction and being able to have some powerful control. Start too high (Visual Studio, etc) and you risk not being able to easily understand what's really going on. Start too low (ASM) and you may be too frustrated to continue... or may not be able to understand 'the big picture' when it comes to programming.
Parent
Re:who's fault is that? (Score:5, Funny)
Parent
Re:who's fault is that? (Score:5, Funny)
When I was a kid, I had to write the Hello World program using only 0's.
Parent
Re:who's fault is that? (Score:5, Funny)
I banged two rocks together and cousin Ugg just "got it".
Parent
Re:who's fault is that? (Score:5, Funny)
--
MP
Parent
Re:who's fault is that? (Score:5, Funny)
In my day, we had to create a religion that induced the masses to spend millions of man-hours moving stones just to get a working calendar!
Parent
Creation of the loop structure... (Score:5, Funny)
Parent
Re:who's fault is that? (Score:5, Insightful)
Then start them out with "The Incredible Machine" or some other mousetrap-alike where the objective is to build the most complex functioning thing possible with weird widgets provided to the operator. You give them a taste for making something without giving them any kind of tool that will force bad habits upon them. If they go off and end up using Visual Studio for GUI programming, well, that will happen to some, but others may never see the GUI programming stuff and go straight into building complex machines using letters and syntax instead of using drag and drop.
I had other vast, varied tools at my disposal. I had a LOGO program. I had ROM Basic, GW Basic, Quick Basic, and Power Basic. I had Borland C/C++ for DOS. I had a Texas Instruments calculator and a graphlink cable. I had gcc. I don't doubt that my Basic programming experience caused problems for when I tried to move on to C, but at least I wasn't thinking that making fancy dialogue boxes was programming compared to writing the back end of something.
I started with MS-DOS, but Microsoft's real hard push for their GUI hit in 1993, when I was thirteen. I found that after years of GUI, when I started playing with programming, being able to control things that I had done myself through the command line was insanely cool. It was like opening the hood of a car or taking the case off of a complex electronic device. I felt like I was gaining more mastery over the computer itself, rather than just using it. I'd suspect that many kids that are the 'take it apart and find out why' type would feel similarly.
Parent
Apples and Oranges (Score:5, Insightful)
Visual Studio is not a teaching aid. It's (just about) a programming toolkit with some bolted on frameworks. You will create rubbish if you do not know what you are doing. Try thowing eclipse at him, he would have the same problem.
Having said that, I hate having to program with Visual Studio. It's like a great big book of usefull spells, but they are written in invisble ink
Parent
Re:yes, it does rot your brain, or at least habits (Score:5, Insightful)
Force? noone's forcing me to use the RAD tools; I use VS primarily as an editor with intellisense and solution/project file management; no more, nor less. FUD.
- Oisin
Parent
Re:yes, it does rot your brain, or at least habits (Score:5, Interesting)
But, taking stuff apart doesn't make you brilliant. Most of us geeks took things apart when we were kids. People around us said the same things you're saying about so and so's kid. The kid is stumped with java because he's having to go beyond instant gratification and actually learn something. There is a fundamental difference between just discovering random facts and learning ideas that have depth. Just because he can play video games or memorize oodles of random computer facts, or fankly, even put a network together, doesn't mean much. I'm not saying the kid isn't smart, most geeks are "smart", few are brilliant.
It's good for him to struggle. He'll find out if he's really brilliant. His response that the ideas are stupid is just his ego combined with youth. Does he think math is stupid too?
My point is that visual studio isn't the problem. The problem is thinking that mucking about with computers is equivalent to learning difficult things. Whipping up some crappy kid-app in Visual Basic is about as difficult as Whipping up some crappy speakers in woodshop. It no more makes you a programmer, or dare I say, a computer scientist, than building the crappy speaker makes you an acoustic engineer.
The kids problem isn't visual studio, the kids problem is that the stuff he's done requires tinkering and doing but no hard thinking. Now he's being forced to think and it sounds like he's finding out that it's not quite as easy as just doing. That's good!
ymmv.
Parent
Re:yes, it does rot your brain, or at least habits (Score:5, Funny)
Shoulda started with Perl. Everyone knows Perl is the best language for learning quality programming skills.
Parent
Re:yes, it does rot your brain, or at least habits (Score:5, Insightful)
As deep as VS "allowed" him? WTF are you talking about? I've used VS every workday for 7 years. I gather it has some sort of functions for making cute screens with buttons on them? I wouldn't know, I've never written a gui app.
He's a kid. He wanted to make something he thought was cool; and he did, good for him. It makes sense he went for the drag-together an EZ-GUI stuff; He made something that looked cool and didn't do much. I'm guessing "looks cool" was his design target.
Heck, I first got into programing (time to date myself) writing BASIC programs to draw maps of D&D dungeons. 99% of what I learned in my first months of coding was the details of the particular extended ascii set my computer suported. I learned useless trivia and wrote lousy code in pusuit of eye-candy. But eventually, I wanted to move a marker around the dungeon, then I wanted to keep track of what was in different rooms. Today I make a fairly nice living writing complex C++ without a bit of eye-candy anywhere near it.
In short, leave the kid alone. Soon enough he'll want those cute buttons to do real stuff. If adults can be kept from eliminating his fun by insisting that "real" programs can't look good, he'll be a crackerjack coder in no time.
Parent
Re:yes, it does rot your brain, or at least habits (Score:5, Insightful)
Oh Jeez, get over yourself.
You've completely ignored the subtleties of a choice made by an intelligent mind when presented with different ways to do things. I find it fascinating he went right to the GUI and started developing code that way. Instead, you're peeved he didn't start figuring out what include files to use to do a printf() to a console.
Maybe the path he blazes will be the next paradigm. History is full of people making huge leaps in technology by finding easier ways to do things that interested them, but were against the norm.
Viewed from this perspective, I think you should step off and let him learn what he wants how he wants, and not in a way that pleases you.
Parent
Re:Shut up DINOSAUR (Score:5, Insightful)
If the first tool you introduce someone too teaches people, particularly bright kids, not to think about...
Parent
Re:Shut up DINOSAUR (Score:5, Insightful)
It's a friggin kid we're talking about. What did you do when you were programming as a kid, if you did ? I know i tried to have the computer display fancy stuff, in stupid ways. I wrote some sort of "demos" consisting of loops likeor composed some sort of animations in an ascii 8x8 grid because i didn't know of sprites and all the stuff. That was probably stupid, utterly useless, and definitely not the good tool for the job. I should have been using assembly at the time, and some sort of backbuffer instead of calling cls... But what the heck, that's what made me love programming. At the time i remember i tried to join some computer clubs, but they all were doing some things i thought were utterly boring, like learning how to use spreadsheets, or having programs "behave in an intelligent way" (that is, validating input...).
They were right, validating input is more than necessary in even the most stupid program, and using a spreadsheet instead of making a custom program yourself for each formula is certainly a good idea. But it wasn't fancy, and was very boring to do... Let this kid alone, he'll understand soon enough that you can certainly make nice looking programs with vs, but you have to learn programming to have them do anything usefull. And if he's really interested, he'll learn that too. And i'll congrat him because frankly, when i was a kid learning to program 8 bit computers was certainly a fun thing to do, but now with all the stuff you have to know, the fact that you can only access the computer via stupid apis that you have to learn, you have to be really interested by it to find it amusing. Computers are boring nowadays, seriously...
Parent
Re:yes, it does rot your brain, or at least habits (Score:5, Insightful)
It is too bad that the
Parent
Help! (Score:5, Funny)
Breakpoint and resume coding (Score:5, Interesting)
Get on Mac OS X, and start coding using Xcode. You may drool once you find the Fix & Continue (ZeroLink) feature.
Parent
Re:Breakpoint and resume coding (Score:5, Informative)
Parent
Great quotes (Score:5, Interesting)
> This bothered me because Visual Basic was treating a
> program not as a complete coherent document,
> but as little snippets of code attached to visual objects.
So true. You can't "read" the program, instead, you can only leap about from handler to handler. And another good point when talking about a XAML demo:
> It was very, very cool, except that the 12 tick marks
> of the clock were implemented in 12 virtually identical chunks of XAML.
I'm not sure about this one - seems that one of the few times that duplicated code is OK is when it's in generated code; i.e., in a JavaCC-generated parser. For everything else, there's CPD, the Copy/Paste Detector [sourceforge.net].
Force? (Score:5, Interesting)
Visual Studio (VS newer than VS 6, up to and including VS 2005) is in the top 3 products MS has ever produced (behind MS Office and MS SQL Server). Powerful, flexible, and yes, it allows for very rapid development.
Microsoft DEVELOPER tools are good (Score:5, Insightful)
1) Hardware (keyboards, mice,
2) Developer tools
I find Microsoft tools like VS.net and even some of their languages (C#) to be surprisingly good.
Granted, I prefer Open Source most of the time, but when forced to use certain Microsoft things like Natural Keyboards or Visual Studio, I kind of like them.
I'm sure I'll get modded down for supporting them, but hey I'm just being honest.
Re:Microsoft DEVELOPER tools are good (Score:5, Funny)
This is Slashdot. You would have been modded down for supporting them, but you always get mod points for pointing out that you would be modded down.
Now I'm going to be modded down for not being very funny.
Parent
Re:Microsoft DEVELOPER tools are good (Score:5, Insightful)
Parent
Re:Microsoft DEVELOPER tools are good (Score:5, Insightful)
The authors gripes about not being able to see the code in it's entirety are complete BS. All you have to do is expand the conveniently hidden setup and autogenerated code and you can read to your hearts content. The default is to hide most of that code because frankly, it's insignificant. Do you really need to see the declarations for the 250 objects on your form? Do you really need to see the wrappers around database drivers? No and No.
Are you going to claim that a mechanic who uses the computer in your car to tell him you have a bad sparkplug is a bad mechanic? Or are you going to be quietly grateful that he was able to fix your problem for $50 in 1/2 an hour instead of the old school "hard core" method of slowly replacing part after part until you figure out which was the broken one, which costs you lots of time and money?
Parent
Re:Microsoft DEVELOPER tools are good (Score:5, Funny)
Since this is /., I'm going to denounce anyone who buys pre-made cars instead of smelting and molding the steel themselves. Let's face it, those who don't design and implement the whole engine and drivetrain, on a lathe, by hand, are girly men at best. Furthermore, if you ever did use a mechanic, I'm going to question your worth as a human being and mock your nickname. In this case, I'll observe that the parent is named "captain craptacular," which hardly inspires confidence.
Parent
Indeed it does! (Score:5, Funny)
Nonsense, it's just another tool! (Score:5, Insightful)
Does it? Not sure. But from experience I can say: (Score:5, Insightful)
Re:Does it? Not sure. But from experience I can sa (Score:5, Funny)
Parent
Re:Does it? Not sure. But from experience I can sa (Score:5, Insightful)
Parent
Re:Does it? Not sure. But from experience I can sa (Score:5, Insightful)
IDEs can definitely help you understand the code faster, however. Take Eclipse, for example:
Granted, I could understand the code without an IDE, but it's going to take me longer. I don't know if you were being sarcastic (I'm a little tired, so not so mentally keen), but people who use IDEs should not be written off as the equivalent of assembly line operators...
- shadowmatter
Parent
Disconnected from the environment (Score:5, Interesting)
So... yeah I can see where programmer's eye-candy would be a major distraction for a programmer just getting started. But "back in the day" useful code could be written in Basic and C... wasn't complex or beautiful but served some purpose. In today's visual environments, it's not too hard to imagine kids getting REALLY bored with making meaningless code that doesn't look like the apps they are accustomed to running... but it's that meaningless code that really drives apps right?
Maybe I'm missing something important (and I probably am) but my initial impressions of graphical RAD tools are that it's a lot of flash and bluster but doesn't inspire a coder to write code.
Re:Disconnected from the environment (Score:5, Insightful)
Would you freak out with something like (e.g.) a Pentium II that converts all the CISC instructions to RISC microcode internally without being able to see it? Just curious...
Parent
For those of us who don't care (Score:5, Informative)
Death to Code Generation (Score:5, Insightful)
Note that there are two sorts: the kind you never edit and the kind you have to edit. I love compilers, as they generate machine code so well that you never should have to look at it. But programs that generate source code or, even worse, documentation, are things I revile. They let an amateur get quick results, but at a drastic reduction in long-term maintainability. As Martin Fowler says, "Any fool can write code that a computer can understand. Good programmers write code that humans can understand."
What about Eclipse? (Score:5, Informative)
Assuming that you code alone... (Score:5, Insightful)
I just finished a project where a co-worker of mine worked on the business logic objects for a system and I did the presentation and screen flow. Yeah, I could've fished through his JavaDocs and designs. That would have added 10-30 minutes everytime I had to figure out a new call to one of his libraries. Instead, I could hit "." in Eclipse, pull up the methods and select the one that I needed. In the future, other folks on my team will need to support that code. Being able to receive documentation from within the editor will make their jobs much easier.
It's interesting that the project that author most enjoyed was a C program he wrote for his own amusement. Unfortunately, most of the coding folks do for money involves working with others. While working individually on a project is more fun, being able to do so is typically a luxury.
Huh? (Score:5, Insightful)
Re:Huh? (Score:5, Interesting)
Some background first: I dropped out of University for two reasons, first I wasn't sure if I wanted to focus on software development or network administration and I wanted some industry experience. Second, there were far too many people there who could memorize textbooks and regurgitate the examples, and hence go exceedingly well in examinations which seemed to only test this attribute; yet who could not understand yet explain the concepts being "taught".
That group I labelled, through its abundance of occurrances, the Visual Basic programmers. Using the term "programmers" loosely, of course. They could paint applications really well (drag & drop little GUI shit around in Visual Studio and come up with something tangible) but you didn't even have to take them outside of Visual Studio for them to be well out of their depth (which they obviously are when you do). Just ask them to explain what any of the Visual Studio-generated code does. They have no freaking idea what their code does, they just know if they drag this here and drop that there and click here and type that, that they get foo.
Now, in a culture when IT professionals are treated less than dirt, particularly by those in management, the focus is on generating Maggi programs. You know, the classic 2-minute noodles. Tangible results ASAP, don't care that the weird geeky stuff looks like spaghetti and the cook can't tell you what its made of because they simply don't know. All they had to do was drag some shit out of a package and drop it into a saucepan and stir for a little bit.
Nobody denies that Visual Studio has features that are useful. What is under scrutiny here is the fact that it also has features, and there's some crossover, that enable complete dimwits to produce the kind of results management is looking for in the time they are looking for, leaving those who can actually design and develop software looking incompetent. The PHB doesn't care that the real hacker's design is far superior and the implementation robust, it took 4 weeks longer (because they understood the entire problem and handled all the cases) and dammit the client wants it NOW, who cares that its crap - that's just a small detail that can be fixed later - potentially for more money. This then forms a culture that a particular breed of "programmer" - namely those that can only use Microsoft tools and work solely on the Microsoft platform - are better and that Microsoft solutions are better; not because they are but simply because more quality people and alternative solutions are shut down before their full benefits are realised, because of the impetus on getting a quick buck and must have things NOW.
I work with someone who only last week could not comprehend exactly how they were going to go about doing a particular job as Visual Studio was not installed on the server. The job involved editing some XML config files and doing some minor Python programming. Visual Studio by default has absolutely zero Python support (Activestate and presumably others have $$$ plugins for it, but that's not the point). That particular sentiment came the day after I installed Vim (with the Cream suite - I do that on Windoze boxes to stop Windoze gumbies whining about the default keybindings - another symptom of "cannot cope outside the box") while they watched on, and we did some of the work together. The whole "outside the box" thing annoys me because this VB programmer culture festers this idea that those who do it the Microsoft Way are somehow immune to the requirement to be flexible. Case in point, there's no requirement for them to "put up with" using something other than Visual Studio - yet you take someone with Unix experience and the onus *is* on them to adapt. I know its because Unix people are far more flexible and generally smarter and more capable, but in reality it translates to our skills being taken for granted
Parent
Overgeneralization (Score:5, Funny)
Counterpoints (Score:5, Insightful)
Second, any code editor is a tool. In the end, they are a fancy way to create text files to compile into binary. There are people who use VS to write code without understanding what it's doing behind the scenes, just like there are people who drive without knowing how an internal combustion engine works.
Finally, there are people who hand-write all their code, waste alot of time, and still write bad code.
Evolution of Development (Score:5, Interesting)
Visual Basic back in 1992 was in of itself a massive advance for this type of programming and programming understanding. Look at all the 1000s of VB applications from this time period by people that truly had very little coding experience.
However, some of the VB programs from this time were quite effective.
I think the biggest injustice to programming and the programming community as a whole, is the lack of UI guidelines, and understanding usability and User Interaction and User Flow.
How many times have you grabbed a GOOD program, with brillant LOW LEVEL coded features, but the interface to the application work about as well as a broken pay phone.
So sure VS can remove the user from 'low level coding', but this is NOT always a bad thing.
As development EVOLVES, there is NO REASON with the AI in the development tools and the AI in the code produced by these development tools should not be used. Why should a person in the 21st century truly have to fully understand memory allocation, advanced recursion, or even see program past advanced event handlers, as that is what programs ARE - event handlers...
Why do we have to beat down development tools just because they remove the developer from having to DO THINGS THE Tool or Compiler should DO FOR YOU? This is what makes advanced devleopment and the progression of better applications bloom.
Go back to the VB of 1992, it was a major eplosion for application availability. Sure some of the programs were crap and from people that had no idea of coding, but there were also serious developers that didn't want to take time to screw with all the crap that a developer in THIS DAY and AGE should not have to do.
I welcome development tools advancement. Sure there is some fundamental coding knowledge that everyone should know, but you can't blame these tools for this.
I could have the same arguments about many projects in the Open Source world, they are brilliant, but since the coders have little undertsanding of usability or UI guidelines, they applications are virtually worthless to anyone that is not a geek.
I'm not even arguing VS is the best set of tools out there, Borland still makes some really great development environments. I still like Delphi, and am amazed of how tight the code it produces, and yet how much it DOES FOR ME, even if I do know how to do the things it is doing for me is irrelevant.
We not only need to support development that is beyond a text editor and command line compiler, but we also need to support development tools that try to structure and help users with usability for the people that will be using the applications. PERIOD.
VS and Borland products are pretty good, but they could even be better - imagine a development environment that gives a flag when it notices a break in usability, or gives a compile warning after it 'intellectually' sees the appliction has many inconsistencies that would confuse the user.
Additionally, VS is even dated for what the new Microsoft Development and technologies are introducing. VS2005 barely touches the abilities of future Windows development - that is why the 'Expression' like of products will be used to augment the UI and User experiene for VS applications.
Give the world a couple of years, and the foundations of 'native' understanding being built into the next generation of Windows Vista, WILL change not only the user experience, but the development world. Leapfrogging concepts of today.
Go look up some of the concepts Microsoft has introduced and HAS that are often overlooked, go do a search on the last PDC. There are things in Vista that move development to a new level of understanding and functionality for not only developers, but what the users will start to see in the next 5 years.
It is like one of the brains behind the XAML and XPS systems in
Rot the brain? (Score:5, Funny)
In either case, something drastic is going to happen. Tread lightly.
Re:Top Down / Bottom Up (Score:5, Interesting)
Eclipse does something like IntelliSense, but it does it correctly, assuming his description of IntelliSense is correct.
Basically, Eclipse doesn't do anything while you're typing. If you type out "id" and a space, it stays "id" with a space after it. In fact, Eclipse won't do anything if you just type "id." It will only start offering suggestions after you enter a period to access an object's properties and methods. Even then, if you're typing fast enough, it won't pop up anything. If you pause, it will display a list, but it won't alter your typing unless you press enter. So if you have a new object, and you decide it needs an "id" field, which you haven't defined yet, you can simply do "object.id = foo;" and Eclipse won't replace "id" with anything. (It will, however, flag it as an error, since "id" isn't defined in this example.)
Now there's another feature of Eclipse's implementation: pressing Control-Space anywhere a Java identifier can go will bring up a list of identifiers that can fit there. (This includes things like in doc comments.) So if you don't want to type out "ExcessivelyLongInterfaceNameInterface," you can just type "E" and hit Control-Space, and up will pop a list of everything that starts with "E." However, it will NEVER replace what you're typing, until you press enter. Continuing to type will further refine the list, so if you type "x" after popping on the list above, it'll further refine the list to things that begin with "Ex."
This gives you all the power of Microsoft's IntelliSense (something I missed when going from Visual J++ to Java 1.2 all those years ago), but causes none of the "don't do that for me" problems the author of the article was complaining about.
I don't think his complaint was the concept of code assistance, it was Microsoft's implementation.
Parent
Re:Visual Studio = Vendor Lock in (Score:5, Insightful)
I fail to see how providing RAD tools in VS is somehow a shortcoming. Isn't that like saying you should rip most of the features out of Emacs because when you have to use another editor they won't be there anymore?
Anyone who switches from VC to GCC and expects #import to work has bigger problems to worry about. Being a muppet, for one.
Parent