This page is no longer maintained — Please continue to the home page at www.scala-lang.org

Scala awesomeness

31 replies
Landei
Joined: 2008-12-18,
User offline. Last seen 45 weeks 4 days ago.

Hello,

I just wanted to share how much I like to code in Scala, and how it changes
my way of thinking (...away from the dark side). This example is really
tiny, and you probably write something similar ten times a day, but it makes
me just smile. I just wrote this:

def contains(name:String) = map1.contains(name) || map2.contains(name)

If this were Java, that would be the end. But I started to ask myself, what
is if you have 10 maps? How could I generalize this? It's amazing how you
start *thinking again* after some years of Java boredom. The result was:

object Or {
def apply[T](pred: T => Boolean, ts:T*) = (false /: ts)(_ || pred(_))
}

object And {
def apply[T](pred: T => Boolean, ts:T*) = (true /: ts)(_ && pred(_))
}

And a little test:
def main(args:Array[String]) {
def contains(x:String)(m:Map[String,_]) = m.contains(x)
val m1 = Map("a" -> 1, "b" -> 2, "c"->3)
val m2 = Map("c" -> "3", "d" -> "4", "e" -> "5")
println(Or(contains("d"), m1, m2))
println(And(contains("x"), m1))
println(And(contains("c"), m1, m2))
}

As I said, very small, very basic, but the example shows a lot of things
which are missing in Javaland. It took me 10 min to write it, but it would
take hours to explain it to my coworkers. Sorry for the noise, but I just
had to share this.

Cheers,
Daniel

David Pollak
Joined: 2008-12-16,
User offline. Last seen 42 years 45 weeks ago.
Re: Scala awesomeness
Rock on!

On Mon, Feb 16, 2009 at 1:22 PM, Landei <Daniel.Gronau@gmx.de> wrote:

Hello,

I just wanted to share how much I like to code in Scala, and how it changes
my way of thinking (...away from the dark side). This example is really
tiny, and you probably write something similar ten times a day, but it makes
me just smile. I just wrote this:

def contains(name:String) = map1.contains(name) || map2.contains(name)

If this were Java, that would be the end. But I started to ask myself, what
is if you have 10 maps? How could I generalize this? It's amazing how you
start *thinking again* after some years of Java boredom. The result was:

object Or {
   def apply[T](pred: T => Boolean, ts:T*) = (false /: ts)(_ || pred(_))
}

object And {
   def apply[T](pred: T => Boolean, ts:T*) = (true /: ts)(_ && pred(_))
}

And a little test:
def main(args:Array[String]) {
   def contains(x:String)(m:Map[String,_]) = m.contains(x)
   val m1 = Map("a" -> 1, "b" -> 2, "c"->3)
   val m2 = Map("c" -> "3", "d" -> "4", "e" -> "5")
   println(Or(contains("d"), m1, m2))
   println(And(contains("x"), m1))
   println(And(contains("c"), m1, m2))
}

As I said, very small, very basic, but the example shows a lot of things
which are missing in Javaland. It took me 10 min to write it, but it would
take hours to explain it to my coworkers. Sorry for the noise, but I just
had to share this.

Cheers,
Daniel


--
View this message in context: http://www.nabble.com/Scala-awesomeness-tp22046203p22046203.html
Sent from the Scala - User mailing list archive at Nabble.com.




--
Lift, the simply functional web framework http://liftweb.net
Beginning Scala http://www.apress.com/book/view/1430219890
Follow me: http://twitter.com/dpp
Git some: http://github.com/dpp
Tony Morris
Joined: 2008-12-19,
User offline. Last seen 30 weeks 4 days ago.
Re: Scala awesomeness

-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

Landei wrote:
> Hello,
>
> I just wanted to share how much I like to code in Scala, and how it
> changes my way of thinking (...away from the dark side). This
> example is really tiny, and you probably write something similar
> ten times a day, but it makes me just smile. I just wrote this:
>
> def contains(name:String) = map1.contains(name) ||
> map2.contains(name)
>
> If this were Java, that would be the end. But I started to ask
> myself, what is if you have 10 maps? How could I generalize this?
> It's amazing how you start *thinking again* after some years of
> Java boredom. The result was:
You'd generalise it with a flatMap method on Function1 but
unfortunately, despite perhaps being the most fundamental of monads,
it doesn't appear.

>
> object Or { def apply[T](pred: T => Boolean, ts:T*) = (false /:
> ts)(_ || pred(_)) }
>
> object And { def apply[T](pred: T => Boolean, ts:T*) = (true /:
> ts)(_ && pred(_)) }
Careful there. You should be performing a foldRight at best, but since
foldRight is not implemented correctly on lazy structuressuch as
Stream, you'll have to manually go through the sequence. Consider this
function call on with infinite list in the second argument. Consider
also a long sequence of thousands of elements, for which you can
derive a result from the first element.

>
> And a little test: def main(args:Array[String]) { def
> contains(x:String)(m:Map[String,_]) = m.contains(x) val m1 =
> Map("a" -> 1, "b" -> 2, "c"->3) val m2 = Map("c" -> "3", "d" ->
> "4", "e" -> "5") println(Or(contains("d"), m1, m2))
> println(And(contains("x"), m1)) println(And(contains("c"), m1, m2))
> }
>
> As I said, very small, very basic, but the example shows a lot of
> things which are missing in Javaland. It took me 10 min to write
> it, but it would take hours to explain it to my coworkers. Sorry
> for the noise, but I just had to share this.
These things aren't missing from Javaland http://functionaljava.org/
In fact, some are available in Javaland and missing from Scalaland,
including the two mentioned:
* flatMap/bind on Function1
* a correctly written foldRight on a lazy structure such as Stream

>
> Cheers, Daniel
>
>

- --
Tony Morris
http://tmorris.net/

*********************************************************
* Anteromedial Heterotopic Osseous Impingement Syndrome *
*********************************************************

http://www.ajronline.org/cgi/content/full/178/3/601
"can result in chronic ankle pain, especially in athletes and the
younger population (15-40 years old)"

http://radiographics.rsnajnls.org/cgi/content/figsonly/22/6/1457
"Soft-tissue and osseous impingement syndromes of the ankle can be an
important cause of chronic pain, particularly in the professional
athlete."

-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.6 (GNU/Linux)
Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org

iD8DBQFJmdwkmnpgrYe6r60RAhV0AJ9evu+NlJ9uhoGxE8jegoCk+HHzRACeOew4
kzc5W7TD+o91RsOhQ1K6JJk=
=8z+h
-----END PGP SIGNATURE-----

Landei
Joined: 2008-12-18,
User offline. Last seen 45 weeks 4 days ago.
Re: Scala awesomeness

Hello,

Thanks for the feedback! I donn't intend to do serious work with this, it
was just a small experiment and learning experience. It's just cool how you
can map your thoughts directly into code, and how making things more
abstract is (often) the natural thing to do and not an uphill battle.
Obviously the example would need some more work to make it really useful.
Further I'm aware that if I already *have* a list, stream etc, I could write
as well:

val list = List(m1, m2)
printn(list.forall(contains("c"))) //and
println(list.exists(contains("d"))) //or

However, if I use a curried version of my original construct, I can make the
operation the "center of attention", and not the container:

def and[T](pred: T => Boolean)(ts:T*) = (true /: ts)(_ && pred(_)) //needs
some more tweaking
def contains(x:String)(m:Map[String,_]) = m.contains(x)
val allHaveC = and(contains("c")) _
println(allHaveC(m1,m2))
println(allHaveC(m3,m4))

Tony, I know the Functional Java library: It is great if you need full blown
functional support for a bigger project, but fails for the small functional
"opportunities" that pop up here and there in "usual" code. It's just too
heavy for this because of Java's baroque syntax (especially the missing
closures).

I'm sure we'll see some substantial improvement in Scala 2.8, hopefully also
fixing some of the weak points you mentioned.

Cheers,
Daniel

tmorris wrote:
>
> -----BEGIN PGP SIGNED MESSAGE-----
> Hash: SHA1
>
>
>
> Landei wrote:
>> Hello,
>>
>> I just wanted to share how much I like to code in Scala, and how it
>> changes my way of thinking (...away from the dark side). This
>> example is really tiny, and you probably write something similar
>> ten times a day, but it makes me just smile. I just wrote this:
>>
>> def contains(name:String) = map1.contains(name) ||
>> map2.contains(name)
>>
>> If this were Java, that would be the end. But I started to ask
>> myself, what is if you have 10 maps? How could I generalize this?
>> It's amazing how you start *thinking again* after some years of
>> Java boredom. The result was:
> You'd generalise it with a flatMap method on Function1 but
> unfortunately, despite perhaps being the most fundamental of monads,
> it doesn't appear.
>
>>
>> object Or { def apply[T](pred: T => Boolean, ts:T*) = (false /:
>> ts)(_ || pred(_)) }
>>
>> object And { def apply[T](pred: T => Boolean, ts:T*) = (true /:
>> ts)(_ && pred(_)) }
> Careful there. You should be performing a foldRight at best, but since
> foldRight is not implemented correctly on lazy structuressuch as
> Stream, you'll have to manually go through the sequence. Consider this
> function call on with infinite list in the second argument. Consider
> also a long sequence of thousands of elements, for which you can
> derive a result from the first element.
>
>>
>> And a little test: def main(args:Array[String]) { def
>> contains(x:String)(m:Map[String,_]) = m.contains(x) val m1 =
>> Map("a" -> 1, "b" -> 2, "c"->3) val m2 = Map("c" -> "3", "d" ->
>> "4", "e" -> "5") println(Or(contains("d"), m1, m2))
>> println(And(contains("x"), m1)) println(And(contains("c"), m1, m2))
>> }
>>
>> As I said, very small, very basic, but the example shows a lot of
>> things which are missing in Javaland. It took me 10 min to write
>> it, but it would take hours to explain it to my coworkers. Sorry
>> for the noise, but I just had to share this.
> These things aren't missing from Javaland http://functionaljava.org/
> In fact, some are available in Javaland and missing from Scalaland,
> including the two mentioned:
> * flatMap/bind on Function1
> * a correctly written foldRight on a lazy structure such as Stream
>
>>
>> Cheers, Daniel
>>
>>
>
> - --
> Tony Morris
> http://tmorris.net/
>
> *********************************************************
> * Anteromedial Heterotopic Osseous Impingement Syndrome *
> *********************************************************
>
> http://www.ajronline.org/cgi/content/full/178/3/601
> "can result in chronic ankle pain, especially in athletes and the
> younger population (15-40 years old)"
>
> http://radiographics.rsnajnls.org/cgi/content/figsonly/22/6/1457
> "Soft-tissue and osseous impingement syndromes of the ankle can be an
> important cause of chronic pain, particularly in the professional
> athlete."
>
> -----BEGIN PGP SIGNATURE-----
> Version: GnuPG v1.4.6 (GNU/Linux)
> Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org
>
> iD8DBQFJmdwkmnpgrYe6r60RAhV0AJ9evu+NlJ9uhoGxE8jegoCk+HHzRACeOew4
> kzc5W7TD+o91RsOhQ1K6JJk=
> =8z+h
> -----END PGP SIGNATURE-----
>
>
>

