

Ask HN: Is there a future in .NET? Should I invest in learning it? - gamechangr

I&#x27;m a new grad....I considering putting some serious time into .NET, but I can&#x27;t quite see what is happening here.<p>I am wondering if MS is abandoning the project or if it&#x27;s the exact opposite and they are wanting to give it a fighting chance now that nobody pays for software?<p>Is this an attempt to bring in OS X&#x2F;Android developers?<p>Is this aimed at being an alternative to JVM? Seems like that might be promising in certain scenarios.<p>Anyone who is a .NET developer now, how to you think it stacks up against other frameworks like Ruby on Rails or MEAN stack?<p>(no flame wars please, I&#x27;m just going to make a career decision and would love some feedback) Thanks!
======
dottrap
Languages never really die. Microsoft frameworks tend to live well beyond what
Microsoft wants (look at MFC). Enterprise in particular is invested in .NET
(and Java and others) and won't be motivated to change quickly. However, also
don't expect things to move in any one direction and there will continue to be
lots of competing technologies.

That said, what is it that you want to do?

Video games, high performance, and real time applications, and emerging
technologies tied to hardware (e.g. VR, wearables), you'll be better served
going into lower level languages and having a much deeper understanding of how
hardware works.

The web is dominated by JavaScript. Anything client side in the browser, and
you are going to be better served there.

Application client side programing, every vendor has their own thing and if
you want to do well, you'll want to learn the native stuff to some extent.
(Apple/Cocoa, Android, Microsoft might be .NET but they keep changing what
they push like C++CX/WinRT).

Server backends are harder to predict. Lots of competition here. Lots of trade
offs from a electricity and heat and hardware cost standpoint, to being able
to pull high level frameworks off the shelf to put something together easily,
to social engineering challenges of what people in your organization want to
do (e.g. standardize on one language for everything).

But ultimately from a career decision, true understanding of how things work
and being able to solve new problems is more important than learning a
framework. Being able to intelligently pick the best tools/tradeoffs and
knowing when they are inappropriate will set you apart, otherwise you are just
another religious zealot blindly pushing the same technology for everything no
matter how appropriate or inappropriate.

~~~
M8
Video games - Unity 3d though? C++ is for low level engines.

~~~
dottrap
If you want a serious career in video game programming, AAA
developers/managers will generally prefer candidates that know C/C++ and
understand low level details and hardware (like explain why cache locality is
the number one challenge in hitting your target framerate and what you can do
about it).

Generally, in my experience, somebody with only C#/Unity experience will not
be taken seriously for this kind of position unless they show they understand
all the other stuff (which tends to be rare).

Somebody going for level and content designer jobs may get a job if they have
Unity experience, however it is not because they know Unity, but simply that
they show they can put something together. Most studios have their own custom
in-house tools that they will need to train new hires on. (And historically,
any direct scripting not in the custom tools is done in Lua.)

------
gvilarino
I want to stress the point that there's no tool that suits every problem;
there are just different tools for different problems. If you only know how to
use a hammer, then everything will look like a nail.

That been said:

I've developed in .net for a long time and, even if I totally respect what
they've been doing lately with open-sourcing the framework and more recently
msbuild, I honestly think their approach isn't up to date for most scenarios
you'd want to address nowadays.

If I'd have to choose specific languages for specific scenarios, I'd say that
today, IMHO, a reasonable approach would be:

Web/desktop consumer-facing apps: MEAN stack is probably the smartest choice
because it favors development speed and UX iteration. I can't stress how
beneficial is for teams to be able to write any part of the app using the same
language. Especially for startups where teams are usually small: having
everyone being able to develop any aspect of the application (frontend,
backend, DB acces, etc.) is a pro I'd favor above many others. On top of that,
the community is thriving and most stuff you'd need has probably already been
developed or there's a framework for that.

Backend-only/APIs/devops: Go seems to be picking up quite the hype in this
space. Even if I haven't tried it a lot myself, the fact that something as
powerful and solid as Docker relies entirely on Go can say a lot about its
benefits. Other possible choices would definetely be among Ruby or Scala+Play.
I feel Java and .Net have become a bit cumbersome for this.

