[thelist] [OT] Is fixing on a certain platform/programming language good or bad?

Keith Gaughan keith at digital-crew.com
Wed Apr 27 13:50:16 CDT 2005


VOLKAN ÖZÇELİK wrote:

> Hi an off-topic question that has been pondering in my mind from the
> time I began my professional life. I am sure you have had (and you may
> still have) similar thoughts before:
> 
> I am more of a web application developer, and a bit of web designer.
> 
> My question is,
> 
> is focusing on a certain platform and programming language (say J2EE /
> Java ) and learning every bit and piece of it, mastering in it and
> eventually becoming a guru of that language/platform

It's useful in the short term, but in the long term not a good idea. We
are, unfortunately, at the mercy of fashion.

> or 
> 
> swapping between several platforms (say Java / J2EE and C# / .Net) better?

Yes and no, but I'll come to that later.

> That is to say shall one be "the best" of a certain thing. Or shall he
> know bits and pieces of several things at the same time? Of course
> s/he should focus on a certain field (it is impossible master in Web
> Programming / Design and MFC Component Development  concurrently).

What's better is to become a better programmer in general, and one of
the best ways of doing that is to learn a programming language that's
completely different from what you're used to.

For instance, if you've been a Java programmer for a long time and
you've little or no experience with functional languages, go learn
a functional language like Haskell, ML, Scheme, or Lisp.

Written Assembly all your life? Go learn Prolog, Oz, Mercury, or some
other constraint-based programming language.

Developed apps in C++ for a long time? Learn ColdFusion or something
like that. Or Ruby, Python, Perl, or something.

The point of this isn't to have more languages to put on your CV, but
to expose yourself to more ways of thinking about a problem, giving you
more angles to approach it from. This is one of the most valuable tools
a developer can have in their toolbox.

Go buy a copy of "Code Complete" and "The Pragmatic Programmer". While
you're at it, you ought to get "The Practice of Programming" and
"Programming Pearls". You'll learn more from those books than you ever
could in any CS course.

Its rather trivial for a decent programmer to move from one environment
to another. The jump from Java to .NET and vis versa is near nil. If
you've ever done any web development before, or even if you're just a
programmer who gets the way clients and servers communicate on the web,
PHP can be picked up in a day. The same goes for ColdFusion.

> What I ask is "is expanding the spectrum  (learn c#, learn php, learn
> jsp/j2ee, learn coldfusion) good or bad?"

These are all perfectly good things to learn.

> Here is my logic: 
> Well for the time being, I code J2EE in proffessional life, and most
> of the challenges I face are in conceptual level. That is to say, they
> can be either implemented in framework X or in framework Y. So
> designing the pseudo-logic is the -let us say the "engineering" of it-
> is the hardest part. Implementation is not a big issue.

Then what you need to learn is langauges implementing other paradigms.

And you don't have to go far. There's one utterly underappreciated one
sitting in your browser right now: JavaScript. You could do worse than
to learn the ins and outs of it, and I'm not talking about the DOM or
that crap, but about the likes of closures, prototype-based programming,
lambda calculus, and so on. When you learn, play with, and finally grok
these, you'll be a better programmer for it.

> But the facts of life are somewhat different: 
> If I resign my job (or say my boss kicks my ass) and look for another job:
> Saying 
> "Hey I've coded in J2EE environment for several years and it's true
> that I do not know any single bit of c#. But I've mastered a lot of
> things at conceptual level. I will learn faster than an average
> individual."
> 
> will lose while
> 
> "Hey, I know J2EE best, but I code C# at home as a hobby. I know most
> tips and tricks of .net platform at least as well as an average
> employee of yours know. It will take some time as per the transition
> period, but it's not a big issue for me. I'll be fully efficient
> within X weeks."
> 
> is a winning one. 

If you're being interviewed by a developer, which is what a lot of
companies do. All those ads you see asking for people with x years
of experience with languages y and z in environments p, q, and r
are written by people without a clue about development, that is
HR types and the like. It's all well and fine knowing all those
languages to get you foot in the door, but it's not going to help
you when you're in there. Knowing programming languages isn't
important. What *is* important is knowing *how*, and how to do it
well.

I've seen far too many instances of people who've portrayed themselves
as knowing such-and-such a language, but just haven't been able to
program real code. And that's just in my professional life. If you
want examples of what I mean, go take a look at The Daily WTF[1].

In summary, learn to become a better programmer, not to make your
CV look better. If you do the former, the latter will follow naturally.

K.

[1]



More information about the thelist mailing list