Has .NET destroyed the Programmer's spark?
-
I spent the past year playing around with .NET. I am not yet sold on .NET (or any runtime for that matter). I just dont think our C/C++ skills are obsolete. A vast majority of critical exciting applications will continue to be written in C++ without the runtime. .NET is not really new. We have had managed environments for 10 years now with the release of Java. Yet , Adobe Premeire is still written in C++; Flash is still an ActiveX control. If Microsoft forces us to code in VB.NET or C# to access Longhorn features (?) - then Linux will be take its place as the preferred platform for high performing desktop applications.
Vivek Rajan wrote: If Microsoft forces us to code in VB.NET or C# to access Longhorn features (?) - then Linux will be take its place as the preferred platform for high performing desktop applications. Yeah sure, and if you truly believe that I have a bridge you might be interested in buying.
"In our civilization, and under our republican form of government, intelligence is so highly honored that it is rewarded by exemption from the cares of office." - Ambrose Bierce
-
The notion that programmers should be (a) tribal and (b) competitive is really rather bizarre, to say the least. I specialize in a number of areas, but that is due to lack of time to become expert in all of them. But "competitiveness" was never a concept I had. In any case, C# in particular is a MASSIVE set of libraries; becoming expert in all of them presents the same challenges as with any large technology. We will find niches to inhabit. I will no more be a universal expert in all of C# than I am a universal expert in all of Win32. Anyone who thinks they should be part of an "elite" should re-examine their life's goals. We become experts because of what we do, not because of of some bizarre fourth-order effect such as tribalness or competitiveness. Otherwise, we are back in the high-priest-of-the-computer cults of the 1960s
I agree completely. The days of the "geeky guru" should be long gone by now. Some of us just have a job to do and that's where the focus should be, not on a particular type of technology. Technology is a tool, just as a hammer and a screwdriver are tools. A means to an end only.
"In our civilization, and under our republican form of government, intelligence is so highly honored that it is rewarded by exemption from the cares of office." - Ambrose Bierce
-
The notion that programmers should be (a) tribal and (b) competitive is really rather bizarre, to say the least. I specialize in a number of areas, but that is due to lack of time to become expert in all of them. But "competitiveness" was never a concept I had. In any case, C# in particular is a MASSIVE set of libraries; becoming expert in all of them presents the same challenges as with any large technology. We will find niches to inhabit. I will no more be a universal expert in all of C# than I am a universal expert in all of Win32. Anyone who thinks they should be part of an "elite" should re-examine their life's goals. We become experts because of what we do, not because of of some bizarre fourth-order effect such as tribalness or competitiveness. Otherwise, we are back in the high-priest-of-the-computer cults of the 1960s
Agreed, I was going to say something very similar but probably not as eloquently. In Western culture to be able to code a small amount whether in C++, C# or Formatting HTML is a basic skill to have. Everyone is becoming a programmer of some description when they learn to setup their TiVo type gadgets. Now it is a matter of extending that to see who does more or less of the programming work. The tribal thing has been bandied about a lot in the last few years, and I keep wondering if tribes truly existed today what is there life expectancy. As technology will will surely surpass each tribe. Regardz Colin J Davies The most LinkedIn CPian (that I know of anyhow) :-)
-
After chatting to a friend I got thinking: when I was learning C++ it was fun. I picked my niche (MFC) and style (GUI controls) and worked on learning everything there was to know about DCs, Windows messages and MFC internals. It was relatively simple to become an expert on a small corner of programming and feel you had that corner to yourself and your friends. You could then move on to ATL or COM, or go crazy with WTL, or dip down to SDK programming, or graphics and DirectX. Whatever. Each discipline had its own libraries, its own framework and its own techniques. Once you had mastered one you moved on to the next. The maverick WTL guys laughed at the MFC guys, who in turn fended off the ATL guys, and who all thought, in the end, the graphics programmers got the fun jobs. In a way it was almost tribal. But does .NET allow this to happen? The same class library is used by all. VB is no longer everyone's punching bag. You don't plunge into the Win32 SDK or use an undocumented system DLL to push the limits. Has .NET homogonised programming to the point where the tribal, competitive nature has been removed and the heirachy has been flattened? Is it simply a task that you share with others - many, many others - of such a wide spectrum of abilities (hard-core C++ guys down to Frontpage developers moving up) that a typical .NET programmer has lost the concept of an immediate peer group? Lost the concept of being an elite? Of having something to fight for? cheers, Chris Maunder
-
The notion that programmers should be (a) tribal and (b) competitive is really rather bizarre, to say the least. I specialize in a number of areas, but that is due to lack of time to become expert in all of them. But "competitiveness" was never a concept I had. In any case, C# in particular is a MASSIVE set of libraries; becoming expert in all of them presents the same challenges as with any large technology. We will find niches to inhabit. I will no more be a universal expert in all of C# than I am a universal expert in all of Win32. Anyone who thinks they should be part of an "elite" should re-examine their life's goals. We become experts because of what we do, not because of of some bizarre fourth-order effect such as tribalness or competitiveness. Otherwise, we are back in the high-priest-of-the-computer cults of the 1960s
I agree. The tribal competion is only created by the feeling of looking at someone's code that knows more about a particular topic than you do. Placing them figuratively on a pedastal, held firmly in place by voodoo magic. But that can only last for so long, with effort and determination anyone can enter an .NET circle of trust/knowledge and become an active contributor. That's what makes it great. Yes, I agree with the feeling of watching others "buy" an equivalent and often better soapbox racer days before the race. But the truth still stands that there are only a few that are technically qualified to work on and troubleshoot "major" malfunctions and problems with said racers. That will never die. Maybe the days of proprietary libraries that are the only source of solutions are becoming lessened because of .NET. But such a creative distrobution can only contribute more interested parties into the world of coding which we hold so dear. Just because it's readily accessible, doesn't make anyone more or less capable than they were the day before of standing out from the crowd. Leaders work for their positions, we don't bitch when someone challenges us, we step up, and raise the bar. That is all that .NET has done, given more individuals a chance to enter the game. Whether they finish in the top 3 or top 3 million is still up to them. Si vic pacem para bellum - If you want peace, prepare for war
-
The notion that programmers should be (a) tribal and (b) competitive is really rather bizarre, to say the least. I specialize in a number of areas, but that is due to lack of time to become expert in all of them. But "competitiveness" was never a concept I had. In any case, C# in particular is a MASSIVE set of libraries; becoming expert in all of them presents the same challenges as with any large technology. We will find niches to inhabit. I will no more be a universal expert in all of C# than I am a universal expert in all of Win32. Anyone who thinks they should be part of an "elite" should re-examine their life's goals. We become experts because of what we do, not because of of some bizarre fourth-order effect such as tribalness or competitiveness. Otherwise, we are back in the high-priest-of-the-computer cults of the 1960s
Joseph M. Newcomer wrote: Anyone who thinks they should be part of an "elite" should re-examine their life's goals. We become experts because of what we do, not because of of some bizarre fourth-order effect such as tribalness or competitiveness. Otherwise, we are back in the high-priest-of-the-computer cults of the 1960s Depends on your work environment. I think your situation sounds very comfortable. Try working as a contractor in an area where most of the heavy programming is done by contractors. It's tribal and competitive. If the powers that be think you aren't doing a good job then chances are you will soon be replaced. When the spagetti code hits the fan and things go wrong the less competent programmers start pointing the finger in all directions and making lots of noise while the good programmers sit down and resolve the problem. The hard part is convincing the powers that be that the noise they are hearing is BS. As member of a group of skilled programmers there is a tendancy to use lots of polymorphism, to exploit the STL to the fullest, and to carefully control the use of objects through const, private, etc which really throws the less competent programmers and makes them look stupid when they can't work out how to interoperate. Hence they do get a little pissy when they have to charge lower rates to keep their jobs. Being elite is the best way to keep the wolves at bay.
-
After chatting to a friend I got thinking: when I was learning C++ it was fun. I picked my niche (MFC) and style (GUI controls) and worked on learning everything there was to know about DCs, Windows messages and MFC internals. It was relatively simple to become an expert on a small corner of programming and feel you had that corner to yourself and your friends. You could then move on to ATL or COM, or go crazy with WTL, or dip down to SDK programming, or graphics and DirectX. Whatever. Each discipline had its own libraries, its own framework and its own techniques. Once you had mastered one you moved on to the next. The maverick WTL guys laughed at the MFC guys, who in turn fended off the ATL guys, and who all thought, in the end, the graphics programmers got the fun jobs. In a way it was almost tribal. But does .NET allow this to happen? The same class library is used by all. VB is no longer everyone's punching bag. You don't plunge into the Win32 SDK or use an undocumented system DLL to push the limits. Has .NET homogonised programming to the point where the tribal, competitive nature has been removed and the heirachy has been flattened? Is it simply a task that you share with others - many, many others - of such a wide spectrum of abilities (hard-core C++ guys down to Frontpage developers moving up) that a typical .NET programmer has lost the concept of an immediate peer group? Lost the concept of being an elite? Of having something to fight for? cheers, Chris Maunder
The same base class library is used by all in .NET, true. However, the range of libraries built on top of those classes is vast and expanding rapidly. I'm thinking in particular of Tom Miller pushing Managed DirectX. All of the arguments that fly around about managed code not being capable of producing commercial games is tripe and the next couple of years will prove that. It's just new and there aren't as many examples available as there are for C++. As everyone likes to point out, you can't build Half Life 2 on the .NET platform. So what. My favorite game of all time is "The Incredible Machine" and performance would not be an issue. I have a computer science degree. I understand the concepts behind managing memory. I just don't want to have to do it. In fact, it wouldn't be an overstatement to say that I hate C++. I don't want to have to think about managing everything. I find it boring. I didn't like it in college and I don't like it now. The differentiation in the future will be between technicians and artists. I don't really claim to be either but I'd rather fit into the latter group if I had a choice. Timothy Lee Russell http://www.anatone.net
-
After chatting to a friend I got thinking: when I was learning C++ it was fun. I picked my niche (MFC) and style (GUI controls) and worked on learning everything there was to know about DCs, Windows messages and MFC internals. It was relatively simple to become an expert on a small corner of programming and feel you had that corner to yourself and your friends. You could then move on to ATL or COM, or go crazy with WTL, or dip down to SDK programming, or graphics and DirectX. Whatever. Each discipline had its own libraries, its own framework and its own techniques. Once you had mastered one you moved on to the next. The maverick WTL guys laughed at the MFC guys, who in turn fended off the ATL guys, and who all thought, in the end, the graphics programmers got the fun jobs. In a way it was almost tribal. But does .NET allow this to happen? The same class library is used by all. VB is no longer everyone's punching bag. You don't plunge into the Win32 SDK or use an undocumented system DLL to push the limits. Has .NET homogonised programming to the point where the tribal, competitive nature has been removed and the heirachy has been flattened? Is it simply a task that you share with others - many, many others - of such a wide spectrum of abilities (hard-core C++ guys down to Frontpage developers moving up) that a typical .NET programmer has lost the concept of an immediate peer group? Lost the concept of being an elite? Of having something to fight for? cheers, Chris Maunder
I can think of plenty of corners of .NET that I have visited over the past few years but I'd hesitate to call myself an expert in any of them... remoting, interop, COM interop, ADO, web services, ASP, forms, reflection, dynamic code generation, windows services, networking... It goes on and on. The joy of it is that it can get very complex as you try to bend the framework to work in different ways. Just looking at the .NET articles on this site demonstrates the range and scope of programming in .NET.
-
Joseph M. Newcomer wrote: Anyone who thinks they should be part of an "elite" should re-examine their life's goals. We become experts because of what we do, not because of of some bizarre fourth-order effect such as tribalness or competitiveness. Otherwise, we are back in the high-priest-of-the-computer cults of the 1960s Depends on your work environment. I think your situation sounds very comfortable. Try working as a contractor in an area where most of the heavy programming is done by contractors. It's tribal and competitive. If the powers that be think you aren't doing a good job then chances are you will soon be replaced. When the spagetti code hits the fan and things go wrong the less competent programmers start pointing the finger in all directions and making lots of noise while the good programmers sit down and resolve the problem. The hard part is convincing the powers that be that the noise they are hearing is BS. As member of a group of skilled programmers there is a tendancy to use lots of polymorphism, to exploit the STL to the fullest, and to carefully control the use of objects through const, private, etc which really throws the less competent programmers and makes them look stupid when they can't work out how to interoperate. Hence they do get a little pissy when they have to charge lower rates to keep their jobs. Being elite is the best way to keep the wolves at bay.
Hmmm. For the last 19 years, I have been a contract programmer. I am still a contract programmer. The average tenure of a self-employed consultant is 2.5 years. Only those of us who can compete effectively can survive this long is to be GOOD. This does not mean that I view my world as "competitive". But I do not see myself as an "elite" in the sense the original article intended. I'm among the best of the best, but I didn't get that way be being competitive; I got that way by becoming better than I was last year. Do this long enough and you naturally become good. But considering yourself an "elite" is an unhealthy idea. This suggests that you don't want anyone else there. I endeavor to bring as many people as I can up to my level.
-
After chatting to a friend I got thinking: when I was learning C++ it was fun. I picked my niche (MFC) and style (GUI controls) and worked on learning everything there was to know about DCs, Windows messages and MFC internals. It was relatively simple to become an expert on a small corner of programming and feel you had that corner to yourself and your friends. You could then move on to ATL or COM, or go crazy with WTL, or dip down to SDK programming, or graphics and DirectX. Whatever. Each discipline had its own libraries, its own framework and its own techniques. Once you had mastered one you moved on to the next. The maverick WTL guys laughed at the MFC guys, who in turn fended off the ATL guys, and who all thought, in the end, the graphics programmers got the fun jobs. In a way it was almost tribal. But does .NET allow this to happen? The same class library is used by all. VB is no longer everyone's punching bag. You don't plunge into the Win32 SDK or use an undocumented system DLL to push the limits. Has .NET homogonised programming to the point where the tribal, competitive nature has been removed and the heirachy has been flattened? Is it simply a task that you share with others - many, many others - of such a wide spectrum of abilities (hard-core C++ guys down to Frontpage developers moving up) that a typical .NET programmer has lost the concept of an immediate peer group? Lost the concept of being an elite? Of having something to fight for? cheers, Chris Maunder
It has nothing to do with .NET. As things become developed and developed, it exceeds over most developer's talent and attention. Now, what developers can be an expert on is not the technology parts like ATL , COM or whatever but the processing concepts. Look at what is going on, microsoft released applicaiton blocks and then the enterprise library. When going inside the blocks and the enterprise library you see that things are separated according to processes not the technologies. So, also with .NET , you can be an expert on some corners. Like data access , security or caching. As we develop , we change the roadmap! Someone please help me with the enterprise library. Email/MSN : utku.kaya@infoice.com
-
After chatting to a friend I got thinking: when I was learning C++ it was fun. I picked my niche (MFC) and style (GUI controls) and worked on learning everything there was to know about DCs, Windows messages and MFC internals. It was relatively simple to become an expert on a small corner of programming and feel you had that corner to yourself and your friends. You could then move on to ATL or COM, or go crazy with WTL, or dip down to SDK programming, or graphics and DirectX. Whatever. Each discipline had its own libraries, its own framework and its own techniques. Once you had mastered one you moved on to the next. The maverick WTL guys laughed at the MFC guys, who in turn fended off the ATL guys, and who all thought, in the end, the graphics programmers got the fun jobs. In a way it was almost tribal. But does .NET allow this to happen? The same class library is used by all. VB is no longer everyone's punching bag. You don't plunge into the Win32 SDK or use an undocumented system DLL to push the limits. Has .NET homogonised programming to the point where the tribal, competitive nature has been removed and the heirachy has been flattened? Is it simply a task that you share with others - many, many others - of such a wide spectrum of abilities (hard-core C++ guys down to Frontpage developers moving up) that a typical .NET programmer has lost the concept of an immediate peer group? Lost the concept of being an elite? Of having something to fight for? cheers, Chris Maunder
Yes. VB 'programmers' can finally aspire to being able to learn a decent language (i.e. C#). I know it's not going to be easy, because most VB programmers are not very competent. But at least they have the option now. Once they learn the basics (like case-sensitivity and multi-line comments, for example) they can even learn about things like OO and reflection. But don't run before you can walk. Take your time, and learn things properly.
-
I believe so. I learned VB first, then went right into learning how to use Windows API's to do things the others in my class didn't know how to do. Then I went one step further and started learning C++. I love C++ because of its power and the ease of use when using MFC. Now a lot of my co-workers are learning and using .Net, and they're saying, "Did you know you can do this or that in .Net?", to which I generally reply, "You've always been able to do that in C++". Sometimes .Net makes me feel as though I've been cheated. I've taken all this time to learn C++, (and still feel like a novice), mainly because of the power you have over everything, only to find out that people would rather have everything taken care of for them. It's kinda like your school starting a contest to see who can build the best soapbox racer. They give you two months to put together one by hand - then a week before the competition, they start selling them at the school, saying you can just buy one instead of building your own. For all the slackers who sat around doing nothing for a month and a half have a racer better than yours and haven't really done anything. But I have to admit, when the wheels start falling off of their racers halfway through the race, or a steering wheel pops off, I say, "I knew it" in my head :). My articles www.stillwaterexpress.com BlackDice
@BlackDice: I couldn't say it any better...:) Starting about 20 years ago, soldering my first Z80 based machine together by hand, trying to find out how assembler works, moving on (I'm not going to mention the embarrassing work I did on the C64 ;) to a 8088, running everything off a single floppy, programming in pascal, then, next step, using Quick C, using a lot of inline #asm to speed my fractal generators up, then, for a while programming PLC's, finally found my way as a professional programmer at the big blue, crafting powerful tools in C, used worldwide - finally, about 5 years ago, switching to C++ and using it since ever then (of course, learned to use Java too and use it every now and then). Coming all this way and now looking at .NET makes me feel the same way as it does to you. Honestly, sometimes I try to find an answer for the question, if there is a purpose (MS?) behind all that, so that (specially new) programmes totally loose relation to what they are actually doing (in terms of underlying hardware, OS and so on). Ever thought about this?:doh:
-
The notion that programmers should be (a) tribal and (b) competitive is really rather bizarre, to say the least. I specialize in a number of areas, but that is due to lack of time to become expert in all of them. But "competitiveness" was never a concept I had. In any case, C# in particular is a MASSIVE set of libraries; becoming expert in all of them presents the same challenges as with any large technology. We will find niches to inhabit. I will no more be a universal expert in all of C# than I am a universal expert in all of Win32. Anyone who thinks they should be part of an "elite" should re-examine their life's goals. We become experts because of what we do, not because of of some bizarre fourth-order effect such as tribalness or competitiveness. Otherwise, we are back in the high-priest-of-the-computer cults of the 1960s
Competitiveness is in the human genetic makeup regardless of what area of life you look at. But remember, the most important competition is that which you do with yourself. When you quit competing with yourself you've already lost the race. My challenge to myself is that I can/must always strive to do better than what I've just done. As far as being "elite" - there is no such thing as being the best - as soon as you think you have accomplished that status, someone else will have improved upon what you have done. Humility is a student's greatest asset - and we are all students.
-
After chatting to a friend I got thinking: when I was learning C++ it was fun. I picked my niche (MFC) and style (GUI controls) and worked on learning everything there was to know about DCs, Windows messages and MFC internals. It was relatively simple to become an expert on a small corner of programming and feel you had that corner to yourself and your friends. You could then move on to ATL or COM, or go crazy with WTL, or dip down to SDK programming, or graphics and DirectX. Whatever. Each discipline had its own libraries, its own framework and its own techniques. Once you had mastered one you moved on to the next. The maverick WTL guys laughed at the MFC guys, who in turn fended off the ATL guys, and who all thought, in the end, the graphics programmers got the fun jobs. In a way it was almost tribal. But does .NET allow this to happen? The same class library is used by all. VB is no longer everyone's punching bag. You don't plunge into the Win32 SDK or use an undocumented system DLL to push the limits. Has .NET homogonised programming to the point where the tribal, competitive nature has been removed and the heirachy has been flattened? Is it simply a task that you share with others - many, many others - of such a wide spectrum of abilities (hard-core C++ guys down to Frontpage developers moving up) that a typical .NET programmer has lost the concept of an immediate peer group? Lost the concept of being an elite? Of having something to fight for? cheers, Chris Maunder
Destroyed the spark? Just the opposite. Epiphany 1: Moving from FORTRAN and Assembler on mainframes to C on Personal Computers. Thank you Kernighan and Ritchie. Epiphany 2: Moving from C to Visual C++. The object model became real, not just theory. The Microsoft development team's development of NT and vision for the future for real-time multitasking was enormously exciting. Epiphany 3: Moving from C++ to C#. Inspired by Java advantages and shortcomings, C# became the most maintainable language. And for me maintenance is the issue for long term serious work. .Net has unified the layers from ASP.Net down to ADO.Net. Now I can develop and use the same language in all layers. Those sparks excite the flames of development. And I agree with Ken Henderson's quote in his Guru's Guide to SQL Stored Procedures, XML, and HTML: "I still think C# is the best thing to happen to programming in a good long while." KH, Jan 2001. CR Roger
-
Yes. VB 'programmers' can finally aspire to being able to learn a decent language (i.e. C#). I know it's not going to be easy, because most VB programmers are not very competent. But at least they have the option now. Once they learn the basics (like case-sensitivity and multi-line comments, for example) they can even learn about things like OO and reflection. But don't run before you can walk. Take your time, and learn things properly.
Just thought I'd bash VB programmers just a little more. C# is an incredible language. It's only shortcoming that I can see is that is does not permit mulitple inheritance. That is due to the influence of VB. Microsoft didn't want to confuse those poor little heads of VB programmers with such OO thoughts. So we are left to reimplement interfaces where another inheritance would have done the job. :) CR Roger
-
After chatting to a friend I got thinking: when I was learning C++ it was fun. I picked my niche (MFC) and style (GUI controls) and worked on learning everything there was to know about DCs, Windows messages and MFC internals. It was relatively simple to become an expert on a small corner of programming and feel you had that corner to yourself and your friends. You could then move on to ATL or COM, or go crazy with WTL, or dip down to SDK programming, or graphics and DirectX. Whatever. Each discipline had its own libraries, its own framework and its own techniques. Once you had mastered one you moved on to the next. The maverick WTL guys laughed at the MFC guys, who in turn fended off the ATL guys, and who all thought, in the end, the graphics programmers got the fun jobs. In a way it was almost tribal. But does .NET allow this to happen? The same class library is used by all. VB is no longer everyone's punching bag. You don't plunge into the Win32 SDK or use an undocumented system DLL to push the limits. Has .NET homogonised programming to the point where the tribal, competitive nature has been removed and the heirachy has been flattened? Is it simply a task that you share with others - many, many others - of such a wide spectrum of abilities (hard-core C++ guys down to Frontpage developers moving up) that a typical .NET programmer has lost the concept of an immediate peer group? Lost the concept of being an elite? Of having something to fight for? cheers, Chris Maunder
The way I see it, we are all still cavemen, except nowadays, fire isn't the only thing that excites us! We still exist in a world of "Survival fo the Fittest".. even in coding.. In the days since the introduction of automatic garbage collection, what I have found is a lot fo people getitng into programming for the alleged money, and not for a love of programming. They are not interested in how many clock cycles it takes to execute a command. why should they care? They have plenty of them to play with. I say we should still worry about the inner workings of our (generated) code, because instead of us having control over our own destinies regarding our memory usage, Big Brother decides what do with it for us, and I am afraid Big Brother is Fallable, just like the rest of us. And that is what is driving the new niches in the .NET world.. These niches are developing for the few out of the careless attitudes of the multitude.. Memory Handling is still an issue. Architecture issues have moved higher up the food chain, and not all programmers are equally qualified to deal with them. Multiprocessor, and Grid development are higher on the agenda. These are the niches that we need to move into, as if we don't, we cannot be sure that someone else will.. and this is where I get back to survival of the fittest.. To propogate good programming practice to the next generation of programmers, we need to stand out from the masses as leaders of our respective tribes.. There are enough managers to worry about what the customer wants.. we need to be the ones to worry about where our trade, or craft is going; and HOW a customer gets what they want, as we are the only ones qualified to do it!