I am sorry, but I can not disagree with you more about Kuhn's "The
Structure of Scientific Revolutions".  Its about resistance to change
and not scientific truth and, as such, it has generally applicable.
At its crudest, its about the old, vested guard being unwilling and/or
unable to move with the changes; the intransigent, causing great
damage and delay, either get slowly pushed aside or die off.  Its
lessons are applicable to a broad spectrum of endeavors, not just the
Sciences.  I recall when Kuhn's book came out, the resistance to his
ideas in the scientific community, rather self-referentially, was a
demonstration of his thesis.

In addition, it has nothing to do with *the truth*.  Science is not
about *the truth*.  Its about what works; how well it explains the
current observations and the accuracy of its predictions. If you want
to listen to people talk about *the truth*, find an alter.  Rather,
Kuhn addressed the bumpy road that leads to scientific advancement
disputing the idealization of an orderly, reasoned progression. He
discusses the political, sociological and cultural resistance to
change in the context of the advancement of science.  To resolve this
point, simply show me where on the Kuhn's book Wikipedia page it
mentions *the truth*; its about resistance to change.

So, one can ignore this insight into human behavior, both the
individual human and humans in organizations, and risk becoming the
problem rather than the solution, or one can embrace it, go Meta and
surf the shock wave.  Its not so much a matter of one's chronological
age but rather of one's the ability to remain young.  Would you rather
sell flavored water or change the world?

Resistance to change is the key.  When C++ came out the entrenched in
the C community resisted.  When Java came out the entrenched in the
C++ community resisted.  Now, with Scala the entrenched in the Java
community resist.  Fine. History may not repeat itself, but people do.

Lastly, I still maintain that project coding standards are the key.  I
have throughout stated that without appropriate standards, there
are features of Scala that, with the current crop of programmers,
could lead to hard to understand and maintain systems. But that such a
caveat to Scala's use is no more or no less important than requiring
standards for Java or (especially) C++ projects; nothing new here.
When Scala is taught broadly in colleges, the strictures of such
standards can be relaxed. Currently, its a self re-enforcing chain:
  Not enough Scala programmer,
  Risky to have a Scala project,
  Too few Scala projects,
  Too few Scala jobs,
  Few programmers willing to learning Scala.

My small contribution is to manifest a Java-like Scala web framework
easing, in a small way, Scala's adoption.

Richard

On 01/07/2011 09:30 AM, Jonathan Locke wrote:

Kuhn's "The Structure of Scientific Revolutions" has to do with people
denying *the truth* when there are radical paradigm shifts in knowledge. I
hardly think Scala qualifies for this analogy. Most of what Scala does has
already been done in one form or another. What it represents is the
application of long-existing knowledge from universities to *industrial*
problems. As did Java.

I do not deny that Scala is better than Java in terms of its abstract
approach to a variety of problems that Java doesn't and probably never will
solve well (and these are problems that I am excited to see solved). What I
am saying, however, is that your idea that it's going to get widespread
adoption is very naive regarding the contexts where it would need to be
applied. I think Scala is going to become difficult to follow in the absence
of these magical coding guidelines (which are always bent or ignored) much
more quickly than Java does, which means it is going to prove exceptionally
hard to manage on a large team. Which is going to make it difficult for
managers to chose Scala (they don't want to make their own job harder or
riskier). They have to understand and be comfortable with all these deep and
dangerous features and techniques. Which really means that they have to be
fairly top-flight coders. I don't know about you, but relatively few of my
bosses have been this intellectually adventurous or willing to take on risk
(and for good reason: they are there (unfortunately perhaps) to produce
business results, not technical excellence).

I think Scala's forte is going to be allowing very small teams where
everyone understands all aspects of Scala fairly deeply (i.e., you'd better
understand monads and Scala's type system fully because SOMEONE on your team
will use a feature or technique if it exists!) to produce amazing results
*very* quickly. That is something of a revolution in itself, but I think it
will be a cottage industry relative to the size rest of the software
industry. This is not necessarily a bad thing. If you want to work with
smart people, Scala is going to be a pretty quick way of identifying smart
people! I know this from experience: I can't even understand on several
readings a lot of my friend Greg's posts about Scala and monads and
mathematics. I would need to go back to graduate school in math and I'd
probably need an IQ upgrade to boot.

I know this sounds awfully Dilbert (and maybe that's who I've become), but
at a mid-sized or large company (which is where most people work), what you
want in a language is something that protects you from your co-workers. In
my experience, even the "advanced" features of C++ and Java have
consistently been abused and even wrecked whole projects.

All this said, Scala is probably a god-send to small startups and university
spin-offs. And I think it's an important stake in the ground because it
references a future wider-scale industrial software revolution that
eventually will occur when someone more practical sits down and figures out
how to pack Scala's features (and some things it didn't address) into a
language that's as easy to learn and read and work with as Java. My advice
to you is this: don't get caught up in the politics of technology adoption.
You will only find yourself frustrated and disappointed because at the end
of the day, it's a business world not a technology world. Instead go find
the cool kids and hack away in Scala on some crazy new startup that really
will change the world. Odds are you'll beat the pants off your Java-based
competitors on time-to-market. And if you're wondering why I don't do that,
it's because of all this green paper stuff they keep throwing at me. Maybe I
really have gotten old.

Jon

"Less is more."
http://www.amazon.com/Coding-Software-Process-Jonathan-Locke/dp/0615404820/


--
Quis custodiet ipsos custodes

Reply via email to