Micro-controllers/drivers/hardware-specific: so if you're doing drone-related
software or stuff for IoT or robotics (Arduino, Beacon, Raspberry Pi, etc.) a
very valid choice will be plain C. Of course we're talking about a universe of
problems that come with unmanaged code, but when you go deep down to
perfomance needs, it's pretty hard to beat well-developed C software. I do
know stuff has been made with Javascript and Node on the robotics front, but I
don't know a lot about it.

~~~
gamechangr
I'm the OP and I've built maybe 45 apps with Ruby on Rails. I've played with
Angular and Nodes.Js.

When I look at jobs boards though, .net is everywhere!

Thanks for the feedback - upvoted

~~~
Gibbon1
I've done some stuff in .net. One of the advantages is the learning curve is
pretty fast. So it's not a huge investment.

The flip side is it seems a lot of .net jobs are sausage making. Not very much
in the way of cutting edge or exciting stuff gets done in .net. Though too
cutting edge often is crash and burn, where run of the mill projects can last
years and years. (Don't knock a steady paycheck)

~~~
gamechangr
I know it's hard to say, but how fast is "the learning curve is pretty fast"?
Would two months straight be enough to have a reasonable command (I get that
it would be entry level at best)

~~~
Gibbon1
I would say two months straight of serious study and practice would be more
than enough to solidly know your way around the language, .net libraries and
tools.

Buy a good book.

I don't actually do client side (or server side stuff) as primary work.
However .net is very useful for kicking out simple GUI based tools. If you
want to do that, .net has the fastest learning curve end of story.

~~~
gamechangr
Thanks "Gibbon1" for avoiding the usual "10,000 hours" response. Upvoted!

I know it's hard to quantify. I have a friend who has offered to do a "8 week
internal training program with me" if I commit to working with his company for
one year.

I just wanted to hear someone objectively tell me that they thought that's
doable first.

------
WDCDev
The .Net platform is a well engineered development stack and learning it would
only become an issue with regards to opportunity costs. Time spent learning
.Net is at the expense of learning something else. Only you can judge whether
or not that's a worthwhile investment of time.

Now, to answer your question more directly. The .Net stack is excellent
platform for building any type of application that can execute the runtime.
The platform is mature, runs many large websites, enterprise applications and
cloud applications. It can do anything the MEAN, LAMP and Java stacks can do.
The differences in these platforms exist in a somewhat narrow range of
features that these stacks were focused on (ie, performance/async vs rapid
app. dev vs. mobile dev vs maintainability).

In addition to this, the CLR and core framework has been open-sourced by
Microsoft. A Linux runtime and implementation of ASP.NET are all planned to
officially release sometime this year. I personally feel this will give .Net a
big shot in the arm, so to speak, with regards to adoption outside of its more
traditional domain (enterprise development).

------
everyone
Just pointing out some things use Mono, like Unity3D, the game engine.
[http://www.mono-project.com/](http://www.mono-project.com/)

------
jpetersonmn
.NET is alive and well in corporate environments. For web development I'd
never choose it, however for Windows apps it's my goto. Visual Studio is
great.

~~~
gamechangr
Do you enjoy developing in .net or it is slow and cumbersome?

~~~
jpetersonmn
I'm not a full time software developer so I'm probably just slow and
cumbersome in general. I mainly program in vb.net for any kind of windows app
I'm going to distribute for others to use. I also use python a lot for any
kind of web scraping, back end automation type stuff. I enjoy working in
Visual Studio, seems real good to me. Easy to find help if I need it.

~~~
gamechangr
I've heard many times that it easier to trouble shoot error codes.

------
3minus1
All I can say is that with market how it currently is, if you know .NET you
are guaranteed at least a well-paying, boring enterprise job.

------
M8
There was never a better time.

~~~
gamechangr
That's exactly what I'm thinking through.

I know I could get a junior dev job in Ruby on Rails (which I do enjoy) and am
not too far away from being able to in MEAN stacks.

I just don't know much about .net, but like to try my hand at as many things
as possible.

I can tell that NOW IS THE TIME.

