Как обстоят дела с языками программирования в качестве строгих требований к работе? [закрыто]


22

Недавно я побывал на «Ярмарке вакансий» и был удивлен, увидев, как много рабочих мест уделяется языкам программирования, с которыми кандидаты знакомы.

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

Я бы подумал, что работодателя больше заботит количество языков / парадигм, с которыми я знаком, или каков мой опыт разработки алгоритмического / программного обеспечения, в отличие от конкретной технологии, с которой я разбираюсь в данный момент.

Скажем, я уже знаю Java, C ++, Smalltalk и Prolog ... должно ли рабочее место, которое опирается на Objective-C, действительно считать меня неквалифицированным, потому что мне не хватает опыта в этом языке? Является ли это недостатком методологий найма, и если это так, что я могу сделать, чтобы убедить это рабочее место, что мой недостаток опыта в Objective-C не должен иметь значения? Я спрашиваю гипотетически, а не конкретно о упомянутых языках программирования.

Кроме того, мой опыт ограничен, и я признаю, что я могу что-то упустить. Является ли предыдущий опыт работы с языком программирования более важным, чем я думаю? Имеет ли значение, если это младшая или старшая должность? Должно ли это иметь значение?


2
Вы пошли на ярмарку вакансий, поэтому вы должны быть студентом ...
Работа

@ Задание верно, я аспирант. У меня есть несколько лет опыта работы в отрасли, но я определенно только начинаю свою карьеру сейчас.
Дуб

6
Я просто хотел бы высказать общее мнение по поводу всех этих обвиняющих HR. Ни в одной компании, в которой я работал (а это довольно много), HR не принимал участия в найме технического персонала, кроме как для отправки окончательного предложения о работе. в частности, они никогда не проводили скрининг CV.
Нил Баттерворт

В моем случае, когда я сказал HR в своем ответе, я на самом деле имел в виду больше «кого-то, кто не совсем понимает технологию, которая пишет описание работы». Это может быть секретарь, которому поручено набирать описание работы из заметок, или это может быть несчастный менеджер, который на самом деле не понимает, чего он хочет.
Джоккинг

@ oak Кстати, не могли бы вы объяснить, что вы подразумеваете под "акцентом"? Вы просто подразумеваете, что языки указаны в описании работы, или что люди, которых вы встретили на ярмарке вакансий, настойчиво относились к этому? Если это только первое, то я думаю, что вы немного сверхчувствительны.
Джоккинг

Ответы:


24

Вопреки пресс-релизам, сейчас рынок работодателей .

Это означает, что они могут быть просто требовательны к своим требованиям. Это означает, что они могут требовать опыта работы с .NET 4.0, а не только опыта 3.5 ... Это означает, что они могут требовать опыта работы с Django, а не только с Pylons и т. Д.

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

Но работодатель может выбирать резюме людей, уже владеющих Ruby & Rails.

TL; DR: Econ 101 ... Не верьте ажиотажу по поводу нехватки программистов .


3
Я должен отметить, что рынок для программистов очень зависит от местоположения. Там, где я (по совпадению, в большом университетском городе) все места, где я брал интервью, говорили, что сейчас им трудно найти кандидатов.
Tesserex

15
Tesserex - это должно быть переведено как «Мы ​​не можем найти программистов, которые знают весь наш алфавитный суп технологий, по цене, которую мы готовы заплатить.
red-dirt

21
Есть много программистов; что трудно найти сейчас (как это всегда было) - хорошие программисты.
tdammers

10
Наоборот, как работодатель, я могу вам сказать, что это определенно рынок для работников, по крайней мере, для талантливых людей. Для великих программистов, как всегда, предложение значительно превышает спрос. С другой стороны, я не считаю кого-то, кто имеет «пару месяцев» опыта, программистом (или плотником, или врачом, или любой другой квалифицированной профессией), поэтому ваши цифры, вероятно, сильно отличаются от моих.
Рейн Хенрикс

2
@ Rein - вы можете сказать, что все, что вы хотите, но простой экон не выдерживает. Если бы это было так, то вы бы увидели зарплату лучших программистов намного выше. Топ врач или адвокат очистит 500000 долларов в год ... Старший инженер - программист Google имеет среднюю зарплату в $ 130,000 (Glassdoor). Я думаю , что ты имел в виду сказать, в том , что вы не могли бы найти кого - то 3x как продуктивный по цене среднего инженера.
красная грязь

