views:

366

answers:

6

This is a subjective question and let me make it clear that I AM NOT asking for what the best language is. That being said, I want to do web development. I want to create sites around various topics, some for myself and some to sell and also do freelance down the road. I would also like to be able to create applications (RIAish and Web 2.0ish). Currently I'm looking at both C#/.NET and Python/Django (I like Ruby but had problems keeping it working on my machine). I also can't help but feel that I should reasonably consider php considering its dominance in these areas but I've heard so often that it leads to poor practice. At some point it may also be nice to do mobile programming but not a priority.
I would really really appreciate hearing the thoughts of you, the experts on this topic as I feel ready to lose it after bouncing to different languages.

+1  A: 

I use Microsoft technologies in my job, and I like it, and it's the only thing I could consider myself an expert in (compared to Python and PHP), so I suggest Visual Studio Express, C#, SQL Server Express, and making MSDN your homepage.

You can opt for Web Forms or ASP.NET MVC, plus Silverlight for your RIAs. .NET is a great platform for web application development. And there's plenty of room for your personal growth (SharePoint, workflows, etc).

Is it the best? I don't know. But you didn't ask for the best: you asked for expert opinions. So there you go.

Robert S.
+3  A: 

The first thing you should consider is whether you're more comfortable using Windows or Linux (or some derivative thereof, including MacOS X). That will certainly limit your options.

Though most Web technologies crossover to both platforms, there is more support on their native platform. An exception to this would perhaps be Java.

If you're looking to get into .NET, then you should be comfortable with Windows.

If you're looking to get into Python or Perl, then you should be comfortable with Linux (or Unix or a derivative).

PHP could go both ways, but I see at as more of a *nix native.

The same consideration would apply to database systems. MSSQL is well-proven and has a lot of support, but is more expensive in terms of licensing (and hosting) than say MySQL (*nix native), although SQLExpress (MSSQL derivative) is free and works well for non-enterprise applications. However, MSSQL will not cross-over to *nix platforms, while MySQL enjoys cross relatively good cross-platform support.

Terrapin
"If you're looking to get into .NET, then you should be comfortable with Windows." I have to disagreee. I use ASP.net for a lot of web development, but all of them on Linux with Mono, never on Windows
Julien
True. I've never used Mono, but it **seems** like there is implicitly better support for using the .NET framework in Windows. Do you ever run into roadblocks because you're running on Mono?
Terrapin
+6  A: 

I started web programming 6-7 years ago in Perl, moved on to PHP about 5 years ago, and started using Python/Django within the last year. So, quite obviously, I am a LAMP guy through and through, and I avoid Microsoft technologies at all costs (which I'm trying to stop doing, but hell may freeze first)

One of the biggest pluses of PHP is the lighting fast turn-around time on simple projects. The bad rep PHP gets is mostly due to the masses of inexperienced programmers that pick up the language and throw around poor excuse for code into the web. That being said, it is entirely possible to be disciplined and write excellent PHP code. There are also many frameworks out there to help you achieve this goal, such as CodeIgniter and CakePHP.

As far as Python/Django, I am currently drinking the kool-aid as I started using it just recently. Personally it is not quite as easy to get started as PHP, but things like the generated Admin and the model API are pretty neat. Although I have a background in C-style languages, I also find the indentation to be pretty refreshing and it is not nearly as bad as some people make it out to be.

All this being said, there really is no wrong choice. They are all just tools to achieve the same end result, and you can churn out quality web applications in all of them. I would personally recommend Python/Django, but this is all very subjective.

Paolo Bergantino
+1: No Wrong Choice; therefore, it doesn't matter -- just pick one and go.
S.Lott
+1  A: 
vartec
A: 

I've gone down the GWT, Java and Hibernate route. They are difficult technologies, but they certainly aren't tied to any specific OS or database.

If I had to choose again, I'd take a very careful at the market expectations, and the availability of getting experienced programmers. If the guys buying it don't like the technologies, or it's hard to find people to continue in the development, those are show-stoppers.

I once had huge trouble trying to sell a big Perl system to enterprise clients that only wanted Java (it didn't help that the database wasn't an RDBMS). Great code, and a very sophisticated product, but if people aren't buying it ...

Paul W Homer
+1  A: 

You can make a go of ANY of those technologies. You can write GREAT code in any of them and you can write CRAP code in any of them.

The difference will be how much time and effort you put into really learning them and studying not just the language, but best practices.

As for me, I have worked with Java, Perl, PHP, and .Net. My personal preference is for .Net because of the breadth of areas I can use it. I can use one language (C#) and hit everything from web to mobile devices. My current areas of interest/study are MVC and Silverlight. As a USER I've never been fond of AJAX. For most sites that offer an opt out, I switch to old-fashioned HTML. I'm interested in Silverlight 3 and its support for deep linking for RIAs. Way back in '98-2000 I worked with RIAs using Java applets on the client talking to a custom multi-threaded appserver I wrote. Silverlight and Adobe Flex are becoming what applets should have been.

The value I see on the Microsoft side is that Silverlight, MVC, asp.net, etc. all share common languages and APIs. If I were to go another route I'd have to work with a bunch of different languages.

As I said, I have worked with a bunch of technologies over the years and am not religious about my choices. They can ALL get the job done. Some people like Coke some people like Pepsi. Find which stack you like and study the crap out of it. Take time occasionally to study some stuff outside your chosen stack to keep your mind open.

jeffa00
Great answer. Do you see the learning curve of C# (as opposed to Python) being more problematic (assuming of course the proper amount of effort and ambition)?
Mackristo
I'm not a good person to comment on that because I've never used Python. My track was BASIC, Fortran, Pacal, C, C++, Perl, Visual Basic, Java, then C#, so for me there wasn't much of a learning curve for C#.
jeffa00