views:

761

answers:

21

A little subjective question here, but here goes. I'm not a great programmer, by any means - I admit this freely. I dabble in .NET but haven't really used it in a while, so I know little more than the basics. I live in an area that is entirely .NET centric and everything else is pretty much unknown.

I've been looking at learning Ruby on Rails, because it's a sweet technology and from the little I've played with it, programming with it is really cool, although a little confusing since I'm not used to its conventions. However, there's no market demand for it whatsoever where I live. Very few people have even heard of it, let alone use it.

Should I just focus on .NET and become an expert in that, since .NET provides me the best opportunities for potential jobs? Or should I say to hell with it and do what I want, regardless of if the market uses it or not? I was thinking of using RoR to build a SaaS offering and hopefully go into business for myself, but I could build that SaaS platform in .NET as well (and I was given access to the MS BizSpark program for that reason) and learn a "valuable" technology that, if my business doesn't get off the ground, will give me solid experience for landing work.

Basically the question is - if you have a choice between learning something that nobody uses but you think is really neat, or learning/becoming an expert in the technology that everyone wants, what would you choose?

+4  A: 

Learn what you enjoy, first. If you start off forcing yourself to learn a language you do not like, you are more likely to give up. Enjoying yourself is a major part of getting started in any skillful field.

Sparr
+1  A: 

Yes. New languages expose you to new things and ne markets. What you think is cool exposes you to new thoughts and excitement.

Charlie Martin
+25  A: 

Both.

Keep it fun, and pay the bills.

And learning that language that stretches your mind, but isn't very practical, will simply make you a better thinker.

Triptych
Yup, the experienced programmer knows how to balance between those two.
Gamecat
And nobody *really* likes VB.NET
Triptych
But do you *really* like it?
Robert Gamble
+1. But I'd add that you may be pleasantly surprised to find a RoR job in your area one day, and in that case your .NET + RoR skills will be very marketable.
frankodwyer
Somehow this answer has -15 down. Weird.
Triptych
Brilliantly worded.
Rob
+2  A: 

If you code for fun, code using the technology that gives you the most enjoyment. If you code for money, use the technology that makes you money.

There are no rules that say that you may only learn one.

Simucal
A: 

Here is what I do.. work in whatever platform your job demands cant do anything specially with the current job market.But, if possible look for RoR or any other technology projects you can do on the side to keep yourself happy. Make sure you learn it well though.

Perpetualcoder
A: 

If you are thinking about building an application that will live on the cloud (SaaS), why do you care about local market? Your market is the Internet, right?

I would also question your idea that your area (wherever it is) is .NET-centric and that no one knows RoR, more likely that the people you know is focused on .NET, but it's a question of finding the other crowd.

Having said that, I would tell you go for the one you have fun with. You don't have kids to raise and a huge mortgage to pay, do you? If you're good and your product is very good the market will come. It is easier to make an awesome product with tools that you also find awesome and love to work with.

rodbv
A: 

I would say that in this specific case, you should go with what you think is cool, because both are financially viable. However if "what I think is cook" was something more esoteric like Brainfuck, I would have to say go with what the market wants.

When you say there is no market demand for RoR, I wonder what you really mean. There's a lot more jobs out there for .Net, but there's a lot more people who know (or who claim to know) .Net. So there is more competition. On the other hand, there isn't a whole lot of people who really know RoR. It may be popular on certain tech sites, but it's still only known by a very small number of developers.

Kibbee
A: 

I wouldn't say that nobody uses Ruby on Rails. However, it is difficult to compare RoR with .NET as the former is a pretty specific tool whereas the latter is a general purpose programming platform.

But if you believe Ruby on Rails is really cool, go for it if you don't need to make a living at the moment. You could try to get a job off site and maybe even turn your passion into a paying job.

Brian Rasmussen
A: 

It sounds like while your at work you should focus on expanding your .NET knowledge, nobody says you can't learn at work. When your writing applications on your own you should take the time to learn something new. Knowing a little about a lot will benefit you as well.

Mark Robinson
+3  A: 

I'm not trolling with this, but first learn how a computer works. It really is important to understand the Von Neumann architecture. Here are my suggestions:

  1. Start learning programming with a dynamic language like Python, Perl, or Ruby
  2. Next, begin learning a native language like C, C++, or Delphi. This will force you to care about things like Pointers and memory management. It really IS important
  3. After getting a handle on #1 and #2, you'll be more than ready for .NET programming. In fact, you will be a better .NET programmer for it
