Advertisement

On leaving .NET

Started by September 24, 2010 09:48 AM
31 comments, last by ranakor 14 years, 4 months ago
I recently ran across a blog posting that echoed a lot of personal feelings that I hadn't yet figured out how to articulate.

It's a very hard decision. I'm very productive in .NET with C#. But I do often feel like it's me against the world here. Certainly none of my coworkers are any help; I am the one that helps them, not the other way around. All of the people I like talking to about programming in real life are doing Python or Ruby (or PHP, but that's not a reasonable consideration). I'm the odd duck in the crowd when I show up to developer meet-and-greets in Philly.

It seems like everyone else gets to work on these fun projects and I'm stuck re-writing the same damn SQL-based report viewer sites. Is it true? Or am I not looking in the right places? I wager there is a LOT more .NET dev going on than Python, certainly than Ruby (and I don't mean to focus on these two languages, they are just easy examples). Could it be that there are equal amounts of good work in both, but the .NET market also has a thick layer of bullshit on top?

throw new ExistentialCrisisException("ZOMG!");

[Formerly "capn_midnight". See some of my projects. Find me on twitter tumblr G+ Github.]

Let's take some simple probably-facts that I am making up, but I believe are reasonable assumptions.
* The vast majority of software development is the same old boring reimplementation of things that have been implemented thousands of times before. Web forms, simple business apps, etc.
* Low-end software development will always trend to the lowest common denominator -- languages and tools that are simple and packed full of support libraries.
* This rush to bottom will have a damaging effect on the perception of the tools in question and create an overwhelming population of idiots claiming skills in them.

The bottom appears to shift every ten years or so; in times past it was Visual Basic, then Java, and now .NET seemed to be making its stand as the platform for ad-hoc work. In particular, Microsoft has recently been doing a lot of things that are reinforcing this status as the bottom of the market. The pyramidal base, if you will -- the most popular, yet the least interesting.

On the flip side:
* Developers who are looking for 'fun' -- particularly younger ones who have grown up with the latest and greatest -- are also pretty susceptible to current fads.
* Media attention and investor attention will also be drawn to the latest fads, creating a distinct flow where the skilled younger generation decides to pursue that same direction.
* These developers are the ones most likely to be passionate enough to actually show up to developer social events and the like.

I think Python benefited from this effect, and Ruby was driven entirely by it thanks to Rails. Regardless of the technical merits of these types of tools, they get the coolest projects and the most interesting developers. Particularly interesting is that these languages were not created by corporate backing, but basement hackers. Contrast to the list above.


Does that sound about right to you?
SlimDX | Ventspace Blog | Twitter | Diverse teams make better games. I am currently hiring capable C++ engine developers in Baltimore, MD.
Advertisement
Hmm, I think you have a point. That supports my "thick layer of bullshit" theory. Well, it also implies a certain *other* type of bullshit layer on top of the other world.

