Take the 2-minute tour ×
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.

Background

I do PHP and Ruby on Rails development in my spare time, and have learned quite a bit on my own. I chose those technologies because of the low cost of entry, since everything is open-source and freely available. I develop on Linux and have been learning that from using it too.

Problem

Now I'm at a place where I want to get deeper in my knowledge of web development, but I'm personally having a hard time learning, because:

  • I'm finding that since everything is community-maintained there is no real "structure" to advancing knowledge.
  • So far I've learned from doing, and looking up specific problems as I encounter them. I don't know if that's the right way to do it in general, or if it's just not the best way for me. What I don't like about this approach is that you don't get any insight into the problem, because you just need to fix it and get moving with the project you're actually working on! As an example, working in Rails hasn't given me more than just basic knowledge of Ruby, because I can't learn both Rails and Ruby to an advanced level at the same time (maybe that's just my brain's limitation?)
  • I find that a significant portion of my time gets spent just getting set up, resolving LAMP-stack issues for PHP/MySQL, or Ruby gem dependencies and conflicts

Question

I am considering trying out C# and the .NET world for a few reasons, and I would like more experienced developers' thoughts on whether my thinking is sound or flawed.

My main reasons for wanting to switch are:

  • it seems like a more structured environment, I guess specifically because it's not community-driven. Does that make for a more linear learning experience?
  • I personally prefer working in visual environments, and Microsoft has Visual Studio. I've used several IDEs for PHP and Ruby and they're quite good, but just going by what I've heard Visual Studio is excellent to work with.
  • Microsoft has free "Express" versions of their software to try out, so there's a low cost of entry there now too
  • since Microsoft's is a "closed"/integrated environment, do you save time in the initial set up? I.e., do you spend less time setting up Apache/nginx, MySQL, MongoDB, version control, etc.
share|improve this question
7  
just IMHO, to develop well engineered applications means not using any of the "visual" tools in Visual Studio. still, it's by far the best IDE I've ever used. –  dave thieben Mar 12 '13 at 17:38
    
To address your "Problem" rather than "Question", some excellent resources have recently been developed to help you figure out the "what's next" for your php knowledge. –  eykanal Mar 12 '13 at 19:42
add comment

3 Answers

up vote 18 down vote accepted

To address your points:

it seems like a more structured environment, I guess specifically because it's not community-driven. Does that make for a more linear learning experience?

That depends on whether you want to spend some money on formal tuition. If you go through some certification courses, it probably does. If you're following books or tutorials then you are as reliant on finding the right books/tutorials as you would be with any other platform.

I personally prefer working in visual environments, and Microsoft has Visual Studio. I've used several IDEs for PHP and Ruby and they're quite good, but just going by what I've heard Visual Studio is excellent to work with.

Visual Studio is pretty good, but there is an overhead to it as well- it has a vast selection of functions available to you, but you have to learn how to use it to make the most of it.

Microsoft has free "Express" versions of their software to try out, so there's a low cost of entry there now too

Yes, and they're pretty good. But Microsoft do want you to spend money, so they don't do all the things you might want on the free versions.

since Microsoft's is a "closed"/integrated environment, do you save time in the initial set up? I.e., do you spend less time setting up Apache/nginx, MySQL, MongoDB, version control, etc.

I have never had a problem setting up Apache/nginx, MySQL or MongoDB for an ASP.Net application. However IIS and SQL Server are also very complex and no less whimsical in their behaviour. There is a good chance one will need to learn about their operation.

What I would suggest:

You are clearly wondering whether the grass is greener. So why not download the tools and see how you get on with them. You may love them, you may hate them, but the barrier to entry is low and you will probably waste as much time wondering if you prefer working with .net as you do learning it. At least having given it a try you will be able to make an informed decision in either direction.

share|improve this answer
    
