我开始了解Scala,我非常喜欢它。
你如何定位自己以获得Scala开发人员的工作(假设那些变得更常见)?
Scala生态系统的哪些部分具有最佳工作潜力(Lift,Actors?)。
如果没有能够指出Scala的工作经验(也许是开源项目的经验?),您如何获得未来雇主的信誉?
(上述问题有望引起Scala民众的普遍兴趣。如果你想将我的特定情况考虑在你的回答中,这里有一些关于我的细节:长期开发人员(主要是Java)和计算机科学博士;不是目前正在工作;我被绑在一个非尖端的位置(罗切斯特纽约),所以我可能只限于远程工作。)
更新2010/07/30:
感谢您的回复。我想强调对位置问题的重视。我被家人绑在一个可能不会让Scala长时间在本地工作的位置。 是否有实现远程 Scala工作的现实前景,如果是这样,您如何定位自己以使远程工作?(适度的旅行量)是可行的,但不是一个全面的公路战士。)
另外,我想知道如何利用我的教学背景。在当地大学教授Scala课程会对作为开发人员的一个人的可销售性产生重大影响,还是只是转移更多的努力而不是它的价值?
答案 0 :(得分:12)
Pure Scala职位:
找到一个纯粹的Scala位置并不是一件容易的事,但它变得越来越容易。我将在几天内进行我的第一次纯Scala求职面试。
我希望我们会看到很多新系统完全用Scala编写,我认为这些系统主要是后端的重型系统。这些系统将使用Scalas减少错误的功能样式来减少错误。我认为Akka,SBT和Specs将成为Scala开发人员的重要框架(由于它们已经非常重要,因此这并不是一个预测。)
如果找不到纯粹的Scala位置:
您的可信度来自您使用Java的时间。大多数大公司都有大量必须维护和开发的Java代码。如果你的工作是照顾旧的Java代码,作为一个古老的Java大师,你应该对如何做到这一点有一些说法。第一步是更改Maven设置以允许混合Java / Scala环境。搬到SBT可能是您的最佳选择。这是您必须做的一次性投资,否则您无法继续!
如果你独立工作,你可能会在任何时候用Scala替换Java,很可能是你必须重新考虑一些旧代码。谈论Scala作为Java的“框架”(这在技术上是一个谎言),在与非技术项目经理交谈时提高了工作效率,这可能会使他们担心的头脑平静下来。最后,您有责任确保Scala确实与Java集成。但是,由于Scala做得非常好,所以这不是什么大问题。实际上,维护旧的遗留代码对任何人来说都不是梦想,因此,如果发现任何人超过3个月,他们通常会感到高兴。管理层可能会忍受你的反叛。
如果你在团队中工作,那就有点棘手了。在这种情况下,您必须教Scala团队,否则他们将无法理解您的代码。你必须说服你的PM为Scala培训预留资源(可能很难)。当你向团队介绍Scala时,从小处着手。我的经验是,Java家伙学习Scala需要一段时间,所以这不是一夜之间就完成的。因此,当你教Scala时,忽略一切“难”。当团队掌握基础知识时,首先在Scala中编写测试(感谢Davetron5000获得此技巧),继续使用Java在应用程序中编程(生产代码)。希望团队能够学习并享受Scala,之后,从那时起,这一切都是下坡的。
答案 1 :(得分:12)
如果我现在正在招聘,我现在可以告诉你我会问什么问题,他们会关于语言。它是一种硬语言,可以深入理解,即使它看起来很容易使用,因此,您可能需要理解用a large number of different styles编写的代码。
知识库( Akka 和提升是显而易见的) sbt 构建工具很棒,但这是一个额外的。我想知道你理解:
如果你理解这种语言,你会毫无疑问地拿起图书馆,我敢肯定。
其他图书馆:
答案 2 :(得分:6)
我认为你最好的选择是擅长Scala并在Scala社区中获得可见性。这些不一定是一回事,但幸运的是,他们在Scala社区中非常非常密切相关。一旦你这样做,无论是作为顾问/承包商还是作为(远程)全职员工,都有机会使用Scala获得乐趣和利润。作为变得更好和更明显的一部分,我建议您在其中一个现有社区(Lift,Akka,ScalaNLP,您的名字)中活跃,甚至在荒野中外出黑客攻击以解决一个常见问题,即使它只是将Scala替换为流行的Java库(例如squeryl和Dispatch可能不是必需但是他们'太棒了。)
我想我所说的是,为任何好的,有用的Scala代码做出贡献将是很好的经验,我认为生态系统是如此年轻,以至于不需要(或有益于)仅专注于其中的一部分。当然,如果有一个特定的主题Scala是有用的和/或一个受益于Scala的特定领域,那么请将注意力引向这个方向。
答案 3 :(得分:5)
此时有两个全职Scala工作,我要说最重要的是学习内部和外部的类型系统和标准库。然后可以相对轻松地选择各种技术。
此外,如果可能的话,今天就开始使用Scala(特别是Specs和ScalaCheck)进行当前项目的测试。
最后,正如pr1001所说,在Scala社区中可见。参与项目,在邮件列表上进行互动,在freenode的#scala中闲逛,尽可能回答问题。
答案 4 :(得分:3)
了解您当前的工作,并实施简历驱动的开发。只是声称 xyz 无法在没有Scala的情况下按计划完成,然后使用它。之后,让您的项目取得成功,在其他地方工作,开设自己的公司,或继续在您自己的公司开发Scala应用程序。
它适用于Dick Wall,所以它应该适合你。 :)