Tell me more ×
Programmers Stack Exchange is a question and answer site for professional programmers interested in conceptual questions about software development. It's 100% free, no registration required.

A majority of my web development experience has been on the .Net stack (mainly Asp.net C#). I am looking to learn something new in my spare time, for the use of personal projects and possibly for use professionally (as an ISV). I know some Python, done some scripting with it in the past, nothing on the web though. Php has been around for a long time and RoR has gained a lot of popularity.

Are there any developers from the .NET world that have migrated over to one or more of the other platforms? If so, which do you prefer and why? Which would you suggest and why?

share|improve this question

closed as off topic by Robert Harvey, Walter, Yannis Rizos Aug 26 '12 at 15:10

Questions on Programmers Stack Exchange are expected to relate to software development within the scope defined in the FAQ. Consider editing the question or leaving comments for improvement if you believe the question can be reworded to fit within the scope. Read more about closed questions here.

4 Answers

up vote 0 down vote accepted

for the use of personal projects and possibly for use professionally

That's the problem. IMHO, you have to choose between learning something for your personal projects, something you will probably appreciate to use, and, on the other hand, learning something which may be useful for your current work or career.

I'm a web developer, working most of the time with ASP.NET/C# and PHP. I like C#. I hate PHP. But I learned PHP because there are many requests for PHP websites. In any case I would use PHP for any personal project for fun, never. Also, PHP never made me a better programmer. On the contrary, I found myself loosing something by learning PHP.

What I suggest is:

  1. To decide what is more important for you: to have a new skill which may be valuable for your current work or career or to learn something for fun or to be a better overall developer.
  2. If your work/career is more important, see what can be more valuable. It may be, like in my case, PHP. Or it may be another language, like Ruby on Rails.
  3. If your work/career is less important, then try to learn several languages, each one for a week or a few days. You will quickly see which one is more pleasant to use for you, and which one you will probably never like.
share|improve this answer
Thanks for the insight, I see have some things to think about. I want to be better overall developer for the purpose of my career. In the course of my career I have been using ASP.NET/C# and like you, I like C#. I want to stretch myself so that I can grow as a developer. Also, I eventually want to work for myself and with the myriad of choices in technology available, I'm just not sure if I want to settle on only what I know. – ProfessorB Dec 30 '10 at 21:48
@ProfessorB: if your intent is to become a better developer, Ruby on Rails seems for me as a good candidate to be learned. I would also suggest F#, which is quite interesting to learn from the point of view of a C# developer. Just don't choose PHP; it's an excellent choice for some tasks, but will not increase your developer skills compared to other languages. – MainMa Dec 30 '10 at 22:59
A good resource for exploring new languages is Seven Languages in Seven Weeks pragprog.com/book/btlang/seven-languages-in-seven-weeks . I took a liking to Erlang and Picked up Programming Erlang as a result of being introduced to it in that book. – Mike Brown Feb 15 '12 at 21:33

I've been writing MS products for the past five years, and make it a goal to learn one new language every year (thanks, Pragmatic Programmer). 2010's language of choice was Ruby and by extension Ruby on Rails.

I have not worked with Python (that may be 2011's language, haven't decided yet), but I spent a number of years in PHP. Between PHP and Ruby, I will say that (in my humble opinion) Ruby has made me a much better developer that PHP ever could have. Ruby's extremely dynamic features require such a completely different mindset from the statically typed C# that I look at every problem in a different way.

Within the Rails framework, you'll find a lot of objects that feel very familiar to the concept of how Controls work in .NET; however, you will also find completely new ways of doing things. PHP frameworks (even Drupal), by contrast, always felt like a hacked together set of objects and functions, never achieving the same level of polish as other language frameworks.

Those are just my thoughts, though, and I'll certainly be keeping an eye on this post to see what others have to say.

share|improve this answer
Thanks for the response. I will take those thoughts into consideration. You pointed out one of the reasons I am looking learning a new language/platform, "to become a better developer". – ProfessorB Dec 30 '10 at 21:39
Also, thanks for mention of "Pragmatic Programmer", I have been eying it for a while. I guess I need to go ahead and get it. – ProfessorB Dec 30 '10 at 21:40

Choose a community, learn a language, then pick the framework.

Every framework or CMS is built in a language. And has a community of developers around it. Both that community and the language dictate a lot about the framework you will use. How it is used, what types of sites you build with it and so forth.

Take Ruby on Rails. Built on Ruby. With a community that seems to love cutting edge stuff. And has a fetish for testing. If you are allergic to testing, you will probably not feel at home with Ruby. Sure: one can perfectly build sites in RoR without touching a single test. But the strong dependency on tests by all the other people you will bump into, work with, or get help from, will annoy you, if you are truly allergic to tests.

If you want stable, "oldfashioned" work being done, then a lot of communities will also turn you off. Some CMSes or frameworks are build by communities who just love putting new stuff in all the time. If, for example, you find noSQL an empty buzzword, hate git, dislike ORMs or want to have nothing to do with REST, HTML5 or CSS3 then pick your community by that.

Once you find a community that you fit into, choosing the framework is not hard at all. If you hate ugly, unarchitectured code, Drupal (PHP) is probably not a good place to start working, instead better look for some Python, c#, java/scala or Ruby framework. If you don't care about code, or its architecture, Drupal may be a good choice.

share|improve this answer
I'd say that's the exact wrong approach. If you want to grow, you have to step out of your comfort zone. Learn new tools. And expose yourself to new techniques. Having that exposure will give you ideas of what you can "bring back home" to apply in your day to day development. – Mike Brown Feb 15 '12 at 21:37

I have dabbled both in Python and Rails and must say I much prefer Python (especially on a Windows machine). I like Python's syntax compared to Ruby's and I think Django is much easier to use than Rails (especially on a Windows machine).

I will admit I haven't gotten that far into Rails development, but of course, I blame Rails for that! I have had nothing but troubles trying to get things to work on Windows. I could get Rails up and running but then I couldn't get any gems to work (such as Restful Authentication) and the text I was using had me looking up stuff more often than not because it wouldn't work how they showed it. (URL mapping was one of the major issues). Now I may be alone on having all these issues (as I don't hear these complaints from others, though I don't actively search them out).

Another reason I like Python is because it is actively used elsewhere, so you may be making a website but also gaining a skill that is applicable in other situations (professional or personal). I don't know of too many companies using Ruby (though I'm sure there are some).

If you have the time, I would suggest learning something like Erlang/Lisp/Haskell and build a site out of that. It may not be as professionally oriented, but it would sure be fun!

share|improve this answer

Not the answer you're looking for? Browse other questions tagged or ask your own question.