nilskp
Joined: 2009-01-30,
User offline. Last seen 1 year 27 weeks ago.
Re: Scala awesomeness
On Mon, Feb 16, 2009 at 3:22 PM, Landei <Daniel.Gronau@gmx.de> wrote:
It took me 10 min to write it, but it would
take hours to explain it to my coworkers.

And therein lies a big problem, don't you think?
Joshua.Suereth
Joined: 2008-09-02,
User offline. Last seen 32 weeks 5 days ago.
Re: Scala awesomeness
Not really.  I have trouble explaining things like "Visitor pattern" to some coworkers.   The ones who understand things like patterns also don't have trouble picking up Scala.

On Tue, Feb 17, 2009 at 9:57 AM, Nils Kilden-Pedersen <nilskp@gmail.com> wrote:
On Mon, Feb 16, 2009 at 3:22 PM, Landei <Daniel.Gronau@gmx.de> wrote:
It took me 10 min to write it, but it would
take hours to explain it to my coworkers.

And therein lies a big problem, don't you think?

Ricky Clarkson
Joined: 2008-12-19,
User offline. Last seen 3 years 2 weeks ago.
Re: Scala awesomeness
Oh, I know that one!  It's about animals and dogs I think.  But here we write programs that deal with real things like databases and customers, and don't want to go back to school for 10 years to learn visitar, and lambada dance forms.

2009/2/17 Josh Suereth <joshua.suereth@gmail.com>
Not really.  I have trouble explaining things like "Visitor pattern" to some coworkers.   The ones who understand things like patterns also don't have trouble picking up Scala.

On Tue, Feb 17, 2009 at 9:57 AM, Nils Kilden-Pedersen <nilskp@gmail.com> wrote:
On Mon, Feb 16, 2009 at 3:22 PM, Landei <Daniel.Gronau@gmx.de> wrote:
It took me 10 min to write it, but it would
take hours to explain it to my coworkers.

And therein lies a big problem, don't you think?


loverdos
Joined: 2008-11-18,
User offline. Last seen 2 years 27 weeks ago.
Re: Scala awesomeness
Not really indeed.
My own experience shows that a great deal of (junior) developers lack some foundational knowledge. The tragedy of the situation is expressed by this real-world experience I've had:
--- Story Begin ---A coworker at some point learned how to contribute to a (J2EE if that matters) project and could produce a good deal of (appearing) useful code, thus manifesting an ease and familiarity with web services, enterprise java beans and the like.
At one point he could not run some (Plain Old) Java code and I asked him one thing: did you set the CLASSPATH correctly?
The coworker answered with this answer (literally):
"What is CLASSPATH???"--- Story End ---

So, patterns did you say?
BRChristos

On Tue, Feb 17, 2009 at 5:00 PM, Josh Suereth <joshua.suereth@gmail.com> wrote:
Not really.  I have trouble explaining things like "Visitor pattern" to some coworkers.   The ones who understand things like patterns also don't have trouble picking up Scala.

On Tue, Feb 17, 2009 at 9:57 AM, Nils Kilden-Pedersen <nilskp@gmail.com> wrote:
On Mon, Feb 16, 2009 at 3:22 PM, Landei <Daniel.Gronau@gmx.de> wrote:
It took me 10 min to write it, but it would
take hours to explain it to my coworkers.

And therein lies a big problem, don't you think?




--
 __~O
-\ <,       Christos KK Loverdos
(*)/ (*)      http://ckkloverdos.com
Grey
Joined: 2009-01-03,
User offline. Last seen 42 years 45 weeks ago.
Re: Scala awesomeness

Nils Kilden-Pedersen wrote:
>
> On Mon, Feb 16, 2009 at 3:22 PM, Landei wrote:
>
>> It took me 10 min to write it, but it would
>> take hours to explain it to my coworkers.
>
>
> And therein lies a big problem, don't you think?
>
>

From direct experience.

I've dealt with having to merge a bunch of VBers into a Java Project. I've
dealt with moving a bunch of RPG/COBOL people to Java.

Recently, I used 2-3 experienced Java devs to do Scala development. No real
discussions of covariance and contravariance was required. Like everyone
else when expose to HOF, anon lamba, closures, cut syntac, maps, folds,
reduces etc they when Ohhhh. But they _all_ got it to one degree or another
at different rates of penny dropping.

No detailed lectures of the deep underlying structure of Catamorphism,
Anamorphism, Apomorphism, Hylomorphism and Paramorphism was required to get
decent Enterprise Code out of them at a cleaner and higher level then Java.

Discussions of why mutable state is pure evil. Yes.

Heck the core engine to the system is combinator based and threads state
through a combinator built computation. We talked Combinators a bit and
never broached monadic computation. But they grokked the code nonetheless.

In fact in terms of difficulty they struggled more with Git then they did
with Scala, Linux then they did with Scala, IDEs issues then they did with
Scala, Maven then they did with Scala.

At a minimum they wrote better Java code in Scala then they did in Java and
on occasion I can remember remember practically falling off a chair when 4-6
weeks in a saw fresh code flow by into Git using a reduce or a HOF.

Was the full expressiveness of Scala leveraged. No. Did I get cleaner,
more robust, more flexible, and a smaller code base solution then in Java.
Yep. Sure some re-write was necessary. But I think this, "ha, look I just
did this fold thingy and my co-workers could _never_ understand that" is a
bit overblown. They might not get it in 10 mins. But working with the team
on the basics for 10 hours or 10 days will do it.

The problem that Scala will have in the Enterprise will be far more, PHB
acceptance, gaining critical mass, and a commercial champion to ensure its
ongoing growth.

Yes, Scala is Awesomeness.

Ray

Tako Schotanus
Joined: 2008-12-22,
User offline. Last seen 42 years 45 weeks ago.
Re: Scala awesomeness
This is not necessarily a problem IMHO.
Sure, it might be a sign that the particular developer isn't very good.
But at the same time to me the problem you describe is one of "plumbing".
If the developer is a reasonably intelligent person you could probably have explained the concept to him in a couple of minutes.
And even though he doesn't know what CLASSPATH is he might be able to handle complex code designs without any problem.
The CLASSPATH situation is an example of lack of knowledge (easily acquired) not necessarily a lack of ability (much more difficult to come by).

On Tue, Feb 17, 2009 at 16:31, Christos KK Loverdos <loverdos@gmail.com> wrote:
Not really indeed.
My own experience shows that a great deal of (junior) developers lack some foundational knowledge. The tragedy of the situation is expressed by this real-world experience I've had:
--- Story Begin ---A coworker at some point learned how to contribute to a (J2EE if that matters) project and could produce a good deal of (appearing) useful code, thus manifesting an ease and familiarity with web services, enterprise java beans and the like.
At one point he could not run some (Plain Old) Java code and I asked him one thing: did you set the CLASSPATH correctly?
The coworker answered with this answer (literally):
"What is CLASSPATH???"--- Story End ---

So, patterns did you say?
BRChristos

On Tue, Feb 17, 2009 at 5:00 PM, Josh Suereth <joshua.suereth@gmail.com> wrote:
Not really.  I have trouble explaining things like "Visitor pattern" to some coworkers.   The ones who understand things like patterns also don't have trouble picking up Scala.

On Tue, Feb 17, 2009 at 9:57 AM, Nils Kilden-Pedersen <nilskp@gmail.com> wrote:
On Mon, Feb 16, 2009 at 3:22 PM, Landei <Daniel.Gronau@gmx.de> wrote:
It took me 10 min to write it, but it would
take hours to explain it to my coworkers.

And therein lies a big problem, don't you think?




--
 __~O
-\ <,       Christos KK Loverdos
(*)/ (*)      http://ckkloverdos.com

Ricky Clarkson
Joined: 2008-12-19,
User offline. Last seen 3 years 2 weeks ago.
Re: Scala awesomeness
CLASSPATH is a global variable that you have to set when using crap software such as enterprise java beers.

Most tools provide alternative means of setting the value, such as scala and java's -classpath options, and these cause much less trouble.

QuickTime installations on Windows used to set CLASSPATH to point at QT4J.zip or similar, which made no sense whatsoever, and caused confusion for students in my previous life as a lecturer in Java programming.

I plead with you to unset CLASSPATH, JAVA_HOME, JDK_HOME, ANT_HOME, ANT_HILL, ANT_NUMBER_OF_LEGS, and start using software that doesn't encourage you to do such silly things as set global variables.

export EDITOR=emacsclient # oops

