So there is a website that I want to build. It will be a review aggregator and probably a bit more. I want to build this website for three reasons:
- I really think this website will be used by a reasonable amount of people
- I want to practice my programming skills since currently at my job I am doing mostly scripting
- Maybe learn a new language. I am currently torn though since my immediate reaction is that I want to use Java since I know it relatively well, like it, and feel it will allow me to put something up as quickly as possible. I would also like to use an existing Web Application Framework.
If I don’t end up going with Java I would probably go with one of the following:
- C#/.NET – I prefer static languages, and this is similar to Java.
- Python – I use this at my job superficially and it seems that a lot
of people are using it. - Ruby – Seems to have a very well established framework
- Scala – Has some similarities to Java but from what I read it’s a
different paradigm
So I guess my question is under these circumstances do you think that I should build a website using a known language or a new one?
Definitely learn a new language or library with this project in these conditions. Your website seems like it’s not under pressure to ship immediately, so you can take the time to learn something new as part of building the website. You can build a couple of toy ones to start, and iterate to a stronger understanding of the tool you’re trying to add to your toolset.
Learning a different programming paradigm is a great way to expand your horizons as a programmer, and leave you better prepared to deal with unusual code later in your career. This is one of the ideas behind the book Seven Languages in Seven Weeks, which would be a great way to stretch your brain. Even if you go for something you know better in this case, grab the book and work on it. It can give you insights into programming problems you might not otherwise have.
Of the options you list, I think learning Scala would probably stretch your brain the most, as it is the most different paradigm to Java on that list. Scala has some strong functional programming aspects, which provide a contrast to the OOP paradigm of Java. Scala works on the JVM, so there are probably plenty of Scala development tools that would plug into tools you’re familiar with from your Java development. This could get you up and running sooner, and reduce overall frustration.
I’m primarily a Python programmer, so I think this would also be a good choice. Learning more Python could make you more productive at work. Also, Python is a multiparadigm programming language, which would give you an opportunity to learn elements of functional programming and imperative programming paradigms in a language that you already have some familiarity with. in a language There are a number of web application frameworks for Python with years of history behind them. I’m most familiar with CherryPy, but it’s old and weird and you might be better off starting with Pyramid, Django or something simple like WebOb.
Most importantly, however you choose to build this project, keep stretching yourself and challenging yourself. A broader understanding of programming and programming languages makes it easier to later pick up new languages and frameworks when you inevitably need to do so. It’s a great investment into a vital programming career.
1
Maybe JWT: http://www.webtoolkit.eu/
Instead of a new language, I’m suggesting a new library, that may be useful in another language (c++) later.
It’s a new style (as far as I know) of website frameworks; it treats the webapp as a gui app, so instead of the request+response style, it’s more a like an event based programming model.
There’s a Java version and a C++ version. It’s a bit low level compared to a lot of frameworks out there, like if you want to resize images to create thumbnails, you’d just use your external lib of choice.
It has good fall-back mechanisms, like it’ll use websockets if available, then fall back to ajax, then to http.
It’s cool because a lot of code you can write all on the server, like event handlers, and if it can predict the DOM changes, cached on the client for instant results in JS, or even work (to a limited extent) with just http.
Check out the widget gallery: http://www.webtoolkit.eu/widgets/forms
1