+5  A: 

Google uses it!

Javier
+4  A: 

My justification would be along the lines of preparing for cross-platform compatibility in the future. Yes, Perl is available on multiple platforms, but it doesn't enforce good coding style as typically as does Python.

If you needed to be able to point to applications using Python, the following pop to mind right-off: Google; Smithsonian website (Plone); NASA website (Plone); Red Hat's installer (Anaconda) and update utilities (yum and up2date); Zenoss network monitoring; Rice University's Connexions site (Plone with extensions); more here: http://plone.net/sites.

The product I work with on a daily basis for handling server management utilizes Python heavily, and it's used by dozens of top companies around the world on [almost] every major platform: HP-UX, AIX, Solaris, RHEL, SuSE, Windows. (No shameless plug for my employer or the product name!)

I'd personally argue that finding Python developers will also tend to make those applying more likely to be Good, but that may be personal bias.

warren
+3  A: 

You ask "what specifically could it do that we can't do today?" Since you probably are asking what things Python makes much easier to save time/money, you may find this stack overflow question helpful (the first answer lists lots of things that Python makes easy that are much more difficult in Java): http://stackoverflow.com/questions/49824/java-python

Also, as far as introducing Python to your team, someone else asked a similar question, and the first answer details the pros and cons of switching and when it might be a good or bad idea: http://stackoverflow.com/questions/19654/introducing-python

Plus, as others have pointed out, Python is used by Google, the Washington Post, Industrial Lights and Magic, and NASA. So hopefully that should help overcome any objections that real projects/businesses don't use Python.

Eli Courtwright
+3  A: 

You can get more done in less time.

It's easier to maintain.

You don't need to change languages to rewrite something that started out as a script and has grown into an application.

Bill Barksdale
A: 

For many classes of problems, Python hits the sweet spot of power-vs-development speed: it's significantly more powerful (and maintainable) than batch/VBScript, but has a lot less overhead (and is usually much faster to develop in) than Java et. al.

Kevin
A: 

Python lets you migrate your code to cheap Linux servers should you want to, or lets your GUI applications run unchanged on OS X.

If Microsoft ever abandons .NET, it's dead. Think that won't happen? So did my company when we wrote hundreds of KLOC in Visual FoxPro. So did all the people stuck with huge VB6 codebases that can't be migrated to VB.NET. If Google gets bored with developing Python, there are many other qualified groups who could step in to maintain it.

I also firmly disagree that Java or .NET can solve "bigger" problems than Python. I really can't think of any projects I've seen in either of those that couldn't have been done in Python.

So, I guess I'd turn the question around. Given a well-supported, popular, cross-platform, Open Source language suitable for tiny and huge projects, why wouldn't you pick it?

Just Some Guy
By "bigger" problems, I meant bigger than existing scripting techniques could solve.
Jibba
Oh, I see. I misread that.
Just Some Guy
Just because the code can't be migrated doesn't mean it stops working or amendments/bugfixes can't be made. .NET will be around for a long time, it was a much needed replacement for the sprawling, inconsistent and inflexible way that was Win32/COM.
Kev
Actually, it very well might mean exactly that. We've been assured that VFP might be made to run on Vista, but who knows about Windows 7? .NET will be around as long as it serves its purpose, but when MS decides to EOL it and its tools, you'll likely have no way to maintain it yourself.
Just Some Guy
+20  A: 

"but from a business point of view it's not that easy." It's worse. From a business point of view technology change is essentially impossible.

In order to make "business case" you often need incontrovertible, absolute return in investment numbers. There aren't any such numbers for any programming language. Show me the ROI for VB or Java, and I'll show the ROI numbers for Python.

So, you can't really do this in "hard" dollars and cents.

Further, every business person will raise the "risk" issue. What's the risk of new technology? What's the risk of change? What's the risk of driving to work in the morning? What's the risk of the sky falling?

There's only two "business cases" that actually work when you don't have risk-free dollars and cents kind of numbers.

  1. Someone else is doing it and we're losing position because we're not.

  2. We're already doing it somewhere and those folks are happier, more successful, richer, thinner and better looking.

