I am part of a small (read: two programmer) startup, and we are about to start developing a large (we estimate it will be about a year before customers will see anything) web application… And it's come time to pick a language.
Most of the experience I have is with Python, most of my co-worker's experience is in Java and C++, but they would like to learn Python.
But, if that was all there was to it, I wouldn't be posting here :)
My boss is worried that, if we commit to developing in Python, we will be increasing the risk that it will be hard to find new programmers or replace us if we get hit by a bus.
I have opinions on this matter, but I don't have any experience to back them up... So I'd like to know:
- Are his concerns valid?
- Do you have evidence that it's hard/easy to bring a new programmer on board if they don't have experience with the language/framework you're using?
- Have you been in a similar situation, and have some wisdom you could share?
Thanks!
Edits
- Thanks to dmckee for pointing out a similar question, http://stackoverflow.com/questions/954164/choosing-between-java-and-python
- It would be easier for my current co-worker to learn Python than my replacement, because my current co-worker will have me sitting next to her (not to make myself out to be anything particularly special – but it's easier to learn something if you've got a teacher with experience)
- Some have suggested that my boss is asking a silly question… But the reason I'm asking here is that I've got a lot of respect for him and his business sense (something I, as a programmer, have less of), so I want to take his concerns seriously and give him a good (read: "reliable and devoid of superstition") answer.
- I don't want to suggest that we'd want to hire the next idiot Java developer… But I believe that there are more "good" (read: "maybe not superstar, but solid and competent") Java programmers in the world than there are Python programmers.
- A few people have suggested that statically typed languages are easier to maintain. I'm willing to believe that, but only if someone can point me to evidence which supports it (I have maintained a large (25k LOC) Python application, and I don't think my task would have been significantly simpler had it been statically typed)
Accepted
Thanks, everyone, for your responses – they are much appreciated.
After reading through all the answers and linked articles, I have come to these conclusions:
- When dealing with an established language, the most important factor should be experience (as learning a new toolkit will cost a lot of time, regardless of the language).
- Without exception, everyone has said that any competent programmer can pick up Python (or any other sane language) in relatively short order, so we need not worry too much about being hit by a bus.
- Assuming equal experience in Java and Python, Python seems to be the favorite choice for all the reasons you would expect: time to market, average programmer quality and syntactic clarity/expressiveness.
- Some good arguments have also been made for Java, in that it's got more "stuff", especially enterprise "stuff", available (Python people: if you can't admit this, you're in denial), there are more experienced (and competent) Java programmers and Java can be faster.
- Static typing, however, is not a good reason to consider either language, as for every person who says they think it's helpful there is another (or even two others) saying you're fine without it.
- Python (or any language which can run on the JVM) is a good choice, because it leaves the possibility open of interacting with Java code down the road.
Again, thanks for the responses – they are very much appreciated.