2009/2/17 Tako Schotanus <scala@codejive.org>
This is not necessarily a problem IMHO.
Sure, it might be a sign that the particular developer isn't very good.
But at the same time to me the problem you describe is one of "plumbing".
If the developer is a reasonably intelligent person you could probably have explained the concept to him in a couple of minutes.
And even though he doesn't know what CLASSPATH is he might be able to handle complex code designs without any problem.
The CLASSPATH situation is an example of lack of knowledge (easily acquired) not necessarily a lack of ability (much more difficult to come by).

On Tue, Feb 17, 2009 at 16:31, Christos KK Loverdos <loverdos@gmail.com> wrote:
Not really indeed.
My own experience shows that a great deal of (junior) developers lack some foundational knowledge. The tragedy of the situation is expressed by this real-world experience I've had:
--- Story Begin ---A coworker at some point learned how to contribute to a (J2EE if that matters) project and could produce a good deal of (appearing) useful code, thus manifesting an ease and familiarity with web services, enterprise java beans and the like.
At one point he could not run some (Plain Old) Java code and I asked him one thing: did you set the CLASSPATH correctly?
The coworker answered with this answer (literally):
"What is CLASSPATH???"--- Story End ---

So, patterns did you say?
BRChristos

On Tue, Feb 17, 2009 at 5:00 PM, Josh Suereth <joshua.suereth@gmail.com> wrote:
Not really.  I have trouble explaining things like "Visitor pattern" to some coworkers.   The ones who understand things like patterns also don't have trouble picking up Scala.

On Tue, Feb 17, 2009 at 9:57 AM, Nils Kilden-Pedersen <nilskp@gmail.com> wrote:
On Mon, Feb 16, 2009 at 3:22 PM, Landei <Daniel.Gronau@gmx.de> wrote:
It took me 10 min to write it, but it would
take hours to explain it to my coworkers.

And therein lies a big problem, don't you think?




--
 __~O
-\ <,       Christos KK Loverdos
(*)/ (*)      http://ckkloverdos.com


Kris Nuttycombe
Joined: 2009-01-16,
User offline. Last seen 42 years 45 weeks ago.
Re: Scala awesomeness
On Tue, Feb 17, 2009 at 8:46 AM, Tako Schotanus <scala@codejive.org> wrote:
This is not necessarily a problem IMHO.
Sure, it might be a sign that the particular developer isn't very good.
But at the same time to me the problem you describe is one of "plumbing".
If the developer is a reasonably intelligent person you could probably have explained the concept to him in a couple of minutes.
And even though he doesn't know what CLASSPATH is he might be able to handle complex code designs without any problem.
The CLASSPATH situation is an example of lack of knowledge (easily acquired) not necessarily a lack of ability (much more difficult to come by).

Unfortunately, given the state of the Java ecosystem not knowing what the CLASSPATH is bespeaks more a lack of curiosity than anything else, and that's more damning than either lack of knowledge or lack of ability. If a developer has done any reading whatsoever about his field, how could he not have encountered this?

Kris
loverdos
Joined: 2008-11-18,
User offline. Last seen 2 years 27 weeks ago.
Re: Scala awesomeness
Hi Tako and all,
This particular coworker is a very intelligent one and I am already enjoying working with him. He has the potential to become an awesome software engineer, at least as I can understand from my ten year experience.
My story would like to go beyond a simple CLASSPATH (or any specific knowledge of the kind) observation.
What I sense is a problem in today's industrial environments, which, in some way, resemble massive code-producing farms, where the essence of programming is, if not lost, at least not sought after or encouraged. And then the burden comes down on those senior folks who really struggle between coping with deadlines and preserving quality. 
Have you ever had a year's review (the one that dictates your salary raise and a possible bonus) where the major remark on behalf on management were: "We are afraid that you have to cut down on quality a bit; It is not that you lose deadlines, it is just too much for us; it does not fit the company's profile and you will have to adjust"? Well I have one such remark lying somewhere in my CV.
It's all about the essence.
BR,Christos

On Tue, Feb 17, 2009 at 5:46 PM, Tako Schotanus <scala@codejive.org> wrote:
This is not necessarily a problem IMHO.
Sure, it might be a sign that the particular developer isn't very good.
But at the same time to me the problem you describe is one of "plumbing".
If the developer is a reasonably intelligent person you could probably have explained the concept to him in a couple of minutes.
And even though he doesn't know what CLASSPATH is he might be able to handle complex code designs without any problem.
The CLASSPATH situation is an example of lack of knowledge (easily acquired) not necessarily a lack of ability (much more difficult to come by).

On Tue, Feb 17, 2009 at 16:31, Christos KK Loverdos <loverdos@gmail.com> wrote:
Not really indeed.
My own experience shows that a great deal of (junior) developers lack some foundational knowledge. The tragedy of the situation is expressed by this real-world experience I've had:
--- Story Begin ---A coworker at some point learned how to contribute to a (J2EE if that matters) project and could produce a good deal of (appearing) useful code, thus manifesting an ease and familiarity with web services, enterprise java beans and the like.
At one point he could not run some (Plain Old) Java code and I asked him one thing: did you set the CLASSPATH correctly?
The coworker answered with this answer (literally):
"What is CLASSPATH???"--- Story End ---

So, patterns did you say?
BRChristos

On Tue, Feb 17, 2009 at 5:00 PM, Josh Suereth <joshua.suereth@gmail.com> wrote:
Not really.  I have trouble explaining things like "Visitor pattern" to some coworkers.   The ones who understand things like patterns also don't have trouble picking up Scala.

On Tue, Feb 17, 2009 at 9:57 AM, Nils Kilden-Pedersen <nilskp@gmail.com> wrote:
On Mon, Feb 16, 2009 at 3:22 PM, Landei <Daniel.Gronau@gmx.de> wrote:
It took me 10 min to write it, but it would
take hours to explain it to my coworkers.

And therein lies a big problem, don't you think?




--
 __~O
-\ <,       Christos KK Loverdos
(*)/ (*)      http://ckkloverdos.com




--
 __~O
-\ <,       Christos KK Loverdos
(*)/ (*)      http://ckkloverdos.com
DRMacIver
Joined: 2008-09-02,
User offline. Last seen 42 years 45 weeks ago.
Re: Scala awesomeness
On Tue, Feb 17, 2009 at 3:55 PM, Ricky Clarkson <ricky.clarkson@gmail.com> wrote:
CLASSPATH is a global variable that you have to set when using crap software such as enterprise java beers.

It's actually closer to a dynamically scoped variable, as it's local to your current terminal session unless you do something silly like set it in your .bashrc. As such it can be rather useful.
tolsen77
Joined: 2008-10-08,
User offline. Last seen 1 year 38 weeks ago.
Re: Scala awesomeness
They might have been brought up in a IDE during the education. For example, many C/C++ programmers using Visual Studio might be completely oblivious to the compile/link process. Also, since he's a junior, he might have little to none experience from Java from his education. Especially Master degree students (compared to Bachelor) can get little programming experience during their education.

On Tue, Feb 17, 2009 at 5:06 PM, Kris Nuttycombe <kris.nuttycombe@gmail.com> wrote:
On Tue, Feb 17, 2009 at 8:46 AM, Tako Schotanus <scala@codejive.org> wrote:
This is not necessarily a problem IMHO.
Sure, it might be a sign that the particular developer isn't very good.
But at the same time to me the problem you describe is one of "plumbing".
If the developer is a reasonably intelligent person you could probably have explained the concept to him in a couple of minutes.
And even though he doesn't know what CLASSPATH is he might be able to handle complex code designs without any problem.
The CLASSPATH situation is an example of lack of knowledge (easily acquired) not necessarily a lack of ability (much more difficult to come by).

Unfortunately, given the state of the Java ecosystem not knowing what the CLASSPATH is bespeaks more a lack of curiosity than anything else, and that's more damning than either lack of knowledge or lack of ability. If a developer has done any reading whatsoever about his field, how could he not have encountered this?

Kris

David Pollak
Joined: 2008-12-16,
User offline. Last seen 42 years 45 weeks ago.
Re: Scala awesomeness


On Tue, Feb 17, 2009 at 7:30 AM, Grey <ray.racine@gmail.com> wrote:



Nils Kilden-Pedersen wrote:
>
> On Mon, Feb 16, 2009 at 3:22 PM, Landei <Daniel.Gronau@gmx.de> wrote:
>
>> It took me 10 min to write it, but it would
>> take hours to explain it to my coworkers.
>
>
> And therein lies a big problem, don't you think?
>
>

From direct experience.

I've dealt with having to merge a bunch of VBers into a Java Project.  I've
dealt with moving a bunch of RPG/COBOL people to Java.

Recently, I used 2-3 experienced Java devs to do Scala development.  No real
discussions of covariance and contravariance was required.  Like everyone
else when expose to HOF, anon lamba, closures, cut syntac, maps, folds,
reduces etc they when Ohhhh.  But they _all_ got it to one degree or another
at different rates of penny dropping.

No detailed lectures of the deep underlying structure of Catamorphism,
Anamorphism, Apomorphism, Hylomorphism and Paramorphism was required to get
decent Enterprise Code out of them at a cleaner and higher level then Java.

Discussions of why mutable state is pure evil. Yes.

Heck the core engine to the system is combinator based and threads state
through a combinator built computation.  We talked Combinators a bit and
never broached monadic computation.  But they grokked the code nonetheless.

In fact in terms of difficulty they struggled more with Git then they did
with Scala, Linux then they did with Scala, IDEs issues then they did with
Scala, Maven then they did with Scala.

At a minimum they wrote better Java code in Scala then they did in Java and
on occasion I can remember remember practically falling off a chair when 4-6
weeks in a saw fresh code flow by into Git using a reduce or a HOF.

Was the full expressiveness of Scala leveraged.  No.  Did I get cleaner,
more robust, more flexible, and a smaller code base solution then in Java.
Yep.  Sure some re-write was necessary.  But I think this, "ha, look I just
did this fold thingy and my co-workers could _never_ understand that" is a
bit overblown.  They might not get it in 10 mins.  But working with the team
on the basics for 10 hours or 10 days will do it.

