Does Visual Studio Rot the Brain?
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."
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.
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.
You are in a maze of twisty little relative jumps, all alike.
No offense,
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.
Wanted: Clever sig, top $ paid, all offers considered.
I've seen this sentiment a couple of times in this article, so I choose you to respond to. Congratulations ;)
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
Matt