20

私は Scala を理解し始めており、とても気に入っています。

Scala 開発者として有給の仕事を得るにはどうすればよいでしょうか?

  • Scala エコシステムのどの部分に最高の仕事の可能性がありますか (リフト、アクター?)。

  • Scala での実務経験 (オープンソース プロジェクトでの経験など) を示すことができずに、将来の雇用主から信頼を得るにはどうすればよいでしょうか?

(上記の質問は、Scala 関係者にとってある程度一般的な関心を引くものであることを願っています。回答に私の特定の状況を織り込みたい場合は、ここに私の詳細をいくつか示します。コンピューター科学の博士号を持つ長年の開発者 (主に Java)。現在働いていません。私は最先端ではない場所 (Rochester NY) に縛られているため、リモートワークに制限される可能性があります。)


2010/07/30 更新:

回答ありがとうございます。場所の問題を強調したいと思います。私は、おそらく Scala がローカルで長期間動作しない場所に家族で結ばれています。リモートで Scala の作業を行う現実的な見込みはありますか? もしそうなら、リモートで作業するために自分自身をどのように位置付けますか? (適度な移動は可能ですが、完全な移動の戦士ではありません。)

また、自分の教職経験を活かすことについても考えていました。地元の大学で Scala のクラスを教えることは、開発者としての市場性に大きな違いをもたらすでしょうか?それとも、価値がある以上の労力を浪費するだけでしょうか?

4

5 に答える 5

12

私が現在採用している場合、私が尋ねる質問とその言語についての質問を今すぐお話しすることができます。たとえ使いやすいように見えても、深いレベルで理解するのは難しい言語であり、その結果、多数の異なるスタイルで記述されたコードを理解することが期待される場合があります

ライブラリの知識(AkkaLiftが明らかなものです)sbtビルドツールは素晴らしいですが、それは余分です。私はあなたが理解していることを知りたいと思います:

言語がわかれば、問題なくライブラリを手に入れることができると思います。

その他のライブラリ:

于 2010-07-27T19:22:23.303 に答える
12

純粋な Scala の位置:

純粋な Scala の位置を見つけるのはそれほど簡単ではありませんが、ますます簡単になっています。数日後に初めての純粋な Scala の採用面接を受けます。

完全に Scala で書かれた多くの新しいシステムが見られることを願っています。これらのシステムは、ほとんどがバックエンドのヘビー デューティー システムになると思います。これらのシステムは、バグを減らすために Scala のエラーが発生しにくい機能スタイルを使用します。Akka、SBT、Specs は Scala 開発者にとって重要なフレームワークになると思います (これらはすでに重要であるため、これはあまり予測できません)。

純粋な Scala の位置が見つからない場合:

あなたの信頼は、Java を使った時間から生まれます。ほとんどの大企業には、保守と開発が必要な大量の Java コードがあります。古い Java コードを子守するのがあなたの仕事である場合、古い Java の第一人者として、これをどのように行うべきかについて発言権を持つ必要があります。最初のステップは、Java/Scala の混合環境を許可するように Maven セットアップを変更することです。SBT への移行は、おそらく最良の選択です。これはあなたがしなければならない1回限りの投資です。さもなければ先に進むことはできません!

  • 独立して作業する場合は、いつでも 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 に答える
6

あなたの最善の策は、Scala を使いこなし、Scala コミュニティーで目立つようになることだと思います。これらは必ずしも同じものではありませんが、幸いなことに、Scala コミュニティでは非常に密接に関連しています。これを行うと、コンサルタント/請負業者として、または (リモート) フルタイムの従業員として、Scala を楽しみと利益のために使用する機会が必ずあります。より良く、より目立つようになるための一環として、既存のコミュニティ ( LiftAkkaScalaNLPなど) の 1 つに積極的に参加することをお勧めします。人気のある Java ライブラリ ( squerylDispatchなど) に代わるネイティブな Scala の作成おそらく必要ではありませんでしたが、それらは素晴らしいです)。

私が言いたいのは、優れた便利な Scala コードに貢献することは良い経験になるということであり、エコシステムは非常に若いため、その一部だけに特化する必要 (またはメリット) はないと思います。もちろん、Scala が役立つ特定の主題や Scala の恩恵を受ける特定の分野がある場合は、その方向に注意を向けてください。

于 2010-07-26T21:00:10.500 に答える
5

この時点でフルタイムの Scala の仕事が 2 つあったので、最も重要なことは、型システムと標準ライブラリを徹底的に学ぶことだと思います。その後、個々のテクノロジーを比較的簡単に取り上げることができます。

また、可能であれば、現在のプロジェクトでのテストに Scala (具体的には Specs と ScalaCheck) を今日から使い始めてください。

最後に、pr1001 が言ったように、Scala コミュニティで目に見えるようにします。プロジェクトに貢献し、メーリング リストでやり取りし、freenode の #scala でたむろし、できる限り質問に答えてください。

于 2010-07-26T21:11:47.407 に答える
3

現在の仕事を引き継いで、履歴書駆動開発を実装します。xyzは Scala なしではスケジュールどおりに実行できないと主張してから、それを使用してください。その後、プロジェクトを成功に導き、他の場所で働くか、自分のビジネスを開くか、自分の会社で Scala アプリの開発を続けます。

それはディック・ウォールのために働いたので、あなたのために働くはずです. :)

于 2010-07-26T19:45:30.383 に答える