14

Основная проблема в том, что никто не знает, как нанять хороших программистов. Вторичная проблема заключается в том, что программирование привлекает много кандидатов.

Учитывая большую кучу резюме, было бы очень хорошо иметь возможность прочесать их и выбрать хороших программистов, но никто не знает, как это сделать. То, как работает большинство компаний, изначально сортировка осуществляется персоналом. Специалист по персоналу ничего не знает о Smalltalk или C ++, за исключением случаев, перечисленных в списке требований, в отличие от специалиста по программному обеспечению, который может подумать: «C ++ AND Smalltalk - у этого парня не будет проблем с Objective-C».

Даже когда стек идет к менеджеру по найму, он, скорее всего, слишком толстый, чтобы брать интервью у всех, поэтому менеджер по найму должен по какой-то причине выбрасывать резюме. Если это работа на C ++, и есть больше людей с 5+ годами C ++, чем менеджер считает целесообразным взять интервью, менеджер вполне может выбросить все резюме, на которых нет C ++. Это не способ получить абсолютно лучших людей, но никто не знает, как нанять абсолютно лучших людей, и если вы ограничены в принятии решений тем, что написано в резюме, люди с опытом работы с C ++, по крайней мере, немного лучше Пари.


1
Отличный ответ. Незначительное беспокойство: я не знаю, действительно ли никто не знает, как нанять хороших программистов, или что отделы кадров и рекрутеры не знают, и в большинстве компаний есть процесс найма под руководством HR. Я согласен, что никто не знает, как нанять хороших программистов, не тратя на это много времени.
Том Андерсон

@Tom Anderson: Лучшее, что я слышал, - это методы, позволяющие избежать найма плохих программистов. Учитывая избыток кандидатов и причины, по которым хорошие программисты могут подавать заявки в цифрах, это работает достаточно хорошо. Все предложения Джоэля, которые я читал, например, работают именно так.
Дэвид Торнли

4
@ Том Андерсон Я бы сказал, что никто не знает, как отличить хорошего программиста от плохого, посмотрев на резюме, и никто не знает, как взять интервью у большего количества людей, чем у них есть время поговорить. Неважно, руководит ли это HR, технический рекрутер или менеджер по найму.
Джереми

8

Давайте перевернем это - если бы вы знали цель C, вы бы пригодились в качестве программиста на C ++? Я бы сказал, нет, вы бы не стали, языки слишком разные. Даже для таких простых языков, как C, я хотел бы получить опыт работы за 6 месяцев до того, как нанять кого-то, на C ++ на несколько лет.

Несколько лет назад я учил себя PHP. Я бы сказал, что прошло несколько месяцев, прежде чем я смог в этом разобраться, смог обойти библиотеку, понять общие идиомы и т. Д. И я уже знал много языков.


2
Хорошие компании, как правило, вкладывают средства в сотрудников, и для того, чтобы освоиться, требуется несколько месяцев. К сожалению, только несколько компаний-разработчиков следуют этой практике. Также (по совпадению ???) кажется, что они входят в число лучших компаний: Google, Facebook, Microsoft и т. Д.
red-dirt

3
"" "Вы должны хорошо знать хотя бы один язык программирования, и желательно, чтобы он был на C ++ или Java. C # тоже подойдет, поскольку он очень похож на Java. От вас ожидается, что вы напишете некоторый код по крайней мере в некоторых ваших интервью . От вас ожидают, что вы узнаете достаточно подробную информацию о вашем любимом языке программирования . "" " Steve-yegge.blogspot.com/2008/03/get-that-job-at-google.html
red-dirt

2
Опытный программист может выучить C ++ примерно за восемь часов ... просто прочитайте «Эффективный C ++» и поймите это. Это ставит вас выше 90% программистов C ++ на рынке. Понимание STL ставит вас в топ 3%.
Кевин Клайн

3
@ Кевин Ирония? Сарказм? Какая?
Нил Баттерворт