The problem that Scala will have in the Enterprise will be far more, PHB
acceptance, gaining critical mass, and a commercial champion to ensure its
ongoing growth.

Yes, Scala is Awesomeness.

This is not materially different from my experience transitioning people from Java/C# to Scala.  The only failures I've seen (it's been a couple of people) are hard-core Java coders who have never coded in another language.  These guys seem to not understand that there can be alternative ways of approaching problems and keep trying to use their Java hammer to solve problems.  So, as long as someone has done Java and something else (Ruby or Lisp are the best, JavaScript is good as well, C# will even do), they seem to transition to Scala pretty quickly.  


Ray
--
View this message in context: http://www.nabble.com/Scala-awesomeness-tp22046203p22059550.html
Sent from the Scala - User mailing list archive at Nabble.com.




--
Lift, the simply functional web framework http://liftweb.net
Beginning Scala http://www.apress.com/book/view/1430219890
Follow me: http://twitter.com/dpp
Git some: http://github.com/dpp
loverdos
Joined: 2008-11-18,
User offline. Last seen 2 years 27 weeks ago.
Re: Scala awesomeness
Just a minor correction for the sake of reality/truth:
The phrase "It is not that you lose deadlines" should have been "You do not lose deadlines".
I do not lose deadlines, but I may lose my good expressing ability from time to time!

BRChristos
On Tue, Feb 17, 2009 at 6:12 PM, Christos KK Loverdos <loverdos@gmail.com> wrote:
Hi Tako and all,
This particular coworker is a very intelligent one and I am already enjoying working with him. He has the potential to become an awesome software engineer, at least as I can understand from my ten year experience.
My story would like to go beyond a simple CLASSPATH (or any specific knowledge of the kind) observation.
What I sense is a problem in today's industrial environments, which, in some way, resemble massive code-producing farms, where the essence of programming is, if not lost, at least not sought after or encouraged. And then the burden comes down on those senior folks who really struggle between coping with deadlines and preserving quality. 
Have you ever had a year's review (the one that dictates your salary raise and a possible bonus) where the major remark on behalf on management were: "We are afraid that you have to cut down on quality a bit; It is not that you lose deadlines, it is just too much for us; it does not fit the company's profile and you will have to adjust"? Well I have one such remark lying somewhere in my CV.
It's all about the essence.
BR,Christos

On Tue, Feb 17, 2009 at 5:46 PM, Tako Schotanus <scala@codejive.org> wrote:
This is not necessarily a problem IMHO.
Sure, it might be a sign that the particular developer isn't very good.
But at the same time to me the problem you describe is one of "plumbing".
If the developer is a reasonably intelligent person you could probably have explained the concept to him in a couple of minutes.
And even though he doesn't know what CLASSPATH is he might be able to handle complex code designs without any problem.
The CLASSPATH situation is an example of lack of knowledge (easily acquired) not necessarily a lack of ability (much more difficult to come by).

On Tue, Feb 17, 2009 at 16:31, Christos KK Loverdos <loverdos@gmail.com> wrote:
Not really indeed.
My own experience shows that a great deal of (junior) developers lack some foundational knowledge. The tragedy of the situation is expressed by this real-world experience I've had:
--- Story Begin ---A coworker at some point learned how to contribute to a (J2EE if that matters) project and could produce a good deal of (appearing) useful code, thus manifesting an ease and familiarity with web services, enterprise java beans and the like.
At one point he could not run some (Plain Old) Java code and I asked him one thing: did you set the CLASSPATH correctly?
The coworker answered with this answer (literally):
"What is CLASSPATH???"--- Story End ---

So, patterns did you say?
BRChristos

On Tue, Feb 17, 2009 at 5:00 PM, Josh Suereth <joshua.suereth@gmail.com> wrote:
Not really.  I have trouble explaining things like "Visitor pattern" to some coworkers.   The ones who understand things like patterns also don't have trouble picking up Scala.

On Tue, Feb 17, 2009 at 9:57 AM, Nils Kilden-Pedersen <nilskp@gmail.com> wrote:
On Mon, Feb 16, 2009 at 3:22 PM, Landei <Daniel.Gronau@gmx.de> wrote:
It took me 10 min to write it, but it would
take hours to explain it to my coworkers.

And therein lies a big problem, don't you think?




--
 __~O
-\ <,       Christos KK Loverdos
(*)/ (*)      http://ckkloverdos.com




--
 __~O
-\ <,       Christos KK Loverdos
(*)/ (*)      http://ckkloverdos.com



--
 __~O
-\ <,       Christos KK Loverdos
(*)/ (*)      http://ckkloverdos.com
Ricky Clarkson
Joined: 2008-12-19,
User offline. Last seen 3 years 2 weeks ago.
Re: Scala awesomeness
My observation has been that Haskell + Java makes for a good Scala experience.

2009/2/17 David Pollak <feeder.of.the.bears@gmail.com>


On Tue, Feb 17, 2009 at 7:30 AM, Grey <ray.racine@gmail.com> wrote:



Nils Kilden-Pedersen wrote:
>
> On Mon, Feb 16, 2009 at 3:22 PM, Landei <Daniel.Gronau@gmx.de> wrote:
>
>> It took me 10 min to write it, but it would
>> take hours to explain it to my coworkers.
>
>
> And therein lies a big problem, don't you think?
>
>

From direct experience.

I've dealt with having to merge a bunch of VBers into a Java Project.  I've
dealt with moving a bunch of RPG/COBOL people to Java.

Recently, I used 2-3 experienced Java devs to do Scala development.  No real
discussions of covariance and contravariance was required.  Like everyone
else when expose to HOF, anon lamba, closures, cut syntac, maps, folds,
reduces etc they when Ohhhh.  But they _all_ got it to one degree or another
at different rates of penny dropping.

No detailed lectures of the deep underlying structure of Catamorphism,
Anamorphism, Apomorphism, Hylomorphism and Paramorphism was required to get
decent Enterprise Code out of them at a cleaner and higher level then Java.

Discussions of why mutable state is pure evil. Yes.

Heck the core engine to the system is combinator based and threads state
through a combinator built computation.  We talked Combinators a bit and
never broached monadic computation.  But they grokked the code nonetheless.

In fact in terms of difficulty they struggled more with Git then they did
with Scala, Linux then they did with Scala, IDEs issues then they did with
Scala, Maven then they did with Scala.

At a minimum they wrote better Java code in Scala then they did in Java and
on occasion I can remember remember practically falling off a chair when 4-6
weeks in a saw fresh code flow by into Git using a reduce or a HOF.

Was the full expressiveness of Scala leveraged.  No.  Did I get cleaner,
more robust, more flexible, and a smaller code base solution then in Java.
Yep.  Sure some re-write was necessary.  But I think this, "ha, look I just
did this fold thingy and my co-workers could _never_ understand that" is a
bit overblown.  They might not get it in 10 mins.  But working with the team
on the basics for 10 hours or 10 days will do it.

The problem that Scala will have in the Enterprise will be far more, PHB
acceptance, gaining critical mass, and a commercial champion to ensure its
ongoing growth.

Yes, Scala is Awesomeness.

This is not materially different from my experience transitioning people from Java/C# to Scala.  The only failures I've seen (it's been a couple of people) are hard-core Java coders who have never coded in another language.  These guys seem to not understand that there can be alternative ways of approaching problems and keep trying to use their Java hammer to solve problems.  So, as long as someone has done Java and something else (Ruby or Lisp are the best, JavaScript is good as well, C# will even do), they seem to transition to Scala pretty quickly.  


Ray
--
View this message in context: http://www.nabble.com/Scala-awesomeness-tp22046203p22059550.html
Sent from the Scala - User mailing list archive at Nabble.com.




--
Lift, the simply functional web framework http://liftweb.net
Beginning Scala http://www.apress.com/book/view/1430219890
Follow me: http://twitter.com/dpp
Git some: http://github.com/dpp

Ricky Clarkson
Joined: 2008-12-19,
User offline. Last seen 3 years 2 weeks ago.
Re: Scala awesomeness
It can be a local or a dynamic variable in bash, depending on whether you set it or export it.

I was thinking of the silly Windows practice of setting it via the control panel.

2009/2/17 David MacIver <david.maciver@gmail.com>
On Tue, Feb 17, 2009 at 3:55 PM, Ricky Clarkson <ricky.clarkson@gmail.com> wrote:
CLASSPATH is a global variable that you have to set when using crap software such as enterprise java beers.

It's actually closer to a dynamically scoped variable, as it's local to your current terminal session unless you do something silly like set it in your .bashrc. As such it can be rather useful.

Tako Schotanus
Joined: 2008-12-22,
User offline. Last seen 42 years 45 weeks ago.
Re: Scala awesomeness
I don't think I have ever been in a project like that. How does it feel to deliver something on time? :)

On Tue, Feb 17, 2009 at 17:22, Christos KK Loverdos <loverdos@gmail.com> wrote:
Just a minor correction for the sake of reality/truth:
The phrase "It is not that you lose deadlines" should have been "You do not lose deadlines".
I do not lose deadlines, but I may lose my good expressing ability from time to time!

BRChristos
On Tue, Feb 17, 2009 at 6:12 PM, Christos KK Loverdos <loverdos@gmail.com> wrote:
Hi Tako and all,
This particular coworker is a very intelligent one and I am already enjoying working with him. He has the potential to become an awesome software engineer, at least as I can understand from my ten year experience.
My story would like to go beyond a simple CLASSPATH (or any specific knowledge of the kind) observation.
What I sense is a problem in today's industrial environments, which, in some way, resemble massive code-producing farms, where the essence of programming is, if not lost, at least not sought after or encouraged. And then the burden comes down on those senior folks who really struggle between coping with deadlines and preserving quality. 
Have you ever had a year's review (the one that dictates your salary raise and a possible bonus) where the major remark on behalf on management were: "We are afraid that you have to cut down on quality a bit; It is not that you lose deadlines, it is just too much for us; it does not fit the company's profile and you will have to adjust"? Well I have one such remark lying somewhere in my CV.
It's all about the essence.
BR,Christos

