tags:

views:

451

answers:

8

Hi,

Now i know that this one is actually not a very technical question but one that has been bothering me for some time. Actually we are using a lot of C++ and PHP at our company and some of our developers are really hoping for a new and modern language to come by to help us getting more productive. I have been talking about what scala can do and the other coders seem to gain some interest in the language. The tough job is, how do you convince your boss to consider scala as a language for the company. I saw the presentation "Sneaking Scala into your company", but it deals with the situation that you are using Java at your company which we don't.

How do you fight of the usual "that is just esoteric stuff" and "we can already do that in $LANGUAGE" arguments. I was planing to give a talk about Scala, and since I don't have much time I need ideas how to get people interested in the language rather then setting of reactions like "currying? we can already do something like this with boost::bind".

How did you guys do it?

Regards, raichoo

EDIT: Gave my talk yesterday, people were very excited. My company is going to give it a try! Thanks for all your suggestions.

+12  A: 

If you don't already have killer arguments, what are you basing your reasoning on that Scala will make your company more productive?

Don't like something then hunt for reasons to use it at work. Let the reasons speak for themselves..

"A hammer looking for nails"

Dan McGrath
I have killer arguments, but you simply can't expect that people would understand the concepts of scala and the benefits when you are giving a 20 minute talk firing code at them that they are unable to understand with a little background. If a gave a basic introduction people would end up with: "This is just Java with weird syntax". I want to avoid that at all cost.
raichoo
From you question: "and since I don't have much time I need Killer Arguments." From your comment: "I have killer arguments". I'm a bit confused.Maybe you should reword your question...
Dan McGrath
Done: I hope, this one is better ^^
raichoo
"A hammer looking for nails", well said.
fastcodejava
+2  A: 

This isn't a really easy task. I would concentrate on the fact that you will be able to produce code and therefore products faster and with a higher quality. That's always the two reasons, business wants to hear from you and will listen to.

Maybe you can show an example of 1-2 very small projects you did in your company with C++/PHP and compare the effort, quality etc. with a similar/the same implemenation in Scala? This would be very impressive and should also convince people who are not on the coding side.

Roflcoptr
+7  A: 

Redo some of your work related code in Scala and compare KLOC, code structure and performence, if it looks and works better, show it to your peers and your managers.

In other words:

Talk is cheap. Show me the code. -- Torvalds, Linus (2000-08-25)

oluies
+10  A: 

Using it to do some stuff around the side, as datamigrations, testing and similar things will make sure the necessary experience is built and can give it some exposure.

ScalaTest is really nice to help with acceptance/integration testing. (Yes, I know it is nice for unit testing, but I do not see that immediately happening with C++/PHP target code, and it would probably be unwise).

Proof of Concept and other Prototypes are great for 2 reasons

1) It showcases the capabilities

2) You are certain they will be thrown away if you have to reimplement them in C++/PHP

Now a bad time to introduce Scala would be when you REALLY need it : hopes will be high, it will not immediately work as intended, hopes are dashed and everybody will blame Scala. As a result it will be burnt for a long time in the organisation.

Sooner or later some suit will think it was his idea to introduce Scala and use it on a formal project. If that project is moderately successful, then it is sold.

These kind of changes are complicated people issues, and the harder you push, the harder you will face push-back. On the other hand the persistent mind can move mountains.

Peter Tillemans
+4  A: 

Maybe you could pitch Scala by showing off the suite of tools that is used for development? For example, if you are not already using Eclipse in your company, show your execs a demo of what a modern IDE can do for your productivity.

There is a book called "Fearless Change" (Linda Rising) that describes a pattern language for "powerless leaders" (I LOVE that role title!). SE-radio had a really motivating interview with the author: http://www.se-radio.net/podcast/2009-06/episode-139-fearless-change-linda-rising. Listen up on that interview to collect a few non-technical strategies that can help you in this struggle!

Markus
Thanks a lot :)
raichoo
+2  A: 

There was a very good talk at Scala Days 2010 by David Copeland:

Sneaking Scala into your organisation

The executive summary: Testing. You can use Scala for testing without affecting release code.

MatthieuF
Actually, I got a little bit scared of this. This is exactly what was said about AspectJ... and it did not get a that large adoption. But still, testing and "configuration" DSLs are a great starting point.
oluies
+5  A: 

In case of our company (and I assume, many companies share the same scenario), move to Scala (from Java) was initiated by tech people, who 1. wanted to work more productive writing code (living in the 21st century utilize modern approaches), 2. have less troubles building concurrent applications (Actors concept promoted by Scala is a way simpler than Java thread-based concurrency) 2.1 have a simpler way of building scalable staged event driven architectures.

In our company, transition to Scala was more or less simple, because Scala was literlly sold to business people as a library to Java :) -> from their POV, we're still using the same platform (JVM), application servers, etc., but developers are having more fun from their work, and therefore, are more inspired and work more efficiently.

Vasil Remeniuk
+3  A: 

I haven't used Scala yet for any real business code, but I know people who have.

One group used it to write a tool to analyze log files. So they didn't use it for mission-critical business code, but for a non-critical tool to support the project.

Another person I know is an architect and he just went and wrote some Scala code on his own for some production code without telling his manager. After the code was deployed successfully he did tell it. One of the things he mentioned is that because Scala runs on the JVM, the people who support the application don't even notice - to them, Scala is just another library that's included with the application (they were already used to the JVM). Ofcourse this approach is risky and not everybody will be in the position or be willing to do this.

You could start small - use it as your personal preferred scripting language for small things that you need yourself. Tell your fellow developers about it and make them enthusiasts too. If they also start using it then you can step it up to make some side code for your project (such as for example that log analyser tool).

Jesper
Thanks for the advice :)
raichoo