2010-07-26 4 views
21

Я начинаю понимать Scala, и мне это очень нравится.Позиционирование для работ Scala или Lift

Как вы можете позиционировать себя, чтобы получить оплачиваемую работу в качестве разработчика Scala (при условии, что они станут более распространенными)?

  • Какие части экосистемы Scala имеют наибольший потенциал рабочих мест (Lift, актеры?).

  • Как вы можете получить доверие у потенциального работодателя, не имея возможности указать на опыт работы Scala (возможно, опыт работы с проектами с открытым исходным кодом?).

(Вышеуказанные вопросы, мы надеемся, в некоторой степени общий интерес к Scala фолка Если вы хотите, чтобы учитывать свою особую ситуацию в ваш ответ, вот несколько деталей о себе:. Давний разработчик (в основном Java) с компьютером Sci PhD, в настоящее время не работает, я привязан к не-режущей кромки месте (Rochester NY), так что я может быть ограничен удаленной работы)


Update 2010/07/30:.

Спасибо за ответы. Я хотел бы обратить внимание на проблему местоположения. Я привязан семьей к месту, которое, вероятно, не будет работать Scala локально в течение длительного времени. Есть ли реальные перспективы для получения удаленный Скала работает, и если да, то как вы позиционируете себя, чтобы получить удаленный работаете? (Небольшое количество поездок было бы выполнимо, но не полноправным воином.)

Кроме того, мне было интересно, как использовать мой преподавательский фон. Будет ли обучение классу Scala в местном университете иметь большую разницу в своей конкурентоспособности как разработчик, или просто отвлекать больше усилий, чем того стоит?

ответ

12

Pure 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, иначе они не смогут понять ваш код. Вы должны убедить своего премьер-министра выделить ресурсы для обучения Scala (может быть, трудно). Когда вы вводите Scala в команду, начинайте с малого. Мой опыт заключается в том, что для Java-партнера требуется некоторое время, чтобы изучить Scala, поэтому это не делается за одну ночь. Поэтому игнорируйте все, что «трудно», когда вы преподаете Скалу. Когда команда схватывает основы, начинайте с написания тестов в Scala (спасибо Davetron5000 за этот совет), продолжайте использовать Java для программирования в приложении (производственный код). Надеюсь, команда будет учиться и наслаждаться Скалой, и после этого, ну, это все спустится с этого момента.

Удачи вам!

+0

Вы предполагаете, что одна из нишей, где Scala, вероятно, будет принята, - это задние, сверхмощные системы, благодаря менее склонному Scala функциональному стилю. Ожидаете ли вы, что веб-приложения станут еще одной областью раннего принятия Scala, обусловленной сильными лифтами? –

+0

На самом деле я не знаю. Если бы я написал веб-приложение, я бы, конечно же, использовал Scala, потому что он настолько продуктивен. Но вы знаете, я думаю, что реальная выгода Scala становится заметной, когда у вас есть большие куски логики, которые трудно представить, но на самом деле приходится работать. Как банковское дело. –

+0

Но так как банковская деятельность настолько консервативна, они не могут быть первой отраслью, которая забирает Scala. Я думаю, что индустрия .com будет первой. –

3

Возьмите свою текущую работу и воплотите в жизнь развитие, основанное на возобновлении. Просто утверждают, что xyz не может быть выполнен по расписанию без Scala, а затем использовать его. После этого заведите свой проект в успех и работайте в другом месте, откройте свой собственный бизнес или продолжите разработку приложений Scala в своей собственной компании.

Он работал на Dick Wall, поэтому он должен работать на вас. :)

6

Я думаю, что ваш лучший выбор - это хорошо освоиться в Scala и стать видимым в сообществе Scala. Это не обязательно одно и то же, но, к счастью, они очень тесно связаны с сообществом Scala. Как только вы это сделаете, есть определенная возможность использовать Scala для удовольствия и прибыли, будь то консультантом/подрядчиком или как (удаленный) сотрудник с полной занятостью. В рамках улучшения и более заметного я бы рекомендовал стать активным в одном из существующих сообществ (Lift, Akka, ScalaNLP, вы его назовете) или даже выйти в пустыню и взломать, чтобы решить общую проблему, даже если это просто что делает родную альтернативу Scala популярной библиотеке Java (например, squeryl и Dispatch, возможно, не были , но они потрясающие).

Я думаю, что я хочу сказать, что вклад в любой хороший, полезный код Scala будет хорошим опытом, и я думаю, что экосистема настолько молода, что нет необходимости (или пользы?) Специализироваться только на одной ее части , Конечно, если есть конкретный вопрос, который Scala полезен для и/или конкретной области, которая извлекает выгоду из Scala, которая выпрыгивает к вам, направьте свое внимание в этом направлении.

+0

+1 за вклад в Акку, как они пытаются решить проблемы, имеющие большое значение для ряда предприятий. – Magnus

+0

Да. И, как коммивояж на подъеме, я надеюсь, что мы также разрешим очень актуальные деловые проблемы. ;-) – pr1001

5

Имея две рабочие места Scala на полный рабочий день, я бы сказал, что самое главное - изучить систему типов и стандартные библиотеки внутри и снаружи. Индивидуальные технологии могут быть подобраны с относительной легкостью.

Кроме того, начните использовать Scala (в частности, Specs и ScalaCheck) для тестирования в вашем текущем проекте, сегодня, если возможно.

Наконец, как сказано в сообщении pr1001, вы можете увидеть в сообществе Scala. Вносить свой вклад в проект, взаимодействовать в списке рассылки, болтаться в #scala на freenode, отвечать на вопросы, где вы можете.

12

Если бы я нанимал на данный момент, я могу рассказать вам прямо сейчас, какие вопросы я задал бы, и они будут об языке. Это жесткий язык , чтобы понять его на глубоком уровне, даже если он кажется простым в использовании, и, как следствие, вы можете понимать код, написанный в a large number of different styles.

Знание библиотек (Akka и Lift быть очевидные из них) сборки инструмента sbt является большим, но это дополнительный. Я хотел бы знать, что вы понимаете:

Если вы понимаете язык, вы будете подбирать библиотеки без проблем, я уверен.

Другие библиотеки:

  • scalaz для функционального программирования
  • scalala для численного программирования (линейная алгебра и т.д.)
  • scalaj для взаимодействия с Java
Смежные вопросы