Mick
+6  A: 

Should I just focus on .NET and become an expert in that, since .NET provides me the best opportunities for potential jobs?

Yes, you should, since .NET is dominant in your area. Be thankful that there is a job market in your area.

You can still do side projects in Ruby, but you should focus on becoming proficient in .NET first.

Bill the Lizard
A: 

If you can live on the money brought in by doing what you see as cool then do so. If it doesn't, well you do need to make a living. That said I'd rather live modestly doing what I enjoy then live miserably making a lot of money. Before anyone jumps in that is exactly what I've done in my life. I've passed up several opportunities that pay more because I know I would not enjoy them.

Jim C
A: 

Unfortunately, I cannot live on the money by doing what I think is cool.. if I could then there wouldn't be any question about what to do ;-) I highly doubt my SaaS idea would really take off, although it would provide some additional income if it started to sell.

I know the market is .NET centric because I've looked for jobs and that's what I see - everything is .NET based and that's what companies here use. I know enough .NET to get by but I really get confused with the more complex things, and I'm also trying to balance learning all of the new tech (e.g. WPF, WCF, LINQ, ASP.NET MVC) since my day job doesn't even use .NET but ASP Classic/VBScript.

Wayne M
+3  A: 

I make sure I know what I need to keep paying the bills with my current position and in my spare time I investigate what I want to do down the road.

buchanan1966
totally agree, but I just want to add that you shouldn't start RoR untill you get used to .Net, because starting to learn two different things at the same time can be confusing...
Lawand
That depends. I remember my second quarter in college after starting computer classes. I had 4 classes using 4 languages, three of them brand new to me. It actually helped, because I could see how they were similar (they were all procedural), and mostly differed only in the syntax.
thursdaysgeek
A: 

If programming/development is what you want to make your career out of, I would certainly suggest focusing more of your personal skills towards that which is going to assist your career the most. If .NET happens to be the platform of choice in your area (assuming you are wanting to stay in your area), that is the way to turn.

But as others have said, keep learning other things that are interesting to you as well. If you can do side projects in another language or framework that you enjoy, you'll have a leg up when markets turn and jobs show up for it.

Most people suggest keeping a well-rounded skillset anyway, so learning both is obviously your best bet, but I would recommend focusing more of your time on the .NET side.

TheTXI
A: 

You might want to focus on paying the bills, till the bills are paid, and not a second more. Then stop and focus on what you enjoy and are passionate about while you try to figure out a way to make money from it.

Focusing on where you can make the most money, is the path to the dark side ... err .. I mean rat race.

Look at the stereotypical starving artist; they supposedly wait tables till they get their big break. Because it's easy money and it doesn't interfere with their dream. The ones who find good jobs, are scared to lose them and take less chances.

PS-I'm by no means following my own advice. I'm wearing golden handcuffs, but wish I'd have figured this out sooner.

John MacIntyre
A: 

I like to think like eagle coders and duck coders.

a duck...
...can fly;
...can swin;
...can walk;

but the duck does these things... nearly bad!

an eagle is an expert in flying! but if needed, the eagle...
...can swin;
...can walk;

for me, a good programmer needs to be expert in one (language, framework, etc...), but if needed, he needs to know the basics of another languages, frameworks, etc..

it's mine 2 cents ;-)

Click Ok
A: 

If RUby on Rails is what you want to do, is there any reason not to move to where there is a market for it after you learn it?

HLGEM
A: 

I think there is a market for anyone who is a real rockstar at something. I think you're more likely to be a rockstar at something you are really passionate about.

Kevin Davis
A: 

Learn something that will make you smarter.

If in 1990 you decided to learn what everyone wanted (C++) it would have taken 5 years to master and then when Java arrived you'd have had to start over practically from scratch. But if you had learned a really cool related technology that nobody used, like Simula-67, or a really cool related technology that was a niche player, like Smalltalk-80, you would have gotten a lot smarter and been ready for the next thing.

For your particular situation, you could try combining .NET with something that looks really cool. For my money, in 2009 that would be F#.

Norman Ramsey
A: 

How much digging have you done to see that there aren't any Ruby jobs in your area? Perhaps there are Ruby user groups that may be where you find those places that are using what you'd like. Granted this answer is a year late, but it may not be too late to try such an idea and see what you find that way.

JB King