2
@ Кевин: ясно, что вы не знаете, о чем говорите. C ++ - один из самых сложных языков с большим количеством причуд, чем вы можете себе представить. Никто не сможет выучить это за 8 часов (день работы !!!). Вы даже не можете изучать языки, такие как PHP, в то время.
Томас Бонини

8

Это зависит от различных аспектов контекста. Не только уровень роли, но и состояние проекта и компании.

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

Если вы можете кодировать в императиве, вы можете кодировать в императиве. Будь то Java, C #, C, C ++ или даже JavaScript. Имея приличный справочник (и, возможно, немного шаблонного), вы сможете запустить небольшую программу в любой из других программ во второй половине дня.

Независимо от вашей истории, вы знаете о ветвлениях и функциях циклов, и синтаксис для них почти одинаков. Если ваша история OO, вы также знаете об объектах, классах и интерфейсах.

Тем не менее, я видел слишком много программистов только для императива, пытающихся написать простые программы на декларативных или функциональных языках. Если бы я управлял магазином Erlang, я бы предпочел, чтобы кто-то с Erlang или, по крайней мере, Prolog, работал с кем-то с C ++.


Как это зависит от уровня роли:

Рекрутинг на младшую роль:

Если бы я выбирал программиста для работы на C ++, я хотел бы иметь определенные подводные камни, чтобы быть уверенным, что кандидат способен избежать, например необходимость обращать внимание на память или длину массивов, просто чтобы они Стреляй себе (и мне) в ногу. Если бы они никогда не делали C или C ++, тогда я должен был бы решить это на собеседовании.

И для старшей роли:

Одним из ключей к эффективному программированию является знание того, что вы не должны писать сами. Ключом к этому являются стандартные (и де-факто стандартные) библиотеки. Ключ к этому - опыт. Вы не можете просто сидеть с «Обучаться Java» в течение недели и мгновенно превратиться из 10-летнего программиста C ++ в 10-летнего Java-программиста.


Как это зависит от состояния проекта / компании

Учитывая проект Java, который в значительной степени чистый лист. Я бы хотел, чтобы у нового старшего сотрудника было много знаний об экосистеме Java, и я мог бы консультировать по различным доступным технологиям.

Учитывая зрелый Java-проект, я с радостью рассмотрел бы опытного разработчика C ++, с небольшим или отсутствующим опытом Java для старшей роли Java. Большинство экосистемных решений уже будет принято, и новый сотрудник сможет получить опыт работы с библиотеками Java, в то время как компания использует опыт программиста в разработке ОО-программного обеспечения.


Я думаю, что вы затронули очень важный вопрос, упомянув экосистему. Это то, что может сыграть огромную роль, и я предполагаю, что обычно требуется опытный разработчик на платформе X, чтобы хорошо познакомиться с экосистемой X; просто изучение нового синтаксиса и нескольких новых парадигм, вероятно, не приведет к сокращению.
Дуб

Я с дубом - вы делаете отличную точку , что быть хорошим X программистом требует много знаний экосистем на вершине просто собирание языка X .
Carson63000

4

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

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


4

Найм труден; нанять хороших людей еще сложнее. Я сделал найм, где я столкнулся со стеком более 500 резюме. Конечно, мы отфильтровали людей с наименьшим опытом в том, что мы хотели, чтобы получить стек до разумного размера. Это справедливо по отношению к прекрасному кандидату, который не знает этого языка, вероятно, нет. Но если я смогу найти 100 человек, которые имеют квалификацию, которую я ищу, я действительно не собираюсь тратить много времени на 400 человек, которые этого не делали - независимо от того, насколько они хороши.

Теперь при найме у меня может быть длинный список требований, но обычно только один или два нарушают условия сделки. И если вы не найдете никого с первоначальным списком квалификаций, которые вы хотите взять на собеседование (или позже, если они все не пройдут собеседование, которое, как я видел, произошло), то обычно они возвращаются и смотрят на людей, которые пропускают некоторые из них. из менее критических квалификаций или людей, которые имеют что-то похожее, но не то же самое. В этих случаях вы часто ищете что-то из опыта этого человека, что сделает его лучше для вашей работы, чем кто-либо со всей технической квалификацией. Например, я бы рассмотрел аналитика данных с опытом работы в другой корпоративной базе данных, если бы у нее был опыт работы в моей бизнес-сфере (на самом деле, этот человек, вероятно, сделал бы мое первое сокращение, если бы я увидел все резюме). То же самое с чем-то вроде C # и Java. Если человек выполняет работу аналогичного уровня сложности, особенно в аналогичной сфере бизнеса, он может быть очень хорошим кандидатом, даже если у него есть другой язык.

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

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

