20

我开始了解 Scala,我非常喜欢它。

作为一名 Scala 开发人员,你如何定位自己以获得一份有报酬的工作(假设这些工作变得更加普遍)?

  • Scala 生态系统的哪些部分具有最佳工作潜力(Lift、Actor?)。

  • 在没有 Scala 工作经验(也许是开源项目经验?)的情况下,如何获得潜在雇主的信任。

(希望上述问题对 Scala 人有一定的普遍兴趣。如果您想将我的特殊情况纳入您的回答,这里有一些关于我的详细信息:拥有计算机科学博士学位的长期开发人员(主要是 Java);目前没有工作;我被绑定到一个非尖端位置(纽约罗切斯特),所以我可能仅限于远程工作。)


2010 年 7 月 30 日更新:

感谢您的回复。我想加强对位置问题的重视。我被家人绑在一个很长一段时间内可能不会让 Scala 在本地工作的地方。进行远程Scala 工作是否有现实的前景,如果有,您如何定位自己以进行远程工作?(适度的旅行是可行的,但不是一个全力以赴的公路战士。)

另外,我想知道如何利用我的教学背景。在当地大学教授 Scala 课程会对开发人员的市场竞争力产生很大影响,还是只是分散了更多的精力而不值得?

4

5 回答 5

12

纯 Scala 位置:

找到一个纯 Scala 的位置并不是很容易,但是越来越容易了。几天后,我将进行第一次纯 Scala 工作面试。

我希望我们会看到很多完全用 Scala 编写的新系统,而且我认为这些系统将主要是后端的重型系统。这些系统将使用 Scalas 不易出错的功能样式来减少错误。我认为 Akka、SBT 和 Specs 将是 Scala 开发人员的重要框架(这并不是一个预测,因为它们已经很重要了)。

如果你没有找到一个纯 Scala 位置:

您的信誉来自您使用 Java 的时间。大多数大公司都有大量必须维护和开发的 Java 代码。如果你的工作是照看旧的 Java 代码,并且作为一个旧的 Java 大师,你应该对如何做这件事有一些发言权。第一步是更改 Maven 设置以允许混合 Java/Scala 环境。迁移到 SBT 可能是您的最佳选择。这是您必须做的一次性投资,否则您将无法继续!

  • 如果您独立工作,您可以随时将 Java 替换为 Scala,最有可能是在您必须重构一些旧代码时。在与非技术项目经理交谈时,将 Scala 称为 Java 的“框架”(这在技术上是一个谎言)可以提高生产力,这可能会让他们担忧的心情平静下来。最后,您有责任确保 Scala 确实与 Java 集成。但是由于 Scala 在这方面做得很好,所以问题不大。实际上,维护旧的遗留代码对任何人来说都不是梦想,所以如果 PM 找到愿意做 3 个月以上的人,他们通常会很高兴。管理层可能会容忍你的叛逆。

  • 如果你在一个团队中工作,那就有点棘手了。在这种情况下,您必须教团队 Scala,否则他们将无法理解您的代码。你必须说服你的 PM 为 Scala 培训留出资源(可能很难)。当您将 Scala 介绍给团队时,请从小处着手。我的经验是,Java 小伙子学习 Scala 需要一段时间,所以这不是一夜之间完成的。因此,在教授 Scala 时,请忽略所有“难”的东西。当团队掌握了基础知识后,开始用 Scala 编写测试(感谢 Davetron5000 提供的这个技巧),继续使用 Java 在应用程序(生产代码)中进行编程。希望团队能够学习并享受 Scala,然后,从那时起,一切都在走下坡路。

祝你好运!

于 2010-07-26T21:17:05.660 回答
12

如果我现在正在招聘,我现在可以告诉你我会问什么问题,它们将与语言有关。它是一种很难深入理解的语言,即使它看起来很容易使用,因此,您可能需要理解以大量不同风格编写的代码。

库知识(AkkaLift是显而易见的)sbt构建工具很棒,但它是额外的。我想知道你明白:

我敢肯定,如果您了解该语言,那么您将毫无问题地使用这些库。

其他库:

于 2010-07-27T19:22:23.303 回答
6

我认为你最好的选择是精通 Scala 并在 Scala 社区中崭露头角。这些不一定是同一件事,但幸运的是它们在 Scala 社区中密切相关。一旦你这样做了,肯定有机会使用 Scala 来获得乐趣和利润,无论是作为顾问/承包商还是作为(远程)全职员工。作为变得更好和更显眼的一部分,我建议在现有社区之一(LiftAkkaScalaNLP,你的名字)中变得活跃,或者甚至走出荒野并破解一个常见问题,即使它只是用原生 Scala 替代流行的 Java 库(例如squerylDispatch也许不是必需的,但它们很棒)。

我想我的意思是,为任何好的、有用的 Scala 代码做出贡献都是很好的体验,而且我认为生态系统还很年轻,没有必要(或受益?)只专注于其中的一部分。当然,如果有一个 Scala 对您有用的特定主题和/或一个从 Scala 中受益的特定领域,您可以将注意力引向那个方向。

于 2010-07-26T21:00:10.500 回答
5

在这一点上已经有两个全职的 Scala 工作,我想说最重要的事情是学习类型系统和从里到外的标准库。然后可以相对容易地掌握各个技术。

另外,如果可能的话,今天就开始使用 Scala(特别是 Specs 和 ScalaCheck)在您当前的项目中进行测试。

最后,正如 pr1001 所说,在 Scala 社区中可见。为项目做贡献,在邮件列表中互动,在 freenode 上的 #scala 中闲逛,尽可能回答问题。

于 2010-07-26T21:11:47.407 回答
3

接受你目前的工作,并实施简历驱动的开发。只是声称xyz不能在没有 Scala 的情况下按时完成,然后使用它。之后,让您的项目取得成功,或者在其他地方工作,开办自己的企业,或者继续在自己的公司开发 Scala 应用程序。

它适用于迪克沃尔,所以它应该适用于你。:)

于 2010-07-26T19:45:30.383 回答