It’s a good introduction for the non-technical manager to Python in the enterprise. And the article’s comments (so far) are good reading, too. If you’re looking to gently introduce the notion of Python or Django to a manager, you could do a lot worse than start here.
I often find the “cons” of a pro/con list piled on a little too thick and high in a technical-introduction-for-the-nontechnical article. Many authors feel safer criticizing a new alternative, perhaps because the status quo is their safe harbor. But I think Martin paints a fair picture. The major cons he notes are:
The main disadvantage of using Python in an enterprise setting is that Python programmers can be harder to find than, say, Java developers. Python is easy to pick up for an experienced programmer, but the plethora of books, training courses and certifications in the Java world cannot be matched by Python.
Furthermore, the power and expressivity that Python offers means that it may require more skilled developers. Java or C# are more restrictive by design, forcing programmers to adhere to stricter rules around type safety and interface compliance. For some, that hinders productivity. For others, it reduces mistakes or accidents of design.
Python may not be an appropriate choice if you:
- Are building embedded or massively parallel systems for which a scripting language would be an inappropriate choice (due to concerns about execution speed)
- Build primarily desktop applications, especially for Windows. Platforms like .Net usually offer more sophisticated tools and easier distribution of the final software.
- Rely on teams of less-experienced programmers. These developers may benefit from the wider availability of training for languages like Java and are less likely to make mistakes with a compile-time, type-checked language.
- Have specialized needs better served by other languages that you already know. For example, if you want to do a lot of text processing and you have a basement full of Perl programmers, there’s no compelling reason to switch.