views:

594

answers:

11

I have about 1 year professional experience with C# and ASP.NET and now I have a small web application idea I want to implement but I don't want to use ASP.NET to implement it due to hosting fees and other Microsoft corporate yada yada.

I want to use python/django to implement this as it is cheaper to host and a good stack to develop on but here is my problem.

I haven't really dived deep into C# and ASP.NET and I want to. I also want to develop this web app as well. All the great advice on Stack Overflow for junior developers have mostly pointed to learning one language very well before learning another.

What advice would you give? Should I leave this idea on the back burner and really improve my understanding of C# and ASP.NET or should I dive into python/django and develop this app?

Edit

Thanks guys for all the answers, all very insightful. Just to add, I really want to go deep in c# and I really want to build this site too and as we all know, the power of focus creates massive impact. I am equally passionate about both.

Update

Thanks everyone for excellent answers I have made up my mind and I will stick with going in depth. I will be using mono on ubuntu. So that is c# .net and associated technologies on the linux platform. Then after 2 years look at the hottest thing(s) and learn em.

Thanks guys.

+3  A: 

Java is a lot closer to c# than Python. Have you considered using a Java stack?

NOTE: I have nothing against Python. But c# and Python are very different languages. Some of the differences: C# is a strongly-typed, curly brace, imperative language with some functional features, while Python is a dynamically-typed, multi-paradigm (imperative and functional) language.

That said, I have heard you can be very productive in Python.

Nowadays you are going to be learning multiple languages anyway, no matter what platform you use. If you are building a substantial web app, you are most certainly going to need to learn Javascript, HTML and SQL, for example.

Robert Harvey
I have thought about java, and yea it is closer to c# quite bulky like c#, my idea is a simple one and using a java stack would be like using a chainsaw to slice butter.
simplyme
If I were doing a small web application to slice butter, I myself would probably choose Python and Django, if for no other reason than I am fascinated by the language.
Robert Harvey
Thanks Robert, learning multiple languages as you pointed out is still a must anyhow (javascript, html...). I am not that smart to combine diving deep into 2 core languages like c# and python @ the same time, i need to focus.
simplyme
+4  A: 

Go ahead dive into python, the more technologies you use and learn the better. I find that people that use more technologies are more flexible and easier to work with. Every new languages and technology will open your mind into new ways of thinking things, and besides I think of languages as tools, the more tools you have the better.

daniel
Very good point unknown, thanks.
simplyme
A: 

I agree with broadening your horizons and learning a new language. I would add, though, to try not to spread yourself too thin. Find one language and master that, whether it's Java, C#, Python etc.

If you have an idea for a site and want to use python for that then by all means move on to Python. But at some point find something to master while learning other technologies. If you don't have Db skills yet you may want to focus on that too. Good Db skills can lead to an easier time with your coding efforts later on.

Like another poster stated, a language is like a tool, the more you have the better off you are, as long as you know how to use them.

I've been programming now for about 15 years and have many tools, I started with C then moved to Java, then C# and now ObjectiveC. Throw in some python and a tad bit of perl to round it all out. I earn my living now building "solutions". Our group get a request to build an app and our team decides on what technology to use, Python, C# whatever. My point is knowing languages is one thing, knowing which technology to use for which solution is another. When you get on with your career this knowledge will help you a lot.

Good luck....sorry for the verbosity...it's cocktail hour. Props to Jefferson's Reserve Bourbon :D

OhioDude
+3  A: 

You're basically asking, go for depth (stick with the stack you know so as to learn it better) or go for breadth (switch stacks, learning more than one, without having totally mastered the first). People's mileage vary -- for me, opportunistic sticking or switching to best exploit whatever opportunities opened for me has worked very well over a long career... but then, I am a lucky guy;-).

