(This is a snapshot of my old weblog. New posts and selected republished essays can be found at raganwald.com.)

Saturday, March 01, 2008
  The "Python Paradox," Redux

The only way to get Ruby into the enterprise is if a strong champion threatens firings unless it happens, actually fires the first suspected saboteur and builds the first version of the new application outside the company in secret. It may sound extreme, but take it from a guy who’s done six such applications at four organizations.

People generally love the Ruby language, which is why there are so many enthusiastic adopters when it’s compared with other languages. When I recently spoke at the CUSEC conference I discovered that most of the college students either were working with Ruby or planned to adopt it. Either that, or they used Java because their university required it. Very few were interested in languages like Python, Perl, Java or C, except when it was required or could get them a job.

This has probably been the most overlooked “feature” of Ruby by most people advocating it: Young kids actually want to work for you if you build software in Ruby or Python, Erlang, Haskell or Lisp. To this new crop of programmers, languages like Java and C++ were written by stodgy old blowhards who would much rather build hardware than languages. The young programmers were forced to grunt through poorly taught classes in Java or C++ that had more to do with learning each language’s esoteric syntax than with the actual material in question. Ruby and friends are the languages they learned for fun: to play around with interesting ideas and to use when they hang out with friends online.

When considering in what language to write your next project, remember that your primary goal is not arbitrary technical concerns such as performance or scalability, but rather whether you can maintain a solid stable of smart developers long enough to make the project successful. Ruby’s popularity and lovable ways can attract smart, eager people to your firm, even if the project is something boring on which they normally wouldn’t want to work.
Zed Shaw

Comments on “The "Python Paradox," Redux:
Cue the chorus of people saying that when choosing a language, performance and scalability are much more important issues than the type of people interested in working on your project.

When choosing a language, performance and scalability are sometimes as important issues as the type of people interested in working on your project. Most projects don't require those things beyond a certain degree that languages like Ruby and Python already meet. But without good people, whatever you're developing will never perform well or be scalable.

In my experience, most business problems involve lot of CRUD and not a whole lot else. Pretty much any language is good enough to do that.
The main problem with this approach is that the fad might well decline, stealing away your project competitive advantage, the tools and the community around your language.

Moreover, who *REALLY* think java, C, C++ have never been hype in the young community and that they where created in a tob-bottom way at IBM (the most uncool company in the IT world) and mandated their use by the CIO in their first use at the company ?