So the grass is always greener on the other side. I have noticed that I'm one of the highest paid people in my various social groups, so I guess that is something. But dammit, I'm so bored (well, look at what time I'm posting!).

[Formerly "capn_midnight". See some of my projects. Find me on twitter tumblr G+ Github.]

Well yeah. Microsoft products aren't opensource projects...

[size="2"]I like the Walrus best.
WTS: Grass. Very green. PST. Also in stock: Other side.
I'm not a professional developer but I can't imagine that what would make your job interesting is whether or not you are using Python vs .NET. Coding bullshit web reports in Python is still going to be boring.

Let me throw up an analogy. You're using Adobe Premier to edit videos. Your job is splicing together C-Span footage from boring book tours. You go to a video editing meetup and all the guys are talking about ambitious movie projects they are doing with windows movie maker. Now you're depressed because your job is boring... Do you blame Adobe?

Note: I'm not comparing Python vs .NET to Premier vs WMM, it's hyperbole to illustrate a point.
Advertisement
Personally, I'm of the mentality that no matter how much you love the area that you work in, if it's your job sooner or later you're going to become tired of it. Thankfully, that's what we have hobbies for. There is great joy in having the freedom to code whatever it is you want with no one to answer too except for yourself. Although, even with your own project, you might still have to tell yourself to take a flying leap now and then.
Quote:
Original post by ChurchSkiz
I'm not a professional developer but I can't imagine that what would make your job interesting is whether or not you are using Python vs .NET. Coding bullshit web reports in Python is still going to be boring.

Let me throw up an analogy. You're using Adobe Premier to edit videos. Your job is splicing together C-Span footage from boring book tours. You go to a video editing meetup and all the guys are talking about ambitious movie projects they are doing with windows movie maker. Now you're depressed because your job is boring... Do you blame Adobe?

Note: I'm not comparing Python vs .NET to Premier vs WMM, it's hyperbole to illustrate a point.

That is certainly obvious, but there are very much specific cultures that surround every programming language. They're all Turing complete, they can all do the same things, but people don't tend to think to use &#106avascript to do scientific calculations. The point is, no programmer lives in a vacuum. Do Lisp programmers get to work on more fun projects because relatively few people think to use Lisp for boring projects? VB.NET is a capable programming language, but I don't want to hang out with people who think it's good for them, because experience has shown that those people are window-lickers who don't know the difference between Integers and Floats.

I recognize that it's not so simple to group people in to camps, let alone then categorize the traits of those groups. Hell, I am fluent in C#, SQL, VB, and &#106avascript (there are a ton others that I can read well enough and hack around in, but have no proper understanding of what makes idiomatic code in those languages). The stereotypical users of those languages are completely different personalities. Even if we could classify the traits of people who enjoy certain languages, there is a certain proportion of overlap between all communities. So I admit that there is no quantifiable way to talk about this concept.<br><br>Another little thought experiment. Say there are 100 programmers and 10 programming languages in the world. There is &#111;ne particular language that everyone knows. 75 of the programmers know &#111;nly that language because at the end of the day all they want to do is go home, watch some patronizing television comedy, and drink rice beer. The other 25 know the ubiquitous language as well as two others, due to their burning interest in programming, their desire to learn more and more. If you were to be paired with 2 other people based &#111;n programming language, then you should stick to the esoteric languages because the dullards won't be amongst them.<br><br>People will congregate. If there are &#111;nly 30 users of a certain language, they probably all know each other. If a language has a million users, you can probably &#111;nly handle knowing 30 of them anyway. I think at some point, the relative size of the programming community is unimportant, because you'll be shielded within the fold, you'll have your local tribe.<br><br>Again, this isn't about Python or any other particular language. This is about mainstream versus non-mainstream. I think this has particular application to a lot of what we tell beginners around here. We tell them, "C++ is mainstream for game programming." Maybe that's not helping anyone. EA uses C++ to make games. I'm sure there are great teams to work &#111;n at EA, but there are also some terrible &#111;nes too. *IF* you can find work writing games in Erlang, you're probably in such a crazy-fun shop that it's going to be a cool place to work. If not, well, move &#111;n to another language, you're not going to find another Erlang shop.<br><br>And I'm thinking about some day starting my own company. I've seen what the market is like for C# and VB programmers out there. If I make my business an O'Caml shop, then I'm &#111;nly going to get O'Caml programmers applying. The best O'Caml programmers are not going to be any better than the best VB programmers. But the types of people who make the worst VB programmers aren't going to be able to pick up O'Caml.

[Formerly "capn_midnight". See some of my projects. Find me on twitter tumblr G+ Github.]

I can certainly see what you're saying. In programming in general, I've seen generally two camps: 1) Don't implement anything that you don't absolutely have to, and 2) Implement everything yourself, from scratch, unless you are literally tripping over an existing solution [just think of how many damn replacements have been written for things like std::vector in c++]. There doesn't seem to be a lot of middle ground. One of the advantages of standard libraries is that you have ready-made solutions to find, that are pretty much in your face. The bad part about large and robust standard libraries is that a lot of people kind of think that this is all there is to the world, and don't really look elsewhere. It sort of fosters this lack of collaboration, because people never really get pushed to the point where they need to choose between either not accomplishing anything at all, or venturing out onto the web to find ready-made third party solutions.

Of course there are still problems that need to be solved. But sort isn't one of them. This is sort of the problem that I found with .NET. It has a lot of stuff, which is great. It allows a programmer to not have to go and LOOK for third party solutions for almost everything. If you do use a third-party thing, chances are it also uses stuff from the .NET library, so you don't need to worry about really learning how to communicate with this new module you downloaded [things as simple as a standard implementation/representation of a list or ip address or whatever, is so useful]. The .NET library is however annoyingly deficient in certain ways, but not really so glaringly deficient for you to think "Ok, I really HAVE to seek outside support". Even simple things like priority queues, have been implemented a thousand times, because they aren't in .NET, but are just simple enough to implement that for someone who doesn't really know about any .NET communities, it's easier to just type one out instead of getting involved.

If you consider something like C++, it took the failure of the STL to make Boost really interesting, and get people involved in boost, and thus invovled in general. If the STL was better, a lot of people wouldn't have gone looking for alternative container types.

Personally I love C#, as a language. I love it partially because of the tools I get to use with it, and I like that it is more structured than something like python, but better defined and less error prone compared something like C++. I honestly don't value open-sourceness in most of my tools. I just want to be able to get them to do what I want to do with them, so closed-sourceness in the .NET library isn't an issue for me.

Seriously though, the .NET COMMUNITY is deficient.
I think this is more along the lines of jobs that fit the language.

C# + .NET Framework has many excellent uses. Scripting is not one of them.
Python has many excellent uses. Heavy processing is not one of them.
C++ has many excellent uses. Rapid development is not one of them.


Visually, I think what you described is this:



Choose a tool:

This topic is closed to new replies.

Advertisement