Author Topic: Why we don’t hire .NET programmers  (Read 3267 times)

0 Members and 1 Guest are viewing this topic.

Jeff H

  • Needs a day job
  • Posts: 6150

Glenn R

  • Guest
Re: Why we don’t hire .NET programmers
« Reply #1 on: March 28, 2011, 04:43:17 PM »
I wholeheartedly agree with the vitriol expressed by commenters - personally, I love .NET as a framework and the C# language because I like curly braces and semi-colons, but that's just me.

Having programmed in all the traditional languages for AutoCAD (autoLisp, VBA, C++) and now .NET (C#) and Visual Studio, I can honestly say it gives the best balance of power, flexibility and ease of use. Individuals that are skilled can use the tools to a high degree of proficiency - but that's true for any tool usage; be it virtual or real-world tools.

dgorsman

  • Water Moccasin
  • Posts: 2437
Re: Why we don’t hire .NET programmers
« Reply #2 on: March 28, 2011, 06:18:03 PM »
While I suppose being able to write low-level optimized-to-the-nuts code is good, how many programmers have time to do that on a day-to-day basis for *everything*?  What happens when the project changes direction (like that never happens) and that custom library that took a month to create is now useless?  And how much investment does it take to get new employees up to speed on all the ins and outs of those custom libraries?  Workable NOW beats perfect sometime in the future especially in the yearly release cycle.

I do kinda get the gist of people trying to memorize a few button clicks to do the job.  Those people are in every field, not just programming, though.
If you are going to fly by the seat of your pants, expect friction burns.

try {GreatPower;}
   catch (notResponsible)
      {NextTime(PlanAhead);}
   finally
      {MasterBasics;}

JCTER

  • Guest
Re: Why we don’t hire .NET programmers
« Reply #3 on: March 28, 2011, 06:41:51 PM »
I found this article to be extremely heart warming, oddly enough.

I'm used to getting my fingers into the application.

I run Autocad commands 99% or more from the command line.  Changing layers and visual styles is about the only thing i use a GUI for.

I like calling up SYSVARs.  I like being able to enter LISP strings at the command prompt to save me the minute amount of energy required to pick up my calculator and push buttons, or call up calc.exe.  I like writing LISP in the extremely minute amount of ability I have, compared to the mental giants here.  I feel like when I am directly manipulating things in such a manner, that I am in the driver seat.  The software listens to -me- and that's it.  There is no middle man, there is no filter, there is game of "Telephone" where I put a message in the beginning and just pray that it comes out the other end accurately, with no clue what it did in between those two steps.

I think that McDonalds simile put into words what I was never able to really understand about trying to learn Visual C#  .NET... I never understood -why- I had to use this Visual Studio software.  I'm not saying I should be able to use nothing but notepad.exe to write my code, but when that's possible, I know that my input is not "changing hands" so much between me and the software.

I hate all the variables and "unknowns" put in place between me and the end product.  Though I -love- the McDonalds simile, my initial impression was more likened to modern highly computerized sports cars in comparison to hot rods of older days.  It used to be that simple mechanical items were controlled by springs and vacuum lines and butterfly valves and other simple processes.  You could physically put your hand to that butterfly valve and mess with it.  You could modify your vehicle and customize it however you wanted.  You could easily modify your exhaust to tune it however you wanted, whether it was for noise or flow or both.  You could change your air intake location by simply moving a hose or box or hell, punching a hole in the hood and putting a spacer under it to raise it up through the hole for a redneck-ram-air.  

Nowadays the slightest little modification will cause any number of $150-$400 sensors to scream bloody murder, modify your fuel injectors to flood your cylinders, cake up the walls, freeze a piston in the goop, toss the O2 sensor in the exhaust manifold through a loop, cause it to freeze up - all because there is a "middle man computer" that is controlling all these things the way -it- thinks they -should- be run, and you didn't consort with the almighty computer and now you have to have a computer expert diagnose your vehicle.  There is no room for redneck hot rodders or Do-It-Yourself car modders like there used to be on older vehicles.  But people still managed to haul ass before computers!

Sadly it seems software giants like Microsoft and Autodesk want it that way, or at best, don't care that it ends up that way.

vegbruiser

  • Guest
Re: Why we don’t hire .NET programmers
« Reply #4 on: March 29, 2011, 05:07:52 AM »
That's a lot of comments right there.. Reminds me of http://reddit.com ;)

Having joined the programming party fairly late, I can kind of see his point, but on the other hand, it smacks a little of eliteism - after all, why should I have to learn the ins and outs of the non .NET languages when the program I'm coding for makes easy use of the .NET environment.

That said, learning another language might have prevented some of the daft posts I've made on here.

JCTER

  • Guest
Re: Why we don’t hire .NET programmers
« Reply #5 on: March 29, 2011, 08:46:30 AM »
It is elitist, I agree.  Then again his whole post starts off by bragging about his programmers and how they spend so many manhours seeking out the perfect candidates who will be the best at what they want them to do.  His post was mostly a bit of ego masturbation about how much he loves what he does, his results, and the people that helped him get there, and a common thread in how they got there. 

It's elitist, but I can't blame him for appreciating his specialty tradesmen over your run of the mill tradesmen.  Your typical auto mechanic may keep hundreds of vehicles running and on the road but the crew for NASCAR keeps one REALLY AWESOME car on the fast track.  Both are admirable, honorable, and respectful paths in life.  But you have to admit that the NASCAR crew gets a little more bragging rights.

Kerry

  • Mesozoic relic
  • Seagull
  • Posts: 11654
  • class keyThumper<T>:ILazy<T>
Re: Why we don’t hire .NET programmers
« Reply #6 on: March 29, 2011, 09:16:43 AM »

I'd say not elitist
 ... seems more like irrational prejudice.


but heh, thats just my opinion.
kdub, kdub_nz in other timelines.
Perfection is not optional.
Everything will work just as you expect it to, unless your expectations are incorrect.
Discipline: None at all.

JohnK

  • Administrator
  • Seagull
  • Posts: 10634
Re: Why we don’t hire .NET programmers
« Reply #7 on: March 29, 2011, 12:52:13 PM »
I dont understand the discussion. The author isnt saying anything profound. .net is a tool just like any other tool. Sometimes there is a good use for it and other times I'm sure it can be a pain. The problem begins at the top; people in charge need to understand that "IT" (whatever it is) has it's uses (just like anything else). You dont use a sledge-hammer the entire time you are building a house do you?

Now as far as the abstraction level of .net determining the programmers knowledge goes; I dont think it is a fair judgment to make at all. Yes, I think that everyone needs to spend time working "old school" with an editor and a compiler to get a better appreciation of how languages work but that doesnt mean I think I am smarter then them.
TheSwamp.org (serving the CAD community since 2003)
Member location map - Add yourself

Donate to TheSwamp.org

David Hall

  • Automatic Duh Generator
  • King Gator
  • Posts: 4075
Re: Why we don’t hire .NET programmers
« Reply #8 on: March 29, 2011, 02:49:06 PM »
I wholeheartedly agree with the vitriol expressed by commenters - personally, I love .NET as a framework and the C# language because I like curly braces and semi-colons, but that's just me.

Having programmed in all the traditional languages for AutoCAD (autoLisp, VBA, C++) and now .NET (C#) and Visual Studio, I can honestly say it gives the best balance of power, flexibility and ease of use. Individuals that are skilled can use the tools to a high degree of proficiency - but that's true for any tool usage; be it virtual or real-world tools.
I have never used c++, but my use of LISP VBA and now c# is similiar to those comments above
Everyone has a photographic memory, Some just don't have film.
They say money can't buy happiness, but it can buy Bacon and that's a close second.
Sometimes the question is more important than the answer. (Thanks Kerry for reminding me)

sinc

  • Guest
Re: Why we don’t hire .NET programmers
« Reply #9 on: March 29, 2011, 09:35:14 PM »

I'd say not elitist
 ... seems more like irrational prejudice.


but heh, thats just my opinion.

I tend to agree, although there's actually a real thought hidden in there, though muddied...

A big sign is when he calls .NET a "language".  That shows he doesn't fully understand it, because otherwise, it would be virtually impossible to refer to .NET as a "language", even accidentally.

That misunderstanding gets him going in the wrong direction, when he intimates that there are few valid reasons for .NET to be on anyone's resumes.  .NET is a rather large collection of frameworks, and much of them are devoted to encapsulating access to Windows.  Microsoft has been working for years now toward making .NET the one-and-only way to interact with Windows.  So it would actually be rather odd, and possibly worrisome, to encounter any experienced Windows software engineer who had NOT used .NET for anything.  Especially since the author puts so much value in finding those people who "can't be stopped from coding" and who "write everything"...

As for using and reusing Frameworks...  That's kind of the whole point, to avoid wasting time by rewriting (and retesting) code that's been written before.  He's got the wrong analogy going, when he says .NET is great at "turning out 1.6 oz burgers, but when it comes to 1.7 oz burgers, you simply can't".  A well-defined framework would properly abstract out the process of making burgers, making it equally good at putting out ANY size burger.  And if it can't, it's easy enough to create an extension that can.  That's the whole rational behind the design of a framework, with provisions for things like events and delegates, etc.  Even if you come up with a really radical burger, stuffed with chopped vegetables and double-coated with secret spices and whatever, it's still basically a burger.  The bulk of the effort still involves cooking a burger.

This touches on one of the biggest failings in software design:  the idea that "We're doing something completely new, that's never been done before, so therefore we must do it all from scratch..."  That idea has killed more software projects than probably any other.

But in the midst of all that, he's touching on a valid point.  If programmers ONLY learn how to use the .NET framework, it can become a crutch that prevents them from becoming truly proficient programmers.  It kind of reminds me of a similar argument involving guitars, where people who first learn to play guitar using an electric guitar can develop really sloppy techniques, which can then take massive effort years later to unlearn (if it ever gets unlearned).  I remember having a similar discussion with my uncle (head of the CS department at a large university) when his department wanted to start teaching their basic data structures class in Java instead of in C.  The natural worry is that, if students learn basic data structures in Java instead of in C, will they ever really grok the concept of things like pointers?  And if they don't understand basic concepts like that, what trouble will they get into in the future?

Then there's also the fact that .NET isn't a particularly good framework.  Anyone who's done much programming in the Mac world, with things like Interface Builder, the Enterprise Objects Framework, and WebObjects, will tell you that.  A good part of this is because the .NET framework is in some cases a pretty thinly-veiled interface to the old MFC stuff.  There's even some holdovers in there dating way back to the 16-bit to 32-bit migration that  happened some, what, 20+ years ago?  It's very bizarre that the brand-new .NET framework contains echoes of the long-dead 16-bit Windows.  The main issue is that, even though we ostensibly have a modern framework, there are many aspects that are very clunky, which becomes very obvious when compared to similar functionality in the Mac world.  I can actually understand why some people would be concerned about programmers whose only experience with OOD is Microsoft's twisted version of a framework.  But something similar could be said of C++, which is quite messy for an OO language, and gives developers lots of rope with which to hang themselves.  Yet, there are many fine programmers who learned primarily using C++.  It would be irrational to avoid programmers who have C++ experience, and it's similarly irrational to avoid programmers who have .NET experience.
« Last Edit: March 29, 2011, 09:38:42 PM by sinc »

JohnK

  • Administrator
  • Seagull
  • Posts: 10634
Re: Why we don’t hire .NET programmers
« Reply #10 on: March 29, 2011, 10:09:00 PM »
I'm a little confused sinc. What kinda rope does C++ give? How can it (C++) be a bad OO language?
TheSwamp.org (serving the CAD community since 2003)
Member location map - Add yourself

Donate to TheSwamp.org

sinc

  • Guest
Re: Why we don’t hire .NET programmers
« Reply #11 on: March 30, 2011, 12:05:22 PM »
I didn't say "bad", I said "messy".

There are a lot of reasons I don't like C++ as an OO lanugage, and they're kind of off-topic in this thread, but maybe I can briefly mention some of them (hopefully without getting flamed because I fail to completely explain a thought...)

First is the messy syntax.  The mix of dots and arrows makes for code that is difficult to type and, possibly more importantly, difficult to read.  A key component of a good OO language is that it should be easy to read.

Part of the reason for the messy syntax is that the creator wanted to try to add OO capabilities to C without changing any syntax, since C++ was originally just a precompiler for C.  This means he made several key decisions with that in mind, and he would have made different decisions had he set out to create a good OO language.  As it turned out, he ended up changing C significantly, and C++ compilers are no longer precompilers that create C code.  But those key design decisions remain.

One of those is that Classes in C++ are essentially implemented as C Structures.  This means you can "dig into" the Classes by treating them essentially as C structures.  This can let you do neat things, but it can also let you do "bad" things.  You can find lots of rope here.

Then there's C++'s operator overloading.  It's very easy to do excessive operator overloading, creating code that is extremely difficult for anyone else to read and understand.  Again, ease of code readability is a critical goal of OO programming, as in the "real world", we realize that the original programmers are often long-gone, and others need to be able to take up their work.  Algorithms that are extremely clever and maximally-efficient are fun to create, as a form of logic puzzle, or as a source of pride, or if they can dramatically increase speed of execution.  But readable code is often more valuable.

There's more rope in there, too.  But most of it comes from the "excessive freedom" you have in C++, compared to languages like C# or Java.  That "excessive freedom" can obscure design, and make it harder to see and implement design patterns.  But at the same time, this "excessive freedom" is one of the things that gives C++ its unique benefits, and is one reason C++ is a valuable programming language for certain things.

And you can write good C++ code, it just takes a lot more knowledge and training.  It's actually helpful if you learn OO programming in a language like Java or C#, then work your way into C++.  That way, you get exposed to the key OO concepts in a cleaner language, where you don't have to worry so much about "grungy details", and then when you want to move into C++, you already understand what you're doing, and you are much less likely to let C++ draw you into doing bad things just "because you can".

JohnK

  • Administrator
  • Seagull
  • Posts: 10634
Re: Why we don’t hire .NET programmers
« Reply #12 on: March 30, 2011, 12:42:06 PM »
I wouldn't worry about getting flamed; if they cant take intellectual leaps in concepts for the sake of a discussion then they aren't that valuable to the conversation are they?

Ah, I see your point(s). I can see how little things like dots and arrows can (and are) confusing and the "operator overloading" could be a problem.

Thanx for taking the time to share your thoughts.
TheSwamp.org (serving the CAD community since 2003)
Member location map - Add yourself

Donate to TheSwamp.org

mohnston

  • Bull Frog
  • Posts: 305
  • CAD Programmer
Re: Why we don’t hire .NET programmers
« Reply #13 on: March 30, 2011, 05:37:15 PM »
I honestly think the article was written for publicity.
The whole "my programmers get in knife fights" thing is especially entertaining.
It got our attention so maybe it worked.
You can't buy that kind of publicity.

I don't think they are serious any more than I think a world-famous singer can get the words of a national anthem wrong at the most televised sports event of the year.

[edited] RATS! They go me too. I commented on this non-story.
It's amazing what you can do when you don't know what you can't do.
CAD Programming Solutions