Наконец, подайте заявку на интересующую вас работу, даже если вы не соответствуете всем заявленным требованиям (но старайтесь соответствовать некоторым, сотрудники, принимающие на работу, не любят тратить свое время на людей, которых никогда не берут на работу). Вы никогда не знаете, какое соревнование вы собираетесь устроить на работу или что больше всего впечатлит людей, просматривающих резюме или проводящих собеседования. То, что может дать вам интервью в компании А, может быть именно тем, что мешает вам пройти собеседование в компании Б, даже если у них есть одинаковые требования на бумаге. Кроме того, у них может быть работа, которая лучше соответствует вашей квалификации, которую они еще не рекламировали. Но вас никогда не заинтересуют за работу, если они не знают о вас.


3

Должно ли это? Нет ли это? Да, к сожалению. Это синдром «фиолетовой белки»: компания хочет получить свой пирог и съесть его, а также найти кандидата, который сможет делать все под солнцем, в котором они нуждаются или могут нуждаться. Часто, но не всегда, это потому, что они либо А) не имеют ни малейшего представления о том, что на самом деле влечет за собой развитие, и просто предполагают, что кто-то, отвечающий всем их критериям, может выполнить свою работу, Б) Они придирчивы, потому что им это сходит с рук, или В) Они планируют подать H-1B / Green Card / Promote изнутри, но должны сделать так, чтобы они выглядели так, как будто они рекламируют настоящую работу.


3

«Скажем, я уже знаю Java, C ++, Smalltalk и Prolog ... должно ли рабочее место, которое опирается на Objective-C, действительно считать меня неквалифицированным, потому что мне не хватает опыта в этом языке?»

Если у вас более 20 лет опыта работы с 3 или 4 языками, имеющими функции, аналогичные Objective-C, то я, вероятно, найму вас для выполнения Objective-C и ожидаю, что вы будете продуктивными через 6 - 8 недель. (это основано на моем личном опыте изучения Objective-C несколько лет назад).

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

Objective-C здесь интересный соломенный человек. Это требует, чтобы вы очень хорошо знали C, это требует, чтобы вы хорошо знали объектно-ориентированный анализ и проектирование, в большинстве случаев это требует, чтобы вы знали C ++ нетривиальным образом, потому что есть библиотеки C ++, с которыми вы, вероятно, захотите взаимодействовать.

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

Это не просто Objective-C, вам также нужно знать Cocoa и POSIX, потому что, если посмотреть на это, Objective-C для любых практических целей бесполезен вне среды Apple, и вам также нужно знать Cocoa.

И когда вы не можете использовать Какао, вам нужно знать, какие API POSIX использовать, когда вы не можете делать то, что вы хотите, с оболочками Какао.

Это также подразумевает, что вы должны знать Unix в некоторой нетривиальной степени.


2

Зависит от языка / личности.

Если я на C # и кто-то с опытом JAVA / J2EE подает заявку, я сделаю попытку. Синтаксис между C # и JAVA ничем не отличается. Кодирование - это кодирование, и я полагаю, что когда они привыкнут к некоторым различиям, с ними все будет в порядке.

То же самое относится и к JAVA -> C #.

Теперь, если вы работали в C # и подали заявку на работу в C ++, я хочу увидеть опыт. Слишком много различий.

Так что да, это зависит от ситуации


3
Синтаксис - такая маленькая часть изучения языка ..
Борис Янков

@ Борис, это правда, но то, что он говорит, все еще применимо на каком-то уровне, будь то стиль или библиотеки или что-то еще ...
tylermac

2

Хотя я считаю, что ОП не знает, как программист, имеющий опыт работы со многими парадигмами, может легко добавить еще одну, все это сводится к отвращению работодателя к риску. Потенциальный наемник, который не знаком с их инструментами, является дикой картой; они могут быть действительно хорошими, но они также могут быть провалом, и интервьюеру будет труднее, чем обычно, определить разницу, если он не сможет подробно задать вопросы о технологиях, которые он использует.