On Tue, Feb 17, 2009 at 5:46 PM, Tako Schotanus <scala@codejive.org> wrote:
This is not necessarily a problem IMHO.
Sure, it might be a sign that the particular developer isn't very good.
But at the same time to me the problem you describe is one of "plumbing".
If the developer is a reasonably intelligent person you could probably have explained the concept to him in a couple of minutes.
And even though he doesn't know what CLASSPATH is he might be able to handle complex code designs without any problem.
The CLASSPATH situation is an example of lack of knowledge (easily acquired) not necessarily a lack of ability (much more difficult to come by).

On Tue, Feb 17, 2009 at 16:31, Christos KK Loverdos <loverdos@gmail.com> wrote:
Not really indeed.
My own experience shows that a great deal of (junior) developers lack some foundational knowledge. The tragedy of the situation is expressed by this real-world experience I've had:
--- Story Begin ---A coworker at some point learned how to contribute to a (J2EE if that matters) project and could produce a good deal of (appearing) useful code, thus manifesting an ease and familiarity with web services, enterprise java beans and the like.
At one point he could not run some (Plain Old) Java code and I asked him one thing: did you set the CLASSPATH correctly?
The coworker answered with this answer (literally):
"What is CLASSPATH???"--- Story End ---

So, patterns did you say?
BRChristos

On Tue, Feb 17, 2009 at 5:00 PM, Josh Suereth <joshua.suereth@gmail.com> wrote:
Not really.  I have trouble explaining things like "Visitor pattern" to some coworkers.   The ones who understand things like patterns also don't have trouble picking up Scala.

On Tue, Feb 17, 2009 at 9:57 AM, Nils Kilden-Pedersen <nilskp@gmail.com> wrote:
On Mon, Feb 16, 2009 at 3:22 PM, Landei <Daniel.Gronau@gmx.de> wrote:
It took me 10 min to write it, but it would
take hours to explain it to my coworkers.

And therein lies a big problem, don't you think?




--
 __~O
-\ <,       Christos KK Loverdos
(*)/ (*)      http://ckkloverdos.com




--
 __~O
-\ <,       Christos KK Loverdos
(*)/ (*)      http://ckkloverdos.com



--
 __~O
-\ <,       Christos KK Loverdos
(*)/ (*)      http://ckkloverdos.com

Szymon Jachim
Joined: 2008-12-17,
User offline. Last seen 42 years 45 weeks ago.
Re: Scala awesomeness
If you take a person who know both Haskell and Java it's probably just that he/she is interested in programming languages in general.

Most "developers" I know aren't interested in programming at all. They just starting studying CS, becouse "there will always be a job for computer people" and they were good at maths... :-)

Szymon

On Tue, Feb 17, 2009 at 5:29 PM, Ricky Clarkson <ricky.clarkson@gmail.com> wrote:
My observation has been that Haskell + Java makes for a good Scala experience.

2009/2/17 David Pollak <feeder.of.the.bears@gmail.com>


On Tue, Feb 17, 2009 at 7:30 AM, Grey <ray.racine@gmail.com> wrote:



Nils Kilden-Pedersen wrote:
>
> On Mon, Feb 16, 2009 at 3:22 PM, Landei <Daniel.Gronau@gmx.de> wrote:
>
>> It took me 10 min to write it, but it would
>> take hours to explain it to my coworkers.
>
>
> And therein lies a big problem, don't you think?
>
>

From direct experience.

I've dealt with having to merge a bunch of VBers into a Java Project.  I've
dealt with moving a bunch of RPG/COBOL people to Java.

Recently, I used 2-3 experienced Java devs to do Scala development.  No real
discussions of covariance and contravariance was required.  Like everyone
else when expose to HOF, anon lamba, closures, cut syntac, maps, folds,
reduces etc they when Ohhhh.  But they _all_ got it to one degree or another
at different rates of penny dropping.

No detailed lectures of the deep underlying structure of Catamorphism,
Anamorphism, Apomorphism, Hylomorphism and Paramorphism was required to get
decent Enterprise Code out of them at a cleaner and higher level then Java.

Discussions of why mutable state is pure evil. Yes.

Heck the core engine to the system is combinator based and threads state
through a combinator built computation.  We talked Combinators a bit and
never broached monadic computation.  But they grokked the code nonetheless.

In fact in terms of difficulty they struggled more with Git then they did
with Scala, Linux then they did with Scala, IDEs issues then they did with
Scala, Maven then they did with Scala.

At a minimum they wrote better Java code in Scala then they did in Java and
on occasion I can remember remember practically falling off a chair when 4-6
weeks in a saw fresh code flow by into Git using a reduce or a HOF.

Was the full expressiveness of Scala leveraged.  No.  Did I get cleaner,
more robust, more flexible, and a smaller code base solution then in Java.
Yep.  Sure some re-write was necessary.  But I think this, "ha, look I just
did this fold thingy and my co-workers could _never_ understand that" is a
bit overblown.  They might not get it in 10 mins.  But working with the team
on the basics for 10 hours or 10 days will do it.

The problem that Scala will have in the Enterprise will be far more, PHB
acceptance, gaining critical mass, and a commercial champion to ensure its
ongoing growth.

Yes, Scala is Awesomeness.

This is not materially different from my experience transitioning people from Java/C# to Scala.  The only failures I've seen (it's been a couple of people) are hard-core Java coders who have never coded in another language.  These guys seem to not understand that there can be alternative ways of approaching problems and keep trying to use their Java hammer to solve problems.  So, as long as someone has done Java and something else (Ruby or Lisp are the best, JavaScript is good as well, C# will even do), they seem to transition to Scala pretty quickly.  


Ray
--
View this message in context: http://www.nabble.com/Scala-awesomeness-tp22046203p22059550.html
Sent from the Scala - User mailing list archive at Nabble.com.




--
Lift, the simply functional web framework http://liftweb.net
Beginning Scala http://www.apress.com/book/view/1430219890
Follow me: http://twitter.com/dpp
Git some: http://github.com/dpp


Derek Chen-Becker
Joined: 2008-12-16,
User offline. Last seen 42 years 45 weeks ago.
Re: Scala awesomeness

Trond Olsen wrote:
> They might have been brought up in a IDE during the education. For
> example, many C/C++ programmers using Visual Studio might be completely
> oblivious to the compile/link process. Also, since he's a junior, he
> might have little to none experience from Java from his education.
> Especially Master degree students (compared to Bachelor) can get little
> programming experience during their education.

I'm cross-posting on scala-debate because I feel like I'm wandering
outside of scala-user territory...

Maybe my Master's degree was different than others, but there was
definitely a strong focus on practical application of everything we
learned. I wrote many thousands of lines of Java, C++, C and VHDL code;
one class I took was even targeted specifically at advanced C++
programming techniques like template metaprogramming and STL customization.

On the topic at hand, I agree with Kris that there are some fundamentals
that any decent software developer should know. Things like library
paths (whether we're talking Java, or something like dynamic linking in
a compiled executable) are pretty basic concepts. Even with my
Bachelor's degree program we covered the breadth of computing, all the
way from discrete math and linear algebra up to writing our own
compilers, linkers and file systems for an experimental OS.

I think there are still a lot of people out there who have not only deep
knowledge of CS, but a strong desire to learn more and grok all of the
nooks and crannies. I think it's a given that most people on this list
fit this description. However, I think we're still seeing the end of
what I call the "programmer bubble"; these are the people who saw a boom
in IT programming and jumped in for quick bucks. This swell of people
who otherwise really don't "fit" has somewhat diluted our ranks. Don't
get me wrong; I'm not saying that if you didn't go to this or that
school, or if you don't know language X that you're going to suck as a
developer. I know several people who got absolutely crappy CS educations
but through their own curiosity and drive have become excellent
programmers. I also want to be clear that I'm not trying to hold myself
up as an expert here; I know just enough to know that I don't know
nearly enough. Rather, I feel that given the current supply and demand
curves for programmers we're going to have to live with a certain
percentage of people who have a poor grasp of fundamentals and are too
intellectually lazy to remedy it themselves. Having suffered at the
hands of some of their code I think the best thing I can say is that I
hope they find gainful employment in a different field.

Cheers,

Derek

Tako Schotanus
Joined: 2008-12-22,
User offline. Last seen 42 years 45 weeks ago.
Re: Scala awesomeness
I'm really interested but I remember that like 15 years ago I tried to understand LISP and I really couldn't wrap my head around it (functional programming was not part of the curriculum so I has to try by myself) and I must say that I love Scala (at least the parts I understand) but I must say that at times the discussions on this list are beyond my obviously meager abilities... a problem I've never had on any Java mailing list :)

(although that probably has to do with the fact that Java mailing lists tend to be far less theoretical)

On Tue, Feb 17, 2009 at 17:52, Szymon Jachim <sjachim@gmail.com> wrote:
If you take a person who know both Haskell and Java it's probably just that he/she is interested in programming languages in general.

Most "developers" I know aren't interested in programming at all. They just starting studying CS, becouse "there will always be a job for computer people" and they were good at maths... :-)

Szymon

On Tue, Feb 17, 2009 at 5:29 PM, Ricky Clarkson <ricky.clarkson@gmail.com> wrote:
My observation has been that Haskell + Java makes for a good Scala experience.

2009/2/17 David Pollak <feeder.of.the.bears@gmail.com>


On Tue, Feb 17, 2009 at 7:30 AM, Grey <ray.racine@gmail.com> wrote:



Nils Kilden-Pedersen wrote:
>
> On Mon, Feb 16, 2009 at 3:22 PM, Landei <Daniel.Gronau@gmx.de> wrote:
>
>> It took me 10 min to write it, but it would
>> take hours to explain it to my coworkers.
>
>
> And therein lies a big problem, don't you think?
>
>

From direct experience.

