On Jan 5, 2010, at 10:13 PM, Ross Singer wrote:

> Dan Chudnov, for example, seems to think in Python.  When I tried
> Python, it never really clicked -- I muddled through a few projects
> but never really got it.

Actually, I think in Hoosier, but as the late Kurt Vonnegut might remind me, 
that's awfully silly.

I mostly agree with Ross, though - find something that fits your brain and lets 
you get your stuff done and stick with it.  It just might take a while.

I have used python as a main language for about seven years now and it pays off 
in many ways.  I didn't arrive at it quickly, though.  At my first regular job 
10-12 years ago I built stuff in perl, java, php, and vb, all of which turned 
into code I had to support for one user group or another for some period of 
time or another.  It's one thing to experiment with toy code, it's another 
thing to do an experiment that brings you hard data and experiences that can 
help to inform future decisions.

Here's how it went for me, but YMMV:  I knew perl first, and everything I wrote 
in perl worked quickly and was easy to install in our hosting environment but 
was hard to fix later when it broke because I couldn't read it after I'd 
forgotten what I'd done.  Java was just hard for me, period, and hard to 
install back then (tomcat wasn't particularly stable, yet, for one thing).  VB 
was super easy to develop with but meant desktop support in the long run when 
everything was moving to the web.  PHP was easy to write and install but I 
wrote a lot of bad code with holes all over the place, partly because of how 
easy it was.  After all of these experiences, and having gained some insights 
about what I preferred, I tried python, and it clicked immediately.  It wasn't 
so easy to install on a web server reliably back then, but it was doable, and 
it had all the other positives I was looking for:  I could get stuff done 
quickly, get it installed, it made sense when I went back to look a!
 t it again, and I tended to write things slightly more securely than I had in 
the past. I was hooked.  Seems like Ross is saying the same things about Ruby, 
for him.

None of the stuff I was building back then was intended to be widely-used or 
even depended-upon, which helped a lot, but some of it turned out to be one or 
both, and that shines a bright light on the positives and negatives of platform 
choices.  If I'd tried the languages in a different order maybe my experiences 
screwing up a lot of stuff early on would have led me to like a different fifth 
language; I definitely got better along the way.

These days I am spending more time in Java and JavaScript than I would have 
expected but find that they're both less hard than they were the last time I 
tried them both, partly because they've become easier to work with based on 
frameworks and such but also because I have more experience, period.

If you want help prioritizing which to choose first I could hardly argue with 
any of php, python, or ruby, for the same reasons others state, and as Ross 
said, building something with Solr is a great idea, because you can then try 
building follow-on apps with the same solr backend in different languages and 
see how they compare.  Also, using solr often means writing less original code 
yourself, which is a big win in any language.  I'd also suggest spending some 
time with javascript and a framework like jquery because it's applicable to 
anything you might do on the web. More than anything, though, build something 
you care about, and give it to real users, and then you'll start to see how you 
really feel about it. :)

One last note... I do all my development behind screen-wrapped ssh sessions 
using vim.  If I have to set up an IDE just to use a language, its happiness 
quotient drops immediately.  This approach isn't for everybody, but it works 
best for me, so platform choices that mesh well with this preference increase 
their happiness quotient.  Don't discount that factor, whichever way you feel 
about it, since that's how you'll spend much of your time.

  -Dan

Reply via email to