Welcome to the Treehouse Community

Want to collaborate on code errors? Have bugs you need feedback on? Looking for an extra set of eyes on your latest project? Get support with fellow developers, designers, and programmers of all backgrounds and skill levels here with the Treehouse Community! While you're at it, check out some resources Treehouse students have shared here.

Looking to learn something new?

Treehouse offers a seven day free trial for new students. Get access to thousands of hours of content and join thousands of Treehouse students and alumni in the community today.

Start your free trial

General Discussion

Struggling to choose my next language...

Guys, I need some assistance. I'm in one of those Paralysis by Analysis spots right now. I've got about 3 years of experience working with PHP, MySQL, MSSQL, JavaScript, HTML, and CSS. I've done some Android development in the past as well with Java. I'd really like to broaden my abilities at this point with a powerful language and a powerful framework for building both simple and advanced web applications.

I've been looking at C# and the .NET framework, Java, Ruby/RoR, Full Stack JavaScript, and Python. JavaScripts ability to work on both the front-end and back-end of a web app is appealing (most of my past is in the front-end with jQuery and vanilla). I see so many sites using RoR though. C# and Java would give me the tools to work on non-web based applications.... You see my problem.

3 Answers

Try something completely different, like Python or Ruby. It may broaden your programming knowledge, even if you don't actually use Ruby or Python very much.

Caleb Kleveter
MOD
Caleb Kleveter
Treehouse Moderator 37,862 Points

I just want to make a case for Swift. Not saying it's the best pick, but I just want to give a few reasons you might want to learn it.

  • You're probably wondering why I am suggesting a language used for iOS for building back-end applications with. Although it was originally designed for iOS, since it was open-sourced in 2015(?), it has been expanded for the server-side also, with frameworks such as Vapor (I'm partial to that one ?)
  • You mentioned you want something powerful. Although I know some people will disagree with me on this, I see Swift as an incredibly powerful language, not only as far as syntax goes, but it's sheer speed in benchmarks [point needs a reference for credibility].
  • There has been some work on Swift for front-end development, though I don't think that will be a thing in the near future.
  • In case you are wondering, there are production apps written in Swift. Vapor Cloud and ReviewSender are two examples of that.

A few cons I should mention:

  • Tooling is not as mature as older frameworks/languages.
  • Treehouse doesn't have a course on it yet (Maybe I can do that ?), though RayWnderlich does

I'm sure I missed something, but that should cover the basics.

The question is not what language should you use but what do you actually want to accomplish when creating web apps and on what platform?

If you want to code your UI and your server separately, you can't go wrong with using Java as middleware (either with Spring or Spark). If you want to more closely align your HTML with your server, and you plan to use a Windows environment, C# with ASP.NET will suit your needs. For either C# or Java, you'll also get an introduction to strongly typed languages and some of the challenges/benefits that provides.

However, if you want a less restricted deployment solution than C# with less typing, you could look into Django or Flask on Python. (Or if you want to do web apps that deal in data science, Python is your language).

But really I say just dabble in a couple of courses until you find you don't want to stop. Or learn them all, because ultimately, once you get the basic concepts down, like strings, primitives, collections, etc., learning a new language becomes about learning the specifics of the syntax (until you get into specific frameworks like Spring or Django which have their own quirks and rules).

(The above does not apply, however, if you want to learn a functional language like Haskell or Clojure. They will make you a better programmer, but they can be very difficult to understand, especially since Treehouse doesn't have courses on them at the time of this writing.)