I've dealt with having to merge a bunch of VBers into a Java Project.  I've
dealt with moving a bunch of RPG/COBOL people to Java.

Recently, I used 2-3 experienced Java devs to do Scala development.  No real
discussions of covariance and contravariance was required.  Like everyone
else when expose to HOF, anon lamba, closures, cut syntac, maps, folds,
reduces etc they when Ohhhh.  But they _all_ got it to one degree or another
at different rates of penny dropping.

No detailed lectures of the deep underlying structure of Catamorphism,
Anamorphism, Apomorphism, Hylomorphism and Paramorphism was required to get
decent Enterprise Code out of them at a cleaner and higher level then Java.

Discussions of why mutable state is pure evil. Yes.

Heck the core engine to the system is combinator based and threads state
through a combinator built computation.  We talked Combinators a bit and
never broached monadic computation.  But they grokked the code nonetheless.

In fact in terms of difficulty they struggled more with Git then they did
with Scala, Linux then they did with Scala, IDEs issues then they did with
Scala, Maven then they did with Scala.

At a minimum they wrote better Java code in Scala then they did in Java and
on occasion I can remember remember practically falling off a chair when 4-6
weeks in a saw fresh code flow by into Git using a reduce or a HOF.

Was the full expressiveness of Scala leveraged.  No.  Did I get cleaner,
more robust, more flexible, and a smaller code base solution then in Java.
Yep.  Sure some re-write was necessary.  But I think this, "ha, look I just
did this fold thingy and my co-workers could _never_ understand that" is a
bit overblown.  They might not get it in 10 mins.  But working with the team
on the basics for 10 hours or 10 days will do it.

The problem that Scala will have in the Enterprise will be far more, PHB
acceptance, gaining critical mass, and a commercial champion to ensure its
ongoing growth.

Yes, Scala is Awesomeness.

This is not materially different from my experience transitioning people from Java/C# to Scala.  The only failures I've seen (it's been a couple of people) are hard-core Java coders who have never coded in another language.  These guys seem to not understand that there can be alternative ways of approaching problems and keep trying to use their Java hammer to solve problems.  So, as long as someone has done Java and something else (Ruby or Lisp are the best, JavaScript is good as well, C# will even do), they seem to transition to Scala pretty quickly.  


Ray
--
View this message in context: http://www.nabble.com/Scala-awesomeness-tp22046203p22059550.html
Sent from the Scala - User mailing list archive at Nabble.com.




--
Lift, the simply functional web framework http://liftweb.net
Beginning Scala http://www.apress.com/book/view/1430219890
Follow me: http://twitter.com/dpp
Git some: http://github.com/dpp



loverdos
Joined: 2008-11-18,
User offline. Last seen 2 years 27 weeks ago.
Re: Scala awesomeness
Well, then, I would consider this as an added benefit of Scala's nature and what it brings to the PL ecosystem (in a very "intrusive" JVM-ish manner if you follow me). This is definitely an advance for everyone.
Watch out for Tony Morris' emails and then we can talk about 'beyond-mental-ability' stuff ;-)
Tony, we need your style!!!!
Christos.

On Tue, Feb 17, 2009 at 7:06 PM, Tako Schotanus <scala@codejive.org> wrote:
I'm really interested but I remember that like 15 years ago I tried to understand LISP and I really couldn't wrap my head around it (functional programming was not part of the curriculum so I has to try by myself) and I must say that I love Scala (at least the parts I understand) but I must say that at times the discussions on this list are beyond my obviously meager abilities... a problem I've never had on any Java mailing list :)

(although that probably has to do with the fact that Java mailing lists tend to be far less theoretical)

On Tue, Feb 17, 2009 at 17:52, Szymon Jachim <sjachim@gmail.com> wrote:
If you take a person who know both Haskell and Java it's probably just that he/she is interested in programming languages in general.

Most "developers" I know aren't interested in programming at all. They just starting studying CS, becouse "there will always be a job for computer people" and they were good at maths... :-)

Szymon

On Tue, Feb 17, 2009 at 5:29 PM, Ricky Clarkson <ricky.clarkson@gmail.com> wrote:
My observation has been that Haskell + Java makes for a good Scala experience.

2009/2/17 David Pollak <feeder.of.the.bears@gmail.com>


On Tue, Feb 17, 2009 at 7:30 AM, Grey <ray.racine@gmail.com> wrote:



Nils Kilden-Pedersen wrote:
>
> On Mon, Feb 16, 2009 at 3:22 PM, Landei <Daniel.Gronau@gmx.de> wrote:
>
>> It took me 10 min to write it, but it would
>> take hours to explain it to my coworkers.
>
>
> And therein lies a big problem, don't you think?
>
>

From direct experience.

I've dealt with having to merge a bunch of VBers into a Java Project.  I've
dealt with moving a bunch of RPG/COBOL people to Java.

Recently, I used 2-3 experienced Java devs to do Scala development.  No real
discussions of covariance and contravariance was required.  Like everyone
else when expose to HOF, anon lamba, closures, cut syntac, maps, folds,
reduces etc they when Ohhhh.  But they _all_ got it to one degree or another
at different rates of penny dropping.

No detailed lectures of the deep underlying structure of Catamorphism,
Anamorphism, Apomorphism, Hylomorphism and Paramorphism was required to get
decent Enterprise Code out of them at a cleaner and higher level then Java.

Discussions of why mutable state is pure evil. Yes.

Heck the core engine to the system is combinator based and threads state
through a combinator built computation.  We talked Combinators a bit and
never broached monadic computation.  But they grokked the code nonetheless.

In fact in terms of difficulty they struggled more with Git then they did
with Scala, Linux then they did with Scala, IDEs issues then they did with
Scala, Maven then they did with Scala.

At a minimum they wrote better Java code in Scala then they did in Java and
on occasion I can remember remember practically falling off a chair when 4-6
weeks in a saw fresh code flow by into Git using a reduce or a HOF.

Was the full expressiveness of Scala leveraged.  No.  Did I get cleaner,
more robust, more flexible, and a smaller code base solution then in Java.
Yep.  Sure some re-write was necessary.  But I think this, "ha, look I just
did this fold thingy and my co-workers could _never_ understand that" is a
bit overblown.  They might not get it in 10 mins.  But working with the team
on the basics for 10 hours or 10 days will do it.

The problem that Scala will have in the Enterprise will be far more, PHB
acceptance, gaining critical mass, and a commercial champion to ensure its
ongoing growth.

Yes, Scala is Awesomeness.

This is not materially different from my experience transitioning people from Java/C# to Scala.  The only failures I've seen (it's been a couple of people) are hard-core Java coders who have never coded in another language.  These guys seem to not understand that there can be alternative ways of approaching problems and keep trying to use their Java hammer to solve problems.  So, as long as someone has done Java and something else (Ruby or Lisp are the best, JavaScript is good as well, C# will even do), they seem to transition to Scala pretty quickly.  


Ray
--
View this message in context: http://www.nabble.com/Scala-awesomeness-tp22046203p22059550.html
Sent from the Scala - User mailing list archive at Nabble.com.




--
Lift, the simply functional web framework http://liftweb.net
Beginning Scala http://www.apress.com/book/view/1430219890
Follow me: http://twitter.com/dpp
Git some: http://github.com/dpp






--
 __~O
-\ <,       Christos KK Loverdos
(*)/ (*)      http://ckkloverdos.com
Derek Chen-Becker
Joined: 2008-12-16,
User offline. Last seen 42 years 45 weeks ago.
Re: Scala awesomeness

Trond Olsen wrote:
> They might have been brought up in a IDE during the education. For
> example, many C/C++ programmers using Visual Studio might be completely
> oblivious to the compile/link process. Also, since he's a junior, he
> might have little to none experience from Java from his education.
> Especially Master degree students (compared to Bachelor) can get little
> programming experience during their education.

I'm cross-posting on scala-debate because I feel like I'm wandering
outside of scala-user territory...

Maybe my Master's degree was different than others, but there was
definitely a strong focus on practical application of everything we
learned. I wrote many thousands of lines of Java, C++, C and VHDL code;
one class I took was even targeted specifically at advanced C++
programming techniques like template metaprogramming and STL customization.

On the topic at hand, I agree with Kris that there are some fundamentals
that any decent software developer should know. Things like library
paths (whether we're talking Java, or something like dynamic linking in
a compiled executable) are pretty basic concepts. Even with my
Bachelor's degree program we covered the breadth of computing, all the
way from discrete math and linear algebra up to writing our own
compilers, linkers and file systems for an experimental OS.

I think there are still a lot of people out there who have not only deep
knowledge of CS, but a strong desire to learn more and grok all of the
nooks and crannies. I think it's a given that most people on this list
fit this description. However, I think we're still seeing the end of
what I call the "programmer bubble"; these are the people who saw a boom
in IT programming and jumped in for quick bucks. This swell of people
who otherwise really don't "fit" has somewhat diluted our ranks. Don't
get me wrong; I'm not saying that if you didn't go to this or that
school, or if you don't know language X that you're going to suck as a
developer. I know several people who got absolutely crappy CS educations
but through their own curiosity and drive have become excellent
programmers. I also want to be clear that I'm not trying to hold myself
up as an expert here; I know just enough to know that I don't know
nearly enough. Rather, I feel that given the current supply and demand
curves for programmers we're going to have to live with a certain
percentage of people who have a poor grasp of fundamentals and are too
intellectually lazy to remedy it themselves. Having suffered at the
hands of some of their code I think the best thing I can say is that I
hope they find gainful employment in a different field.

Cheers,

Derek

Dave Griffith
Joined: 2009-01-14,
User offline. Last seen 42 years 45 weeks ago.
Re: Scala awesomeness

Incredible. My last project was a ground-up reengineering of the election
reporting software for CNN that went on-air/web this last Nov. 4. We
thought about slipping, but we would have had to get a constitutional
amendment passed.

