<p>I would be interested to learn about large scale development in Python and especially in how do you maintain a large code base?</p>

<ul>
<li><p>When you make incompatibility changes to the signature of a method, how do you find all the places where that method is being called. In C++/Java the compiler will find it for you, how do you do it in Python?</p></li>
<li><p>When you make changes deep inside the code, how do you find out what operations an instance provides, since you don't have a static type to lookup?</p></li>
<li><p>How do you handle/prevent typing errors (typos)?</p></li>
<li><p>Are UnitTest's used as a substitute for static type checking?</p></li>
</ul>

<p>As you can guess I almost only worked with statically typed languages (C++/Java), but I would like to try my hands on Python for larger programs. But I had a very bad experience, a long time ago, with the clipper (dBase) language, which was also dynamically typed.</p>

my 0.10 EUR:
i have several python application in 'production'-state. our company use java, c++ and python. we develop with the eclipse ide (pydev for python)
unittests are the key-solution for the problem.
(also for c++ and java)
the less secure world of "dynamic-typing" will make you less careless about your code quality
BY THE WAY
:
large scale development doesn't mean, that you use one single language!
large scale development often uses
a handful of languages specific to the problem
.
so i agree to
the-hammer-problem
:-)
PS:
static-typing & python