When I write Erlang and I hit ":" after a module name, I immediately see a list of functions with arity and docs, thanks to Distel. The same is true when I hit a "." when writing JavaScript, thanks to js2. It's the same for Python, too, thanks to elpy.
There is a great support for refactoring too - for Python it's Rope and it works quite well. It's a bit slow to start sometimes, but that's equally true for "bloated Java IDEs".
I don't think there's anything my teammate can do in his PyCharm which I can't in my Emacs. And if there is something like that, and it's useful, then I'm sure it will come to Emacs soon enough.
To summarize: Emacs is an editor for programmers and can be programmed (with 3rd party or your own scripts) to have any feature you'd like. Setting up an Emacs environment which is on par with other IDEs takes a bit of work, but is possible.
There is a great support for refactoring too - for Python it's Rope and it works quite well. It's a bit slow to start sometimes, but that's equally true for "bloated Java IDEs".
I don't think there's anything my teammate can do in his PyCharm which I can't in my Emacs. And if there is something like that, and it's useful, then I'm sure it will come to Emacs soon enough.
To summarize: Emacs is an editor for programmers and can be programmed (with 3rd party or your own scripts) to have any feature you'd like. Setting up an Emacs environment which is on par with other IDEs takes a bit of work, but is possible.