Personally, I think that what you define as "biting" is just something novice programmers go through, not something that applies to trained professionals who know the difference between memory managed by reference types and dereferenced pointer types (example).
It's all about speed of development really. All languages discussed are mature, potent languages with certain disadvantages and advantages. Simplicity and readability have always been a trophy reserved for C style synthax (C, Java, PHP, C#, etc). Feature set and depth of capabilities traditionally belong to Python style languages (Python, Ruby, others).
The result is that you'll see that the more rigid the project and the more people working on it, the faster companies will go for Java, C++ or C#. Python and Ruby are languages most often used by smaller groups of people looking for a rapid deployment of complex (web) behavior. At least, that's how I feel the business works right now.
If you write a complex codebase in Java, and hand it over to another team, they will easily be able to understand and reuse this codebase (provided you stick to analytic object oriented design, which is a given in Java). If a complex codebase in Python is handed over, things will not always go as smoothly, as the complexity of the language features and synthax tend to obfuscate algorithms, decrease readabilty, etc.
In professional software land, language is not really an issue when talking about one man teams. Choose whatever works best for you. When talking about big teams cooperating (a plethora of programmers working on a codebase over a span of years), you'll see language, platforms, API's becoming very important. The language chosen will depend on the workflow of development of a whole company, which is about complex analys, money, time, personalities, available training to staff, etc.