I ended up (well, I'm not done yet, but you know what I mean;-) with very deep knowledge in a semi-random set of technologies (Fortran, C, C++, Python, SQL, HTTP, Linux...) and one not anywhere as deep as I'd like in many, many more (Java, C#/.NET, Javascript, Haskell, XSLT, ...), simply because of the opportunities life offered to me over the years. However, I've found that when a significant opportunity appears in a field I had so far only dabbled on -- leveraging what else I do know in depth, and the "mere acquaintance" I start with in that field, I grasp the new opportunity quickly and effectively.

So, in your shoes, I'd go for the opportunity to learn the python/django way. However, as I have already mentioned, your mileage may well vary!

Alex Martelli
+1  A: 

I have about 1 year professional experience with C# and ASP.NET and now I have a small web application idea I want to implement but I don't want to use ASP.NET to implement it due to hosting fees and other Microsoft corporate yada yada.I want to use python/django to implement this as it is cheaper to host and a good stack to develop on but here is my problem.

Use Mono.

I haven't really dove deep into C# and ASP.NET and I want to.

Then do it. Python is easy enough to learn on the side, but if you like C# so much, there's no point in changing.

Should I leave this idea on the back burner and really improve my understanding of C# and ASP.NET or should I dive into python/django and develop this app?

It depends. If you have enough time and smarts, you might be able to get the hang of django in a week.

Unknown
A: 

What do you have a passion to do? It doesn't sound like you really want to go with asp.net and C# for your project and what you really want to do is learn Python but have doubts about starting with a new language.

There is no reason you can't do both. Work on your python web app and still learn asp.net and C#. Maybe take some time exploring Python to see if you like it.

I had a similar situation in the past. I wanted to build a web app and thought it would be neat to do it with Python on Google App Engine. However, a little into the project I realized that I could do the project much faster and better in asp.net mvc so I switched and ended up going with what I know better.

I still play around with python but have yet to create anything complete.

metanaito
A: 

Always use the most appropriate tool you have for the job at hand.

A: 

As a Python guy I'd like to note that StackOverflow uses C# to run the site. If I heard Mr. Spolsky's Google talk right its just running on two servers. Thanks to the MS stack including C# he claims that it keeps them from spending extra money on more servers.

That being said I think Python is the bomb as a language. YouTube uses it and has noted that their biggest bottleneck is I/O and not the language. Reddit runs on it but they seem to have problems with the GIL on occasion.

My personal experience is writing applications with mod_python Publisher or directly on WSGI (I have an unwarranted framework-phobia). While trying to write totally custom code I've found out that you either use a framework or you will end up writing one (or end up with a tangle of code). Either way is up to the programmer, this is just an observation of how things have worked with me.

On a side note while CGI and FastCGI are pretty standard on hosted servers, WSGI isn't always available. Futhermore, WSGI isn't 100% the same in every case, and some frameworks have experimental support for WSGI only. That being said I think that WSGI has great potential and am confident that WSGI support will only improve in time.

A: 

From what I see around my area professionally speaking, there is a must bigger interest in C#. In my opinion that will always take the corporate cake. That being said though, for private use, Python is where its at. If you need a project quickly try Python.

Toddeman
FWIW, Python is currently ranked one place above C# on TIOBE: http://www.tiobe.com/index.php/content/paperinfo/tpci/index.html
PTBNL
A: 

I would learn towards sticking with one language and/or platform for a while longer. It's certainly great to spread out and cover more area but you should attain some reasonable level of depth in at least one area before branching out. I've come across more than a fair share of would-be developers who know a little bit about all the hottest buzzwords but have very little actual ability to complete a project. Now, if you said you are not satisfied with C# and ASP.NET and wanted to move on, that's one thing. You indicate, however, that you would like to both add Python to the mix and then come back to C#.

Lloyd McFarlin
+1  A: 

If you are still learning I would stick with C#. As a developer, you probably don't know what you know yet. At least C#/.net, you will have a large user base and community with lots of code to work with. At some point you will achieve a competency in C#/.net, then you will be able to apply this knowledge to other languages where you can at least be able ask a specific question based on your previous experience.

In short, if you are new to software development, I would suggest that you choose a language with a large amount of users, sample code, and community support. Languages will come and go, but the essential elements will remain the same.

Rob