Selling Python at Work?
June 11, 2006 9:27 PM   Subscribe

I work in a highly regulated industry (big pharma.) I would like to use Python to write backup routines and other simple things. My boss wants me to use C#. What is the best way to sell a new technology?

Here is a little background. I cannot just install what I want: all programming languages must be approved by a board and thoroughly tested. Perl is on the list, but I cannot grok it.

My boss is not a programmer and does not realize that using C# for my purposes, IMHO, is like using a nuclear weapon to kill an ant. However, my boss is pretty cool and will support me within the limits of his power if I can make a strong formal argument.

I know a tiny bit about C#, but I am much stronger in Python.

So what arguments can I make to a formal review board to prove to them that Python is the greatest thing since sliced bread?
posted by SteveTheRed to Computers & Internet (15 answers total) 1 user marked this as a favorite
Arguments about sliced bread might not work as well as demonstrating that you could code faster and manage Python code better than C# code, if you can. If they need to maintain application code with a .NET framework, consider looking into Python for .NET or IronPython as a way to demonstrate how you'd integrate your work into their larger codebase.
posted by Mr. Six at 9:43 PM on June 11, 2006

This list of success stories may be useful to you (assuming you haven't already seen it). There's even a pharmaceutical company on the list, though it looks like their application is much more research-oriented.

Also, if you don't get enough here, you might get some good answers to this if you posted on the python mailing list/newsgroup. There might even be people there who've had to make the argument you want to make before some kind of review board.
posted by advil at 9:44 PM on June 11, 2006

How to convince your company to use technology X in one easy step:

Show them how it impacts the bottom line favorably.

That's really all there is to it. The formal review board doesn't give a fig what language it's done in so long as they save money without it coming back to bite them in the ass. Non-programmers are the final word in language agnosticism: don't show them how Python compares to C# on a feature basis, show them how it compares to C# on things like speed of development, ease of maintenance, costs of hiring Python programmers, etc. Translate these things into money by digging up other cases and fitting them to your situation. Is performance overhead an issue? Factor in hardware costs.

In all honesty I'm not sure if you can win this one because of the rate of corporate adoption of C# (which drives down the bottom line from lower hiring costs), but ultimately you're going to need to tie everything back into dollars saved.
posted by Ryvar at 9:52 PM on June 11, 2006

You should really just learn C#/Java. I put them together because if you know one, you know the other. (or at least that was the case before generics came around).

But anyway, a good programmer should be able to program in any language. I wrote a pretty large program at my last job (about 6,000 lines of code) in Actionscript (the programming language used in flash) having never even seen it before.

The big issue with programming languages from the corporate perspective is "Can I get someone else to take over this project" If you write it in python, that's going to be a lot harder.
posted by delmoi at 10:44 PM on June 11, 2006

Talking about the niftyness and features of the language is a geeky waste of time. What managers want to hear about is how fast it is to develop code in the language, how easy the code is to maintain, and how easy it is for them to find someone else to pick up and maintain your code if you get run over by a bus.

Likely one of the reasons your manager is sold on C# is because he thinks it's easier to find people who know it than people who know Python. And he may be right, too. If so, then you should drop the argument and learn C#, because it's actually the best solution for the company.

I'm with Delmoi: any competent programmer shouldn't have too much difficulty picking up a new programming language. It only took me 2 weeks to learn how to program in a dataflow language called LabView, where my program was entered with a graphics editor and looked like a schematic.
posted by Steven C. Den Beste at 10:57 PM on June 11, 2006

Perl is on the list, but I cannot grok it.

Not a very useful answer, but surely you'd be better off learning Perl than persuading the boss to use a new technology with all the bureacracy involved?

It's not that different to Python and it's perfect for the kind of system task you want to use it for. I'd be amazed if someone confident in Python couldn't get up and running very quickly.

Whatever's frustrating you about Perl, it'd be more valuable to get over than in the meantime IMHO. PerlMonks is a great website/community if you want to get advice.
posted by AmbroseChapel at 11:02 PM on June 11, 2006

Sure, any decent programmer can pick up the basics of a new language easily. That doesn't mean that the new language is necessarily the right tool for the job. The "any programmer can pick up any language" argument is an equally strong recommendation for doing it in Python — after all, the next guy (whoever he is) can just as easily learn Python, no?

Maybe it's just my unix/OSS background, but I know a hell of a lot more people with Python experience than with C# experience. Probably because Python's been around longer. C# is the new kid on the block.
posted by hattifattener at 11:08 PM on June 11, 2006

the books "Perl Best Practices", and "Learning Perl" or "The Perl Cookbook" will fix your problem with perl.
posted by singingfish at 11:14 PM on June 11, 2006

Odds are my customer, a big pharma, is the same as your company since we're both in Indianapolis.

I've never heard of such a thing as getting a scripting language approved by a board, and I worked in a GMP regulated R&D environment, dealing with PCs that directly touched medicine going to humans. I will have to remember to look you up tomorrow to get more details if we really are dealing with the same company.
posted by jeversol at 11:25 PM on June 11, 2006

If these are really scripting-language type tasks and not customer-facing tasks that you just don't feel like learning C# for*, then the question isn't "How do I sell them on using Python over C#?", it's "How do I sell them on using Python over Perl?", since that's the alternative in the target area. Given that you're probably best-off taking the line that Python can do anything Perl can and is more readable and maintainable -- this isn't necessarily true, but it's close enough to true to make the argument. Toss in that list of success stories advil mentioned, add the quotes on the same page, point out that Google uses it, and cross your fingers.

*If they are, then you should suck it up and learn C#, sorry.

It's worth pointing out that installing a new language isn't cost-free for the operations guys -- I know it saves you hassle, but consider that you're committing them to installing something on a bunch of machines, keeping up with updates and security patches, adding a new program to the list of ones that need to be installed on every new machine, maybe even having to debug another program if something's gone haywire and you can't be reached.
posted by inkyz at 12:13 AM on June 12, 2006

Just use perl. You'll pick it up fast, its a very handy language to know for any unix work, & if you ignore a lot of the bizzare syntax, it can be very readable and maintainable.
posted by devilsbrigade at 12:41 AM on June 12, 2006

Yeah, I love Python, and I have forsaken my first love Perl for her charms, but you should bite the bullet and learn Perl. Perl originally achieved its great popularity a few years ago because it was easy.

Come to that, C# is pretty easy, it's a great addition to your CV, and the overhead in in keystrokes isn't that bad with a good IDE. Sure it's overkill for scripting, but you can do it.

But if you want to argue for Python and you really think it's the best way:

- Python has great readability compared to Perl. Python has been likened to "executable pseudocode". Therefore anything you leave behind in Python is likely to be easier to maintain by your successors.
- Perl's "there's more than one way to do it" philosophy is a double-edged sword. What's easy for one person to do in perl is hard to understand for another. Again, anything you leave behind in Python is likely to be easier to maintain by your successors.
- There are Python implementations for .net and Java runtimes, increasing both portability and the integration of 3rd party code (brownie points for yer C# loving superiors there).
posted by i_am_joe's_spleen at 1:56 AM on June 12, 2006

The other argument about Perl, of course, is that Perl isn't so widely used because of Perl itself, but because of CPAN.

There's a module for just about anything you can think of. Just last week I was asking for help on a mass-FTP task using Net::FTP which kept dying on me. I've been using Perl for years, but when I asked "how do you get Net::FTP to auto-reconnect?" the answer came back "you use Net::FTP::AutoReconnect". D'oh! No matter how wonderful Python may be, it doesn't have these thousands upon thousands of modules, proven and tested over many years.
posted by AmbroseChapel at 3:14 AM on June 12, 2006

The other big problem with new languages in a corporate setting is that they will eventually need someone else to support it. You know python, but it's not part of your job. Now if you use python for your job, your replacement needs to know python too. That's often why these things are standardized in the first place.
posted by smackfu at 6:44 AM on June 12, 2006

Thank you all for your great answers.

jeversol: You are probably right about which company I work for. Thank you for not naming it outright. There are actually two big pharma companies that have facilities in Indy, so that gives me plausible deniability :)

I will take the advice of many here. I will suck it up and get over my aversion to perl for the scripting and I will learn C# for the heavier stuff in the future. i_am_joe's_spleen is right, it will help my CV.

I've looked over the introduction section of the ECMA-334 standard. There are quite a few alien concepts there, but that's half the fun, right?
posted by SteveTheRed at 8:35 AM on June 12, 2006

« Older Help me make a flip-flop charm entirely out of...   |   Looking for advice on how to torment Sims Newer »
This thread is closed to new comments.