The first approach is called "benchmarking". The second approach is called "skunk-works".

The skunk works approach makes you put your money where your mouth is. If it's better, then succeed using it. Once you succeed, the business case is -- well -- indisputable.

S.Lott
THIS is precisely my dilemma...well put. Skunk-works it is then...
Jibba
The skunk-works approach is the one I used. Although it was more of a "black-ops" approach. They wanted things done, so I started doing some of them in Python under the radar. When they saw how fast things were getting built, and how easy they were to maintain, it was a no-brainer.
Jeremy Cantrell
".. thinner and better looking ." LOL.. Helps with acne, too.
stimpy77
+1  A: 
  • Bring up specific APIs and/or features that could solve real problems you have
  • See if it can bring exitement to the rest of the team before making the case
  • Microsoft "supports" it (and it runs on .NET)
Cristian Libardo
+2  A: 

what specifically could it do that we can't do today? I've had this discussion with a co-worker of mine who loves Python. From a developer's point of view it may be obvious, but from a business point of view it's not that easy

Why in the world are you trying to push for a change to Python if you don't know that it will save you time or money?

You cannot divorce the technological reasons from the business reasons. You exist at work to save money with technology. They are not at cross-purposes.

If you can't answer this question yourself, you have no business trying to convince someone else that it's a good idea.

Andy Lester
+2  A: 

Try teaching anything else to non-programmers. Python is readable and can be made simple enough for non-programmers to maintain. Yet it is full-featured enough to do anything. Python is indeed "batteries included". It does run everywhere and powerful packages such as SCons make it a no-brainer.

humble_guru
+3  A: 

This is where I would start:

From a developer's point of view it may be obvious, but from a business point of view it's not that easy.

it will make development more efficient and more stable, saving time (=money) and increasing quality. Here are the beginnings of a justification of this.

The General Principle of Software Quality is that improving quality reduces development costs. --McConnell, Code Complete

-

Small is beautiful:

The odds of failure for a software project are directly proportional to the size of the project. Slicing a large project into several smaller subprojects is the single most direct way to increase your project's chances of success. The relationship between lines of code and bugs is completely linear. Fewer code means fewer bugs. Smaller code avoids TL; DR (Too Long; Didn't Read) syndrome. The less code there is to read, the higher the odds are that someone will actually read it. If you keep your dependencies to a minimum, your code will be simpler and easier to understand. --Atwood, Code Smaller

-

You should do whatever possible to increase the productivity of individual programmers in terms of the expressive power of the code they write. Less code to do the same thing (and possibly better) --Skrenta, Code is our Enemy

Some personal bullets:

  • Industry studies have shown a two- to five-fold increase in programmer productivity when using a high level language.
  • The industry started in assembly, migrated to C, and now migrates again to HLLs.
  • HLLs enhance programmer productivity, LLLs give raw performance.
  • Games are performance critical, but only in certain places. Simulation is computationally intense, game logic not. Use a HLL - when you can: pay a small runtime performance cost, and receive a tremendous boost in developer productivity. Whats the point of making the code you write fast, if you don’t have enough time to finish the product?
  • If you write something and find its too slow, you can always go back and optimize it.
  • You can’t recover time spent writing code that was abandoned. Prototype in HLLs.

If python isn't a huge improvement over whatever other scripts you are using, then perhaps it actually isn't worth the effort.

Dustin Getz
A: 

You can start small by writing any new helper scripts (e.g. build files, utility files, etc.) using Python instead of VBScript or batch files. This allows other developers (and managers) to see the usefulness and versatility of Python. This is a low risk path. As others in your organization become more familiar and comfortable with the presence of Python then perhaps later on it can be a more palatable option to use Python on bigger projects.

Using Python for general scripting in place VBScript and batch files is not unusual in the Windows world. Microsoft supports it on its TechNet site as one of the languages (alongside VBScript, Perl, etc.) for which it provides sample scripting files.

Ray Vega