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.
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
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.