views:

284

answers:

6

I read this post last night and it got me thinking. I like python and "batteries", pypi and such. But I've only done python solo. Never tried it in a team.

Are the points that Ted mentions valid? If they are how do teams cope with them? Does Python work in teams or even large teams? Or it kills productivity?

I personally see the problems he mentions when I come back to my old code. Even when working with other modules sometimes I need to peek inside. I would like to hear people with experience on this.

+6  A: 

Of course Python works in large teams. There are TONS of real world examples of this: http://www.python.org/about/success/

Matt Ball
+11  A: 

Python works fine in teams. Whether a language works in large teams is largely a factor of how well the team works together, and has little to do with the language.

Bryan Oakley
+6  A: 

I currently work on a large Django app, and in my previous job I worked on a large Java project (desktop app, not web, but still appropriate to this discussion), and I'm kind of torn between agreeing and disagreeing with the author.

While I enjoy Python over Java, and have ample experience working with other dynamically-typed languages like Ruby and Objective-C, I'm still not convinced of which is better (static vs. dynamic). Sometimes in Python-land, I do think that it would be nicer to have static types and a compiler to prevent some errors; I don't like Java's type model, but Scala has a decent type system that doesn't get in the way but prevents a lot of errors.

That said, I think the successes/failures of using Python or Java have more to do with a team's experience and background. I feel like this article would be better titled "Straying from Java makes me nervous", since the author seems to mostly be saying, "I have experience with Java. I don't understand/have experience with Python. Thus, I'm more comfortable writing Java code." I think experienced Python developers learn to work with/around most of the "problems" he perceives; Python is not Java and requires a different approach to programming.

I also had to chuckle a bit at this line:

Java has a well thought out hierarchy of checked and runtime exceptions.

I think most would agree that Java's exception hierarchy is confusing at best, and that checked exceptions were a worthwhile but failed experiment that doesn't really make code more robust (I suppose they do if used properly, but how many Java programmers use exceptions properly?).

mipadi
the exception hierarchy has gotten better starting with 5
Justin
java kind of sucks for the high level of noise and boilerplate it requires. however the blogger doesn't mind that.
Warren P
A: 

Indeed, Python does work in large teams, but if you're comparing it to other languages it definitely has shortcomings. For one, there are more team-related tools for things like C# and Java. I've worked in Eclipse on large projects in both Python and Java, and team integration worked better in Java, specifically the doc generation and auto-formatting.

But the one thing I really liked about working on a large Python project was it's readability. In Java I was going to the coders much more often to have them explain code, but Python was easier to understand. Of course, this may also be due to how the two projects were coded, who coded them, and my aptitude in the two languages.

scotly
+1  A: 

I've worked on teams using Java and I'm currently working on a team using Python. All things considered, I would say that the Python code is much more precise and far easier to understand than the Java code that my other teams produced. The whole "There should be one-- and preferably only one --obvious way to do it" mantra helps immensely.

I agree with the author's point about PyDev... my team has been using PyCharm for the past few months and its been AMAZING!!!

The author's point about Python's exceptions, in my opinion, isn't a very good one. In the Java world, most checked exceptions (exceptions that are listed after the 'throws' keyword on method definitions) are usually just caught and re-throws as runtime exceptions anyway. It is widely thought that Java shouldn't even have checked exceptions and instead use an exception system closer to what Python's is currently. See this article for more about Java's checked exceptions..

All in all, I think that working in a team setting with Python vs. Java - I prefer Python. I worked in teams doing Java for 6 years and on a team doing Python for 6 months and I've seen some massive productivity benefits from the clean, readable syntax of Python.

Matthew J Morrison
pycharm past few months? It's not even for sale and there is only 45- day period.
Kugel
Yes, for the past few months... there is a public preview that's free and they're constantly releasing new builds. http://confluence.jetbrains.net/display/PYH/JetBrains+PyCharm+Preview
Matthew J Morrison