Each new wave targets the precedents as "the lame way to do it". Haskell is four years older than java (even if its technology is more recent than java's). But your project needs to pass through each wave if it is built to last. One way might be a rewrite for some selected waves, the other way is no rewrite and keeping the technology ; if it is the case, you have to catch a fairly big wave or else the future of your project is at risk.
I'll agree with that. I'm young (28), and would be far more interested using a "minor" language than a major one. I took my C++ programming courses in college. Lots of syntax. (It was all helpful ultimately... but it simply got annoying.) I bought the Camel book and learned perl, and loved it, because it was simply more fun than c++.

Rather than feeling Java and C++ were written by old-timers I think the draw to other languages has more has to do with the pleasure of doing something "different". I mean, lisp is ancient, and while c is old, I have nothing but respect for it. It is when you when you first see something like a functional language and say "wow, that's cool!" that you're drawn away from Java/C++ land. Who cares the language is 40-something years old... it's new to you. At that point that you investigate what you saw because you were interested, rather than for necessity. (Plus, I can't imagine that long, strict syntax is a turn-on for most people. Its not for me.)

Maybe I don't represent everyone, but my bookshelf contains 3 scheme books, an eiffel book, a smalltalk book, 3 ruby books, K&R... my 3 old c++ school books (virtually untouched since then), and 0 java books.
Is Python "in" or "out" for you?
You state "Very few were interested in languages like Python ...", then "Young kids actually want to work for you if you build software in Ruby or Python ...".

- Paddy.

A good question to ask Zed. I also noticed that he has placed Python in both camps, however I thought altering the quote to leave Python out would make it less interesting.

So... What do you think? Is Python in or out?
Hi Reginald,
In my industry of Electronic Design Automation Python is out but rearing its head in interesting places.
My company uses TCL; Skill, (a Scheme variant); and Perl as its scripting languages rather than Python, which I would prefer.

- Paddy.
Hey Reg,

Did you consider doing an article comparing Python and Ruby languages as Dare did for C# and Python?



As soon as I have 5+ years of real world experience with Python, I'll write that article.
I find the Ruby/Python thing to be very much a local issue.

Zed noticed that many young people at CUSEC were interested in Ruby. That's because the Ruby community is pretty big and active in Montreal compared to the Python community (which I honestly can't even really find).

I have however noticed that there's a pretty big and active Python community in Toronto. I'm not sure how Ruby is faring there, it seems to me that Python might be bigger (though the disparity probably isn't as great as in Montreal).

I think it's one of those MSN Messenger vs Yahoo Messenger things. You use msn because your friends use msn and the same goes for yahoo. A network effect spiral takes place and one completely beats out the other in a certain area but in other places where the competitor had more momentum the competitor is the one that took the entire market.
"The only way to get Ruby into the enterprise is if a strong champion threatens firings unless it happens, actually fires the first suspected saboteur and builds the first version of the new application outside the company in secret."

This is very similar to what happened at a company a friend of a friend worked for (ahem), but the order of events was different.

The Java coders hadn't meeting their deliverables in a timely fashion, for months. Frustrated, some devs coded an alternative -- a collection of Ruby on Rails proofs-of-concept -- over a long weekend. The CTO was persuaded, and switched the company over to (mostly) Rails.

A lot of toes got stepped on, but (IMHO) the company would still have an unreleasable product instead of one that's been up and running for a year.

At another job, this friend (ahem) worked on a project done in Python because their CTO was enamored by it. The results were not very successful (IMHO, mostly because of wheel-reinventing and poor architecture decisions), but the project is still going strong, almost seven years later.

In both cases, it took sponsorship from the CTO to get the company to bet its future on a relatively-unproven language like Ruby or Python.
> "So... What do you think? Is Python in or out?"

In my specific situation I feel that Python is out. It is only utilized in a certain set of cases, and when it is used, it's an outdate version of Jython and is shackled by a terrible proprietary API.

Dear Enterprisey Bloatware Makers,

Please don't take a great language like Python or Ruby and then Java-fy it with a giant over-designed API just to make yourselves feel like you've accomplished something. We all know that you'd be out of the job if AbstractFactoryFactoryController classes weren't in such high demand.

Programmers Who Have to Suffer Through Your APIs Everywhere
I started reading raganwald weblog just a few days back and the first topic which I didn't like is this one. As such the topic is not the problem but the discussion following it. What I am taking from it is that Ruby can help enterprises better and one should start considering Ruby while exploring the languages.

Btw How many times we are going to discuss the pros and cons of a language and dissecting the features.

A fruitful discussion could be stating a better scenario or a specific implementation done on the particular language and how it helped as opposed to some other language.

I dont think Python or Ruby will stay on forever since C++ and Java haven't

Well, I think I *am* one of those kids that you (hopefully) want to work for you. I graduated from college in 2004.

While any of {Python, Ruby, Erlang, Haskell, Lisp} would be awesome, I am by default a python coder. So that's one data point.

<< Home
Reg Braithwaite

Recent Writing
Homoiconic Technical Writing / raganwald.posterous.com

What I‘ve Learned From Failure / Kestrels, Quirky Birds, and Hopeless Egocentricity

rewrite_rails / andand / unfold.rb / string_to_proc.rb / dsl_and_let.rb / comprehension.rb / lazy_lists.rb

IS-STRICTLY-EQUIVALENT-TO-A / Spaghetti-Western Coding / Golf is a good program spoiled / Programming conventions as signals / Not all functions should be object methods

The Not So Big Software Design / Writing programs for people to read / Why Why Functional Programming Matters Matters / But Y would I want to do a thing like this?

The single most important thing you must do to improve your programming career / The Naïve Approach to Hiring People / No Disrespect / Take control of your interview / Three tips for getting a job through a recruiter / My favourite interview question

Exception Handling in Software Development / What if powerful languages and idioms only work for small teams? / Bricks / Which theory fits the evidence? / Still failing, still learning / What I’ve learned from failure

The unary ampersand in Ruby / (1..100).inject(&:+) / The challenge of teaching yourself a programming language / The significance of the meta-circular interpreter / Block-Structured Javascript / Haskell, Ruby and Infinity / Closures and Higher-Order Functions

Why Apple is more expensive than Amazon / Why we are the biggest obstacles to our own growth / Is software the documentation of business process mistakes? / We have lost control of the apparatus / What I’ve Learned From Sales I, II, III

The Narcissism of Small Code Differences / Billy Martin’s Technique for Managing his Manager / Three stories about The Tao / Programming Language Stories / Why You Need a Degree to Work For BigCo

06/04 / 07/04 / 08/04 / 09/04 / 10/04 / 11/04 / 12/04 / 01/05 / 02/05 / 03/05 / 04/05 / 06/05 / 07/05 / 08/05 / 09/05 / 10/05 / 11/05 / 01/06 / 02/06 / 03/06 / 04/06 / 05/06 / 06/06 / 07/06 / 08/06 / 09/06 / 10/06 / 11/06 / 12/06 / 01/07 / 02/07 / 03/07 / 04/07 / 05/07 / 06/07 / 07/07 / 08/07 / 09/07 / 10/07 / 11/07 / 12/07 / 01/08 / 02/08 / 03/08 / 04/08 / 05/08 / 06/08 / 07/08 /