Ask HN: What language should I develop in?
I'm currently working on an idea for a community management app and as I'm not technical. I was wondering what the pros and cons are of developing in a certain language. Languages that have been recommended so far include; Ruby, PHP and Python.
Any advice would be greatly appreciated.
If you're interested, here's the app I'm developing: http://getnudge.co/
44 comments
[ 4.1 ms ] story [ 101 ms ] threadIt takes 3 months to get okay with something. 6 months to be decent. 9 months to be like, okay, I kind of get this, and then at the end of the year you'll probably change your mind and try something else.
I tried PHP, it was easy. Too easy. Hated it.
Tried Ruby, then Rails came on the scene and it became cool. Ended up hating it too.
Now I'm on Python. Learned Django. Tolerating it, but switched to Flask.
What I really want to master is JavaScript, closures, then node.js and AngularJS.
Just start. You can switch after. And to be real, making websites is actually really easy with any of the languages. Whatever you're thinking of doing there's probably already ten other projects on Github that has redone what you're thinking of that you will end up using.
It's the deploying, that perfect minute customization that you really, really, really want, scaling, and long term maintenance that's going to be tough.
Also, Django REST framework is utterly amazing for building APIs.
For this project - as I'd like to develop is asap - I may outsource and learn alongside development with the aim of one day being able to maintain and develop myself. Though I know it'll be a lot of hard work and probably a long time before I'm in a position to do that.
Thanks again for your feedback.
Plus the guy you hire won't slow down enough or likely won't be able to explain whatever code he's copying and pasting for you.
Start here: https://docs.djangoproject.com/en/dev/intro/tutorial01/
Give it a month.
You'll get it.
Once of I kind of get the hang of a language/framework, I end up copy pasting the heck out of everything until job done, then move on cause I'm bored.
Often I move on before I've "mastered" something, because I get bored, generally having an idea how everything is working, and put it on the shelf of nice2know tools.
>It's the deploying, that perfect minute customization that you really, really, really want, scaling, and long term maintenance that's going to be tough.
If it is a client project it will go to that stage, otherwise I'm happy to learn something new just to learn.
So whatever. In every language you pick you will have your "wow" and "meh" moments.
If you have a friend that can help you when you're stuck in any of these languages it would be a good reason to choose one over the others.
Do you know people using one of the languages? If yes, you could ask them about problems you have. Will be easier than going to stackoverflow.
Having contacts / friends who could help is also an advantage.
I taught myself to program using PHP, then moved to Rails, and now do mostly Javascript and Node work.
There are a few things to consider. Number one, you're absolutely going to need a front-end, which means you're going to need to learn javascript, and probably use a framework like backbone, angular, or ember. Personally, I think knockout may be the easiest of all of these to 'pick-up', but none of them (I don't think) are going to be easy as a beginner.
At first, I'd suggest your back-end can wait. You can use parse or firebase or one of the other back-end as a service providers to manage your data. Just make sure you're able to get it back later.
Now, if you're adamant about doing the server-side stuff, I'd say go with Ruby-on-Rails, which is a framework for making it easier to build and manage an application written in Ruby. The framework does a lot of stuff for you, and you can host it on heroku fairly easily.
A few good things about Rails (I haven't used other frameworks like Django (Python) or Larvel (PHP)), is that it forces you to have a program structured in such a way that if you bring in another developer at a later date, they should be able to find their way around your code base fairly easily. That's what got me to make the switch, I was doing a contract I knew I wouldn't be working on long-term, and new that a rails app would be easy for somebody else to step in on.
Absolutely, do not do this. Just use jQuery at first. Don't use a framework until you experience WHY you need a JS framework.
Let me know if you need some recommendations!
Currently I know a bit of HTML and CSS and I'm looking to 'master' both of those and then pick a language to try learning. Though after reading your reply, I feel I need to learn Javascript too.
Really appreciate your thoughts on Ruby and thanks again for taking the time to reply.
Keep it up
Appreciate the feedback. Is it something you'd personally use?
That being said you should just choose a popular web framework like Ruby on Rails or something like CakePHP. This means that any problem you run into will have been encountered and solved by someone already and you can pretty much just Google your way to a half decent prototype.
I'd love to learn a language too, and eventually be able to develop/maintain apps myself. But for this project, I won't have time to learn.
Thanks for the feedback.
I suggest you to choose some options, play with them for a short time (2 days - 1 week), and finally go for one of them.
Mostly real answer: Ruby, PHP and Python are fine choices. Avoid Java, C++, or C#.
Relevant answer: Assuming you want to get something done before "becoming technical" (if ever) Python, by a wide margin - but more than that, you have to pick a framework to work in: Django, Web2py are the two I'd recommend looking at.
Far out answer: Look at Tersus.com - If your app fits tersus (and many do, at least in their prototypical/MVP stage), you won't have to program anything, you'll just have to draw an annotated diagram.
Can I ask why? I'll fully admit to being a C# "fanboy", as they say, at this point in my career, but that's because it has so many features and syntactical constructs that are amazing and that I simply NEVER encountered elsewhere in my schooling, internships, or career. I simply feel more able to turn my actual ideas of what I want the computer to do into code with C# than anything else I've used, including Python (distant second) and Ruby.
PHP : while easy to learn, i would not recommend it.It's an old badly designed language that has little future outside cmses.I only use it to customize CMSes today,i would not develop any app from scratch with it, furthermore writing PHP is awfull compared to Ruby and Python.
NodeJS: While Javascript everywhere seems like a good idea(you'll have to learn Javascript to script the browser anyway), NodeJS use async programming , and async programming is hard,no matter what people say, furthermore Node is not mature yet, especially its libraries.
Java(JVM):If you have time try it(Spring/Play/...). It will feel hard and verbose but You'll learn a lot of interesting concepts. If you want to code a prototype quickly forget about it. And Java has a lot of very good and mature librairies.
So if you want to develop an app quickly and you care about how your code look like, go with Python or Ruby. If you have more time go with the JVM.
Also check basic informations on these topics :HTTP,Rest,OAUTH you'll need them pretty quickly if you want to interact with Twitter.
Best choice if you can get Visual Studio (paid) along with ReSharper (paid).
Will let you target all mobile platforms via Xamarin (paid) (since you want to develop an app as opposed to a website).
If you want to get a prototype quickly rather than focus on code quality then one of the purely dynamic language options would also be OK.
1) gamedev => MonoGame 2) business (SQL DBs) => NHibernate 3) web => SignalR
I personally never learned by participating in OSS but times change.
However if all you want to do is build this one product, then you need to evaluate which framework is easiest to get started in. So, choose a feature and build it in a few different frameworks and decide which one clicked for you.
My recommendation is to try Rails, Django and CakePHP. If you're feeling brave, Meteor (in Javascript) is worth a look. Figure out what worked for you, and what didn't and make the decision from there. You might like Ruby but hate Rails: try Sinatra. You might love Javascript but hate the conceptual building blocks of Meteor: try Node.js. And so on.
There is a lot of personal preference going on here, and I presume this is for now a side project so your focus should be on having fun. I think if you can get your head around it, Rails will be the one that gets you the fastest from "I have this idea" to being able to use it.
I started with PHP (3 back then) because I had built (copy paste amalgamation) a website, and I didn't want to maintain all these html files, so probably altavista'd something in the lines of "how to include other page into page html" . I know back then I was also messing with Newsdesk, which was CGI/Perl, and remember adding some fields to the whole thing so my buddy's could post their Warez uploads on there.
I actually ended up with one of the biggest Warez sites in the scene at that time. I actually had mostly no idea what I was doing. And there was no Google back then. Altavista ruled the market.
Anyway what I'm going to is: If you do not have this mindset, you will probably not make it as a programmer. And that's ok, because maybe you have different goals. Just make sure you understand what you want to do.
There are a huge amount of musicians who probably never imagined being great or a rockstar, they just liked playing music and figured out how.
Last note: if you're picking between for example "PHP" , "Python" , "Ruby" I would definitely start working with a framework, because it will help you start off the right way; using a design pattern and command line tools.
It happened to me 3 times the same way: we started with X in a year or 2 we ported to Y.
Personally, I would go Ruby or Python, they're pretty much solid, lots of devs around. Then, if you have the need to scale: i loved Erlang, but I like also Go a lot.
You might want to try a few languages such as Python, Ruby, PHP, Javascript, etc. I would suggest to focus on the language first and then the frameworks.