Я определенно не говорю, что это правильный взгляд на это, но так делают некоторые работодатели. Умные используют это и выкапывают удивительных программистов с 30-летним опытом работы на C ++, а глупые отказывают им, потому что им не хватает 15-летнего опыта работы с Ruby on Rails. Программисты могут использовать это также, избегая работы с работодателями, которые так плохо информированы. В конце концов, кто хочет работать в месте, которое систематически принимает плохие решения о найме?


1
+1 за то, что «интервьюеру будет труднее, чем обычно, сказать разницу, если он не может подробно задавать вопросы о технологиях, которые он использует», это звучит как довольно веская причина.
Дуб

1

Частично речь идет о том, чтобы HR бросал модные слова в описание работы, поскольку они не совсем понимают роль. Вот почему вы время от времени сталкиваетесь с комичной ситуацией, когда в должностной инструкции указывается 3-летний опыт работы в технологии, существовавшей всего 6 месяцев.

Что касается того, должно ли это иметь значение, это действительно зависит от роли и вовлеченных людей. Почти все менеджеры, нанимающие на работу (конечно, все умные), будут инструктировать сотрудников отдела кадров передавать им кандидатов, которые имеют большую силу в большинстве областей, даже если им не хватает одного или двух пунктов в описании работы. Однако это обычно не относится к недавнему выпускнику; Я говорю о людях с большим опытом работы, которые взаимодействуют с клиентами, ведущими командами или кем-то еще.


0

Я бы подумал, что работодателя больше заботит количество языков / парадигм, с которыми я знаком, или каков мой опыт разработки алгоритмического / программного обеспечения, в отличие от конкретной технологии, с которой я разбираюсь в данный момент.

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

Просто чтобы дать более конкретный пример этой среды, вот что у меня есть, где я работаю: Visual Studio 2008 делает ASP.Net с использованием C # в основном, nUnit, Cruise Control.Net, Subversion, Agile / Scrum, со смесью процедурных OO и функциональный в зависимости от того, где вы смотрите. Если бы я хотел переключиться на Java, это могло бы означать привыкание к новым инструментам для многих из этих функций, которые могут не соответствовать тому, что работодатель хочет поглотить, как стоимость найма меня на эту должность. Также могут быть некоторые хитрые моменты, которые те, кто имеет опыт в этой версии, могут знать лучше, чем другие, и избегать некоторых ловушек, которые в противном случае могут заставить кого-то уйти: «Почему они построили это таким образом?»


Но, что интересно, обычно опыт работы с решением по управлению исходным кодом / средой IDE / Testing будет второстепенным по сравнению с опытом в языках программирования (хотя, безусловно, он может помочь вам получить работу)
Дуб

-2

Нет, смотри Эти требования не собраны ИТ-парнями. Они собраны сотрудниками отдела кадров. И способ, которым сотрудники отдела кадров получают требования, - это выкрикивать вопросы ИТ-специалистам, когда они возвращаются к кофеварке.

Поэтому они говорят: «Что тебе нужно?» и случайный чмо, который в итоге отвечает, говорит: «Программист. Нужен опыт нескольких лет. Например, я не знаю, 4? И было бы хорошо, если бы он знал .Net». Разумный ответ.

Но это переводится как «4-летний опыт работы в .Net 4», и это .Net 4, потому что, когда вы заходите в Google .Net, первая ссылка приведет вас на страницу, посвященную .Net 4.

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


1
Это довольно горький ответ. Вероятно, есть несколько компаний, где сцена, которую вы описали, является правдой, но большинство не так уж и неблагополучно.
Джоккинг

Не согласен. В последних нескольких компаниях, в которых я работал, даже не было сотрудников отдела кадров. И когда мы рекламировали новых сотрудников, нам требовался коммерческий опыт работы с языком и платформой, на которых мы работали. Зачем? Потому что, если нет кандидатов с таким опытом (и так было), зачем выделять дополнительное время, чтобы поговорить с людьми, у которых нет такого опыта, в надежде, что вы найдете кого-то настолько хорошего, что готовы ждать они учатся?
Carson63000
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.