To cycle back to the topic, we probably could have cut down our LOC count by
about a factor of 3 if we were able to use Scala rather than Java5+Spring.
XML patterns/literals + Actors + Value Objects + Extractors + Cake, oh my!

Tako Schotanus-6 wrote:
>
> I don't think I have ever been in a project like that. How does it feel to
> deliver something on time? :)
>
> On Tue, Feb 17, 2009 at 17:22, Christos KK Loverdos
> wrote:
>
>> Just a minor correction for the sake of reality/truth:
>> The phrase "It is not that you lose deadlines" should have been "You do
>> not
>> lose deadlines".
>>
>> I do not lose deadlines, but I may lose my good expressing ability from
>> time to time!
>>
>> BR
>> Christos
>>
>> On Tue, Feb 17, 2009 at 6:12 PM, Christos KK Loverdos
>> wrote:
>>
>>> Hi Tako and all,
>>>
>>> This particular coworker is a very intelligent one and I am already
>>> enjoying working with him. He has the potential to become
>>> an awesome software engineer, at least as I can understand from my ten
>>> year
>>> experience.
>>> My story would like to go beyond a simple CLASSPATH (or any specific
>>> knowledge of the kind) observation.
>>>
>>> What I sense is a problem in today's industrial environments, which, in
>>> some way, resemble massive code-producing farms, where the essence of
>>> programming is, if not lost, at least not sought after or encouraged.
>>> And
>>> then the burden comes down on those senior folks who really struggle
>>> between
>>> coping with deadlines and preserving quality.
>>>
>>> Have you ever had a year's review (the one that dictates your salary
>>> raise
>>> and a possible bonus) where the major remark on behalf on management
>>> were:
>>> "We are afraid that you have to cut down on quality a bit; It is not
>>> that
>>> you lose deadlines, it is just too much for us; it does not fit the
>>> company's profile and you will have to adjust"? Well I have one such
>>> remark
>>> lying somewhere in my CV.
>>>
>>> It's all about the essence.
>>>
>>> BR,
>>> Christos
>>>
>>>
>>> On Tue, Feb 17, 2009 at 5:46 PM, Tako Schotanus
>>> wrote:
>>>
>>>> This is not necessarily a problem IMHO.
>>>> Sure, it might be a sign that the particular developer isn't very good.
>>>> But at the same time to me the problem you describe is one of
>>>> "plumbing".
>>>> If the developer is a reasonably intelligent person you could probably
>>>> have explained the concept to him in a couple of minutes.
>>>> And even though he doesn't know what CLASSPATH is he might be able to
>>>> handle complex code designs without any problem.
>>>> The CLASSPATH situation is an example of lack of knowledge (easily
>>>> acquired) not necessarily a lack of ability (much more difficult to
>>>> come
>>>> by).
>>>>
>>>>
>>>> On Tue, Feb 17, 2009 at 16:31, Christos KK Loverdos
>>>> wrote:
>>>>
>>>>> Not really indeed.
>>>>> My own experience shows that a great deal of (junior) developers lack
>>>>> some foundational knowledge. The tragedy of the situation is expressed
>>>>> by
>>>>> this real-world experience I've had:
>>>>>
>>>>> --- Story Begin ---
>>>>> A coworker at some point learned how to contribute to a (J2EE if that
>>>>> matters) project and could produce a good deal of (appearing) useful
>>>>> code,
>>>>> thus manifesting an ease and familiarity with web services, enterprise
>>>>> java
>>>>> beans and the like.
>>>>>
>>>>> At one point he could not run some (Plain Old) Java code and I asked
>>>>> him
>>>>> one thing: did you set the CLASSPATH correctly?
>>>>>
>>>>> The coworker answered with this answer (literally):
>>>>>
>>>>> "What is CLASSPATH???"
>>>>> --- Story End ---
>>>>>
>>>>> So, patterns did you say?
>>>>>
>>>>> BR
>>>>> Christos
>>>>>
>>>>>
>>>>> On Tue, Feb 17, 2009 at 5:00 PM, Josh Suereth
>>>>> >>>> > wrote:
>>>>>
>>>>>> Not really. I have trouble explaining things like "Visitor pattern"
>>>>>> to
>>>>>> some coworkers. The ones who understand things like patterns also
>>>>>> don't
>>>>>> have trouble picking up Scala.
>>>>>>
>>>>>>
>>>>>> On Tue, Feb 17, 2009 at 9:57 AM, Nils Kilden-Pedersen <
>>>>>> nilskp@gmail.com> wrote:
>>>>>>
>>>>>>> On Mon, Feb 16, 2009 at 3:22 PM, Landei
>>>>>>> wrote:
>>>>>>>
>>>>>>>> It took me 10 min to write it, but it would
>>>>>>>> take hours to explain it to my coworkers.
>>>>>>>
>>>>>>>
>>>>>>> And therein lies a big problem, don't you think?
>>>>>>>
>>>>>>
>>>>>>
>>>>>
>>>>>
>>>>> --
>>>>> __~O
>>>>> -\ <, Christos KK Loverdos
>>>>> (*)/ (*) http://ckkloverdos.com
>>>>>
>>>>
>>>>
>>>
>>>
>>> --
>>> __~O
>>> -\ <, Christos KK Loverdos
>>> (*)/ (*) http://ckkloverdos.com
>>>
>>
>>
>>
>> --
>> __~O
>> -\ <, Christos KK Loverdos
>> (*)/ (*) http://ckkloverdos.com
>>
>
>

Dave Griffith
Joined: 2009-01-14,
User offline. Last seen 42 years 45 weeks ago.
Re: Scala awesomeness

You have learned a valuable lesson in life, to which I will add two more
addenda

1) Just about the most valuable thing you can do for your employer is to
detect such people in the interview process and prevent their hiring. As a
rule of thumb, a mis-hire typically costs between 9 and 18 months of their
salary to hire, train, figure out they were a mis-hire, invite them to a
different employment opportunity, fix the damage they caused, and find their
replacement. Technical hires tend to be on the high side of that range.
For extra goodness, refer particularly bad developers to your competition.
The hidden costs of really bad programmers can easily hit mid-six-figures
per year.

2) It's important not to talk about this sort of thing in a public forum,
unless you want to be thought of as an elitist jerk. Personally, I've
gotten over it.

Derek Chen-Becker-2 wrote:
>
> Trond Olsen wrote:
>> They might have been brought up in a IDE during the education. For
>> example, many C/C++ programmers using Visual Studio might be completely
>> oblivious to the compile/link process. Also, since he's a junior, he
>> might have little to none experience from Java from his education.
>> Especially Master degree students (compared to Bachelor) can get little
>> programming experience during their education.
>
> I'm cross-posting on scala-debate because I feel like I'm wandering
> outside of scala-user territory...
>
> Maybe my Master's degree was different than others, but there was
> definitely a strong focus on practical application of everything we
> learned. I wrote many thousands of lines of Java, C++, C and VHDL code;
> one class I took was even targeted specifically at advanced C++
> programming techniques like template metaprogramming and STL
> customization.
>
> On the topic at hand, I agree with Kris that there are some fundamentals
> that any decent software developer should know. Things like library
> paths (whether we're talking Java, or something like dynamic linking in
> a compiled executable) are pretty basic concepts. Even with my
> Bachelor's degree program we covered the breadth of computing, all the
> way from discrete math and linear algebra up to writing our own
> compilers, linkers and file systems for an experimental OS.
>
> I think there are still a lot of people out there who have not only deep
> knowledge of CS, but a strong desire to learn more and grok all of the
> nooks and crannies. I think it's a given that most people on this list
> fit this description. However, I think we're still seeing the end of
> what I call the "programmer bubble"; these are the people who saw a boom
> in IT programming and jumped in for quick bucks. This swell of people
> who otherwise really don't "fit" has somewhat diluted our ranks. Don't
> get me wrong; I'm not saying that if you didn't go to this or that
> school, or if you don't know language X that you're going to suck as a
> developer. I know several people who got absolutely crappy CS educations
> but through their own curiosity and drive have become excellent
> programmers. I also want to be clear that I'm not trying to hold myself
> up as an expert here; I know just enough to know that I don't know
> nearly enough. Rather, I feel that given the current supply and demand
> curves for programmers we're going to have to live with a certain
> percentage of people who have a poor grasp of fundamentals and are too
> intellectually lazy to remedy it themselves. Having suffered at the
> hands of some of their code I think the best thing I can say is that I
> hope they find gainful employment in a different field.
>
> Cheers,
>
> Derek
>
>
>

Viktor Klang
Joined: 2008-12-17,
User offline. Last seen 1 year 27 weeks ago.
Re: Scala awesomeness


On Tue, Feb 17, 2009 at 7:34 PM, Dave Griffith <dave.l.griffith@gmail.com> wrote:


You have learned a valuable lesson in life, to which I will add two more
addenda

1) Just about the most valuable thing you can do for your employer is to
detect such people in the interview process and prevent their hiring.  As a
rule of thumb, a mis-hire typically costs between 9 and 18 months of their
salary to hire, train, figure out they were a mis-hire, invite them to a
different employment opportunity, fix the damage they caused, and find their
replacement.  Technical hires tend to be on the high side of that range.
For extra goodness, refer particularly bad developers to your competition.
The hidden costs of really bad programmers can easily hit mid-six-figures
per year.

2) It's important not to talk about this sort of thing in a public forum,
unless you want to be thought of as an elitist jerk.  Personally, I've
gotten over it.

I dig your style, Dave.
 