+1 for your thoughtful and balanced answer. –  Mark Rovetta Mar 12 '13 at 17:43
4  
good answer, but it doesn't mention the fact that free/open source software makes you feel the warm fuzzies inside ;) –  omouse Mar 12 '13 at 19:29
1  
I would have voted to close this Q as subjective/too broad if it weren't for the fact that this answer is so good. –  Jimmy Hoffa Mar 12 '13 at 23:17
1  
Thank you for the answer, you're right about the "grass is greener" curiosity, and that's what I wanted more experienced developers advice on. As for being subjective/too broad, I tried to be focused in what I was asking by giving the few specific reasons for my curiosity. Any suggestions on how I could have been less subjective or broad? –  Jim Connors Mar 13 '13 at 17:27
add comment

it seems like a more structured environment, I guess specifically because it's not community-driven. Does that make for a more linear learning experience?

It depends. 4 years ago, this was definitely the case, but Microsoft have moved strongly in the direction of community-driven and open-source frameworks and plugins. This has had the side effect of splintering the learning experience as well - instead of learning ASP.NET, you end up learning MVC + Razor + jQuery + Knockout + NHibernate | EF + ...

I personally prefer working in visual environments, and Microsoft has Visual Studio. I've used several IDEs for PHP and Ruby and they're quite good, but just going by what I've heard Visual Studio is excellent to work with.

While the IDE doesn't make or break a framework for me, I prefer VS over most of the ones I've used. That said, I don't normally use the "visual" tools for much of anything important, since I usually disagree with the assumptions they make. This, likewise, has been an area of significant change over the past few years.

Microsoft has free "Express" versions of their software to try out, so there's a low cost of entry there now too

While these have some limitations, I'm glad that Microsoft offers these. It's definitely a point in the "try this out and decide for yourself" column.

since Microsoft's is a "closed"/integrated environment, do you save time in the initial set up? I.e., do you spend less time setting up Apache/nginx, MySQL, MongoDB, version control, etc.

Possibly. At least for development, creating a test site is extremely simple. However, using the free tools, you don't get a full database engine out of the box. (SQL Server Express - User Instance, which is just an MDF file under your web application's App_Data folder.) You can install the full version of SQL Server Express, if you want. You don't get version control out of the box either - they offer a free version of TFS, but I'd prefer to just install Git.

Hosting your site can also be an issue, since Windows hosting tends to be slightly more expensive than LAMP. Also, in my experience various hosts can be rather flaky in their support of "current" .NET versions, data access, etc.

My background: Microsoft development has been my primary job for more than 15 years. I've dabbled in RoR, PHP/Perl, etc. for hobby stuff.

share|improve this answer
    
Excellent points, especially the one about them moving toward community-driven development. I hadn't thought about that. –  Jim Connors Mar 13 '13 at 17:30
add comment

I believe a part of your question is asking about the reasonableness of the cost in time and money to you for learning a different platform. And that’s the part I’ll try to address with this answer. You might be overestimating the necessity of paying for training and underestimating the opportunities for community-based learning just because C# and .NET are Microsoft technologies.

Because it sounds as though you have had success learning from communities in the past, I don’t think you should entirely abandon that approach in your future learning strategy. Although OSS has a great reputation for their large and active developer communities, that does not mean it’s impossible to learn a lot about Microsoft technologies without paying for some kind of formal training.

There are many places around the web that do not charge for participation where you can learn about C# and .NET from experienced developers. Learn as much as you can (or have the time for) about C# and .NET from these free resources first, and then you can make an informed decision about if or what paid training you might decide to pursue. These technologies are certainly discussed on Stack Overflow, as well as MSDN.

You do not need to subscribe to MSDN to use many of the learning resources, but you may need to 'drill-down' to find what you are looking for. These links may be helpful for locating learning resources on these topics:

Developer Centers and Destinations

.NET Framework

Visual C# Resources

share|improve this answer
    
I was considering just self-learning from books or sites like Pluralsight. I wanted to know whether my impression of the .NET world being a more structured one than PHP/Ruby was accurate or not, and from what you're saying it sounds like it's not a huge difference, right? –  Jim Connors Mar 13 '13 at 17:36
    
I've added some links to MSDN learning resources for C# and .NET that I hope may help you decide for yourself whether this path to advancing knowledge might be more structured than your past experiences. –  Mark Rovetta Mar 13 '13 at 20:37
add comment

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

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