Во-первых, я бы сказал, подумайте, зачем вам Scala-разработчик. Вам действительно нужен Scala? Подумайте о том, что идет вместе со Scala (IDE, инструменты для сборки, библиотеки, еще один уровень сложности выше Java и т. Д.). Вернуться к вопросу. Это идет в двух аспектах: теоретическое понимание и практические способности. не позволяйте «теории» обмануть вас. Это так же важно в Scala, как практичность важна в Java.
теоретический
Посмотрите, знают ли они, что такое функциональная парадигма. Попросите их сравнить две парадигмы (FP против императива, то есть) в философии и практике. Если они могут привести примеры из языков с полной или частичной поддержкой FP, то это для них плюс.
Теория и практика смешались
Посмотрите, могут ли они действительно выполнять функциональное программирование правильным образом. Спросите их о списках, картах, молниях и рекурсии. Затем идут замыкания, лямбды, редукции, функции высшего порядка и неизменность.
практический
Посмотрите, могут ли они преобразовать императивный фрагмент кода в хорошую функциональную альтернативу (см. Выше). Попробуйте цикл, который реализует некоторые математические или что-то в этом роде.
Найдите их вкус к функциональности против императивного стиля. Выберите более функциональный стиль, но будьте осторожны, он не доходит до крайности на стороне разработчика.
Посмотрите, как много они знают о библиотеках Scala (например, Lift, Dispatch и т. Д.) И инструментах (например, SBT, fsc, IDEA).
Посмотрите, насколько хорошо они могут использовать Java (инструменты кода и). Scala тесно связана с Java, особенно в более серьезных средах. Знание этого является большим плюсом.
теоретический
Попросите их сравнить Scala с Java (PHP, C ++, Objective C и т. Д.) И попросить их рассказать вам, что не так с Scala. Посмотрите, понимают ли они проблемы, а также преимущества. Попросите их привести примеры из реальной ситуации, когда недостатки Scala могут вызвать проблемы (например, новичкам трудно ладить, они незрелые, поскольку поддержка очень ограничена по сравнению с Java и т. Д.)
практический
Посмотрите, связаны ли они с сообществом. Спросите их о Мартине Одерском и Дэвиде Поллаке. Попросите их назвать несколько проектов Scala и описать их вам (Facebook, Twitter, FourSquare, DBPedia и DBPedia SpotLight). Посмотрите, знают ли они, как именно Scala используется в этих проектах. Они читали статьи, смотрели видео и т. Д.?
Спросите их о книгах (их всего несколько). Чем больше они знают, тем лучше.
В качестве последнего слова предостережения я могу сказать, что блестящие языки обладают этим странным потенциалом для привлечения не тех людей. Будьте осторожны с тем, что приходит в Scala по всем неправильным причинам. Вот несколько:
Scala для привилегированных (я чувствую себя умным, я чувствую себя настолько отличным от других Джо, у меня есть совершенно новый блестящий доктор философии, я ненавижу императив, потому что это для отсталых, Java поверхностен, Scala настолько элегантен, и т. Д. ). Этот тип не продуктивен в серьезных проектах и с ним трудно ладить.
Я влюблен в синтаксис Scala и хотел бы писать свой DSL везде, где у меня есть возможность писать код. Этот вид любит эксплуатировать особенности Scala до последней капли разрушительным способом. Они прекрасно сочиняют загадочный и лаконичный код до такой степени, что его невозможно прочитать. Этот вид особенно опасен, так как их код не читается. Их распродажа - любовь к перегрузкам операторов, странным именам и написанию однострочников.
Я придерживаюсь Scala до последней капли, несмотря ни на что. Это наивный пуристский тип. Они не могут пойти на компромисс, и проект страдает, когда требуется гибридный подход, как в случае с реальными проектами.
PS: Если вы нашли хорошего Джо, то, пожалуйста, непременно сообщите мне, как нам нужно;)
@Dave Briccetti, я получил идею «связан с сообществом» от Дейва и решил уточнить, и в итоге я получил очень длинный ответ. Благодарю Дэйва за упоминание сообщества;)
Ашкан Х. Назар
Отличный пост. Кто ты?
Дэйв Бричетти,
@ Дэйв, я в настоящее время ведущий разработчик @ AYLIEN, который занимается NLP Scala.
Ашкан Х. Назар
Отличный ответ в целом, но +1 особенно за короткий список "неправильных причин". Те же патологии можно найти в фанатиках C ++.
DarenW
1
Вероятно, можно пропустить половину этого интервью, не закодировав в Scala. Это баг или фича? Я удивлен, что ваш вывод не более агностичен в отношении языка программирования, например, что, в конце концов, хороший разработчик Scala - хороший разработчик, просто с другим синтаксическим сахаром.
Артур Гавличек
8
В реальном интервью просто знание того, что Scala - это половина выигранной битвы. Нанимать хорошего программиста всегда сложно, независимо от языка!
Программисты Scala склонны переходить на язык, потому что они уже были на вершине своей игры на Java и хотели «поднять его на новый уровень».
Если у вас есть множество разработчиков Scala, доступных для интервью, то считайте себя счастливчиком. Если нет, то более актуальными могут быть следующие вопросы: «Какие аспекты мне следует искать у программиста, которого я буду обучать использованию Scala?» И «Какие компании в настоящее время могут предоставлять услуги обучения?»
Я хотел бы сказать, что не все разработчики Scala являются лучшими в Java (или что-то в этом роде), многим из них просто нравится чувство «я другой» или «я умный», которое дает им Scala. Многие не имеют ни малейшего понятия о том, что такое Скала. Вы должны быть осторожны с ними ;-)
Ашкан Х. Назар
@ ashy_32bit - Это все более верно в наше время, но это было не так, когда я отвечал на это в 2011 году
Кевин Райт
7
Мне нравится видеть решения небольших проблем, таких как: Составьте гистограмму результатов броска двух шестигранных кубиков 200 раз.
Кто-то с решением, подобным Даниэлю Собралу или Кевину Райту: http://ideone.com/8LFs3 , заслуживает более пристального взгляда.
Если ответ выглядит как код Java, то заявитель может оказаться недостаточно далеко вперед.
Я также хотел бы видеть, что этот человек связан с сообществом Scala: знает книги, авторов, разработчиков с открытым исходным кодом, группы пользователей, интересных людей.
Ответы:
Во-первых, я бы сказал, подумайте, зачем вам Scala-разработчик. Вам действительно нужен Scala? Подумайте о том, что идет вместе со Scala (IDE, инструменты для сборки, библиотеки, еще один уровень сложности выше Java и т. Д.). Вернуться к вопросу. Это идет в двух аспектах: теоретическое понимание и практические способности. не позволяйте «теории» обмануть вас. Это так же важно в Scala, как практичность важна в Java.
теоретический
Теория и практика смешались
практический
Посмотрите, могут ли они преобразовать императивный фрагмент кода в хорошую функциональную альтернативу (см. Выше). Попробуйте цикл, который реализует некоторые математические или что-то в этом роде.
Найдите их вкус к функциональности против императивного стиля. Выберите более функциональный стиль, но будьте осторожны, он не доходит до крайности на стороне разработчика.
Посмотрите, как много они знают о библиотеках Scala (например, Lift, Dispatch и т. Д.) И инструментах (например, SBT, fsc, IDEA).
Посмотрите, насколько хорошо они могут использовать Java (инструменты кода и). Scala тесно связана с Java, особенно в более серьезных средах. Знание этого является большим плюсом.
теоретический
практический
Посмотрите, связаны ли они с сообществом. Спросите их о Мартине Одерском и Дэвиде Поллаке. Попросите их назвать несколько проектов Scala и описать их вам (Facebook, Twitter, FourSquare, DBPedia и DBPedia SpotLight). Посмотрите, знают ли они, как именно Scala используется в этих проектах. Они читали статьи, смотрели видео и т. Д.?
Спросите их о книгах (их всего несколько). Чем больше они знают, тем лучше.
В качестве последнего слова предостережения я могу сказать, что блестящие языки обладают этим странным потенциалом для привлечения не тех людей. Будьте осторожны с тем, что приходит в Scala по всем неправильным причинам. Вот несколько:
PS: Если вы нашли хорошего Джо, то, пожалуйста, непременно сообщите мне, как нам нужно;)
источник
В реальном интервью просто знание того, что Scala - это половина выигранной битвы. Нанимать хорошего программиста всегда сложно, независимо от языка!
Программисты Scala склонны переходить на язык, потому что они уже были на вершине своей игры на Java и хотели «поднять его на новый уровень».
Если у вас есть множество разработчиков Scala, доступных для интервью, то считайте себя счастливчиком. Если нет, то более актуальными могут быть следующие вопросы: «Какие аспекты мне следует искать у программиста, которого я буду обучать использованию Scala?» И «Какие компании в настоящее время могут предоставлять услуги обучения?»
источник
Мне нравится видеть решения небольших проблем, таких как: Составьте гистограмму результатов броска двух шестигранных кубиков 200 раз.
Смотрите комментарии здесь для некоторых интересных ответов: http://briccetti.blogspot.com/2011/01/dice-throw-simulation-in-java-and-scala.html
Кто-то с решением, подобным Даниэлю Собралу или Кевину Райту: http://ideone.com/8LFs3 , заслуживает более пристального взгляда.
Если ответ выглядит как код Java, то заявитель может оказаться недостаточно далеко вперед.
Я также хотел бы видеть, что этот человек связан с сообществом Scala: знает книги, авторов, разработчиков с открытым исходным кодом, группы пользователей, интересных людей.
источник
Я никогда не нанимал Scala, но я бы искал понимание того, как это влияет на работу, шаблон классов типов и основы функционального программирования.
источник