Derek Chen-Becker-2 wrote:
>
> Trond Olsen wrote:
>> They might have been brought up in a IDE during the education. For
>> example, many C/C++ programmers using Visual Studio might be completely
>> oblivious to the compile/link process. Also, since he's a junior, he
>> might have little to none experience from Java from his education.
>> Especially Master degree students (compared to Bachelor) can get little
>> programming experience during their education.
>
> I'm cross-posting on scala-debate because I feel like I'm wandering
> outside of scala-user territory...
>
> Maybe my Master's degree was different than others, but there was
> definitely a strong focus on practical application of everything we
> learned. I wrote many thousands of lines of Java, C++, C and VHDL code;
> one class I took was even targeted specifically at advanced C++
> programming techniques like template metaprogramming and STL
> customization.
>
> On the topic at hand, I agree with Kris that there are some fundamentals
> that any decent software developer should know. Things like library
> paths (whether we're talking Java, or something like dynamic linking in
> a compiled executable) are pretty basic concepts. Even with my
> Bachelor's degree program we covered the breadth of computing, all the
> way from discrete math and linear algebra up to writing our own
> compilers, linkers and file systems for an experimental OS.
>
> I think there are still a lot of people out there who have not only deep
> knowledge of CS, but a strong desire to learn more and grok all of the
> nooks and crannies. I think it's a given that most people on this list
> fit this description. However, I think we're still seeing the end of
> what I call the "programmer bubble"; these are the people who saw a boom
> in IT programming and jumped in for quick bucks. This swell of people
> who otherwise really don't "fit" has somewhat diluted our ranks. Don't
> get me wrong; I'm not saying that if you didn't go to this or that
> school, or if you don't know language X that you're going to suck as a
> developer. I know several people who got absolutely crappy CS educations
> but through their own curiosity and drive have become excellent
> programmers. I also want to be clear that I'm not trying to hold myself
> up as an expert here; I know just enough to know that I don't know
> nearly enough. Rather, I feel that given the current supply and demand
> curves for programmers we're going to have to live with a certain
> percentage of people who have a poor grasp of fundamentals and are too
> intellectually lazy to remedy it themselves. Having suffered at the
> hands of some of their code I think the best thing I can say is that I
> hope they find gainful employment in a different field.
>
> Cheers,
>
> Derek
>
>
>

--
View this message in context: http://www.nabble.com/Re%3A--scala-user--Scala-awesomeness-tp22062007p22063468.html
Sent from the Scala - Debate mailing list archive at Nabble.com.




--
Viktor Klang
Senior Systems Analyst
Derek Chen-Becker
Joined: 2008-12-16,
User offline. Last seen 42 years 45 weeks ago.
Re: Scala awesomeness

Dave Griffith wrote:
>
> You have learned a valuable lesson in life, to which I will add two more
> addenda
>
> 1) Just about the most valuable thing you can do for your employer is to
> detect such people in the interview process and prevent their hiring.

I completely agree. Sadly, at my current employer it seems that the more
I oppose a hire the more likely they are to be hired. It would probably
be easier if I were actually a programmer in title at my company instead
of the network engineer, but that's opening up a whole other bag of worms.

>
> 2) It's important not to talk about this sort of thing in a public forum,
> unless you want to be thought of as an elitist jerk. Personally, I've
> gotten over it.

I find that most people who trot out that argument are the ones that
aren't expending any effort to improve their own skillsets, etc. If
there was any barrier to entry into the "club" other than hard work then
the elite label might be appropriate...

Derek

Tony Morris
Joined: 2008-12-19,
User offline. Last seen 30 weeks 4 days ago.
Re: Scala awesomeness

-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

Derek Chen-Becker wrote:
>
> I find that most people who trot out that argument are the ones
> that aren't expending any effort to improve their own skillsets,
> etc. If there was any barrier to entry into the "club" other than
> hard work then the elite label might be appropriate...
Indeed, the shunning of elitism (in its true sense, not its often
misused definition) and the embracing of pragmatism (in its true
sense, not its often misused definition) is one of the most pervasive
infections of society today.

- --
Tony Morris
http://tmorris.net/

*********************************************************
* Anteromedial Heterotopic Osseous Impingement Syndrome *
*********************************************************

http://www.ajronline.org/cgi/content/full/178/3/601
"can result in chronic ankle pain, especially in athletes and the
younger population (15-40 years old)"

http://radiographics.rsnajnls.org/cgi/content/figsonly/22/6/1457
"Soft-tissue and osseous impingement syndromes of the ankle can be an
important cause of chronic pain, particularly in the professional
athlete."

-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.6 (GNU/Linux)
Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org

iD8DBQFJm0ftmnpgrYe6r60RAj7dAKC5chxscVYqc8l9uULE6RhPn3ecHQCfdWy9
XrKNJ3IuvwPJoYCYY+74H28=
=Nm2Q
-----END PGP SIGNATURE-----

Derek Chen-Becker
Joined: 2008-12-16,
User offline. Last seen 42 years 45 weeks ago.
Re: Scala awesomeness

Tony Morris wrote:
>
>
> Derek Chen-Becker wrote:
>> I find that most people who trot out that argument are the ones
>> that aren't expending any effort to improve their own skillsets,
>> etc. If there was any barrier to entry into the "club" other than
>> hard work then the elite label might be appropriate...
> Indeed, the shunning of elitism (in its true sense, not its often
> misused definition) and the embracing of pragmatism (in its true
> sense, not its often misused definition) is one of the most pervasive
> infections of society today.
>

Exactly. The fact that the the word "elite" has become a pejorative in
many circles is truly sad.

Derek

loverdos
Joined: 2008-11-18,
User offline. Last seen 2 years 27 weeks ago.
Re: Scala awesomeness
Dave,
regarding your 1st point:
I have met real-life situations where those people mostly qualified to be engaged in the hiring process (call them the senior software engineers if you like, but I believe we do not disagree in the essence of that) are put aside by the managers (and I mean manager-managers, people with responsibilities distant from technical stuff). And then the drill goes like that: the newly hired are handed to the technical people and the technical people take all the burden from then on. It is not bad to take the burden of educating; on the contrary it is part of their role. But, the sad is they are even considered totally responsible for the miss-hire in case they 'could not make the juniors fit-in'.
----------
We all start from somewhere. If anyone says "I am Mr perfect", then there is a catch somewhere. But we all have our little egoisms that may cripple out sometimes and I find this natural and just human. If someones really loves what he does then he will find his way. I have no doubt about that. It will be a way of failures, self-educating, collaborating, delivering, a completely iterative process.
I know this: I know what I love to do. This is enough to make me better at it. Fighting for it is part of the procedure.
I also know that everyone deserves a chance. But a sharp eye must catch early those 'jokers' that want to be part of the CS ecosystem just because CS has jobs, and treat them accordingly.
I do not want to repeat my concerns of how I think the industry appears to work, that I mentioned in a previous email. This can be a long discussion...
I am just happy I can share this thoughts with you all.

BRChristos
On Tue, Feb 17, 2009 at 8:34 PM, Dave Griffith <dave.l.griffith@gmail.com> wrote:


You have learned a valuable lesson in life, to which I will add two more
addenda

1) Just about the most valuable thing you can do for your employer is to
detect such people in the interview process and prevent their hiring.  As a
rule of thumb, a mis-hire typically costs between 9 and 18 months of their
salary to hire, train, figure out they were a mis-hire, invite them to a
different employment opportunity, fix the damage they caused, and find their
replacement.  Technical hires tend to be on the high side of that range.
For extra goodness, refer particularly bad developers to your competition.
The hidden costs of really bad programmers can easily hit mid-six-figures
per year.

2) It's important not to talk about this sort of thing in a public forum,
unless you want to be thought of as an elitist jerk.  Personally, I've
gotten over it.



Derek Chen-Becker-2 wrote:
>
> Trond Olsen wrote:
>> They might have been brought up in a IDE during the education. For
>> example, many C/C++ programmers using Visual Studio might be completely
>> oblivious to the compile/link process. Also, since he's a junior, he
>> might have little to none experience from Java from his education.
>> Especially Master degree students (compared to Bachelor) can get little
>> programming experience during their education.
>
> I'm cross-posting on scala-debate because I feel like I'm wandering
> outside of scala-user territory...
>
> Maybe my Master's degree was different than others, but there was
> definitely a strong focus on practical application of everything we
> learned. I wrote many thousands of lines of Java, C++, C and VHDL code;
> one class I took was even targeted specifically at advanced C++
> programming techniques like template metaprogramming and STL
> customization.
>
> On the topic at hand, I agree with Kris that there are some fundamentals
> that any decent software developer should know. Things like library
> paths (whether we're talking Java, or something like dynamic linking in
> a compiled executable) are pretty basic concepts. Even with my
> Bachelor's degree program we covered the breadth of computing, all the
> way from discrete math and linear algebra up to writing our own
> compilers, linkers and file systems for an experimental OS.
>
> I think there are still a lot of people out there who have not only deep
> knowledge of CS, but a strong desire to learn more and grok all of the
> nooks and crannies. I think it's a given that most people on this list
> fit this description. However, I think we're still seeing the end of
> what I call the "programmer bubble"; these are the people who saw a boom
> in IT programming and jumped in for quick bucks. This swell of people
> who otherwise really don't "fit" has somewhat diluted our ranks. Don't
> get me wrong; I'm not saying that if you didn't go to this or that
> school, or if you don't know language X that you're going to suck as a
> developer. I know several people who got absolutely crappy CS educations
> but through their own curiosity and drive have become excellent
> programmers. I also want to be clear that I'm not trying to hold myself
> up as an expert here; I know just enough to know that I don't know
> nearly enough. Rather, I feel that given the current supply and demand
> curves for programmers we're going to have to live with a certain
> percentage of people who have a poor grasp of fundamentals and are too
> intellectually lazy to remedy it themselves. Having suffered at the
> hands of some of their code I think the best thing I can say is that I
> hope they find gainful employment in a different field.
>
> Cheers,
>
> Derek
>
>
>

--
View this message in context: http://www.nabble.com/Re%3A--scala-user--Scala-awesomeness-tp22062007p22063468.html
Sent from the Scala - Debate mailing list archive at Nabble.com.




--
 __~O
-\ <,       Christos KK Loverdos
(*)/ (*)      http://ckkloverdos.com

Copyright © 2012 École Polytechnique Fédérale de Lausanne (EPFL), Lausanne, Switzerland