Недавно я побывал на «Ярмарке вакансий» и был удивлен, увидев, как много рабочих мест уделяется языкам программирования, с которыми кандидаты знакомы.
Исходя из моего (по общему признанию ограниченного) опыта, хотя для истинного овладения языком программирования могут потребоваться годы, его изучение до разумного уровня является довольно простым делом для человека, уже имеющего опыт работы с другими языками, и может определенно соответствовать временным рамкам, которые работодатели обычно выделяют на начальный рост.
Я бы подумал, что работодателя больше заботит количество языков / парадигм, с которыми я знаком, или каков мой опыт разработки алгоритмического / программного обеспечения, в отличие от конкретной технологии, с которой я разбираюсь в данный момент.
Скажем, я уже знаю Java, C ++, Smalltalk и Prolog ... должно ли рабочее место, которое опирается на Objective-C, действительно считать меня неквалифицированным, потому что мне не хватает опыта в этом языке? Является ли это недостатком методологий найма, и если это так, что я могу сделать, чтобы убедить это рабочее место, что мой недостаток опыта в Objective-C не должен иметь значения? Я спрашиваю гипотетически, а не конкретно о упомянутых языках программирования.
Кроме того, мой опыт ограничен, и я признаю, что я могу что-то упустить. Является ли предыдущий опыт работы с языком программирования более важным, чем я думаю? Имеет ли значение, если это младшая или старшая должность? Должно ли это иметь значение?
Ответы:
Вопреки пресс-релизам, сейчас рынок работодателей .
Это означает, что они могут быть просто требовательны к своим требованиям. Это означает, что они могут требовать опыта работы с .NET 4.0, а не только опыта 3.5 ... Это означает, что они могут требовать опыта работы с Django, а не только с Pylons и т. Д.
Конечно, вы можете узнать все, что вам нужно знать о Ruby, за пару недель, и Rails может потребоваться несколько месяцев (только предположения), чтобы стать опытным с ...
Но работодатель может выбирать резюме людей, уже владеющих Ruby & Rails.
TL; DR: Econ 101 ... Не верьте ажиотажу по поводу нехватки программистов .
источник
Основная проблема в том, что никто не знает, как нанять хороших программистов. Вторичная проблема заключается в том, что программирование привлекает много кандидатов.
Учитывая большую кучу резюме, было бы очень хорошо иметь возможность прочесать их и выбрать хороших программистов, но никто не знает, как это сделать. То, как работает большинство компаний, изначально сортировка осуществляется персоналом. Специалист по персоналу ничего не знает о Smalltalk или C ++, за исключением случаев, перечисленных в списке требований, в отличие от специалиста по программному обеспечению, который может подумать: «C ++ AND Smalltalk - у этого парня не будет проблем с Objective-C».
Даже когда стек идет к менеджеру по найму, он, скорее всего, слишком толстый, чтобы брать интервью у всех, поэтому менеджер по найму должен по какой-то причине выбрасывать резюме. Если это работа на C ++, и есть больше людей с 5+ годами C ++, чем менеджер считает целесообразным взять интервью, менеджер вполне может выбросить все резюме, на которых нет C ++. Это не способ получить абсолютно лучших людей, но никто не знает, как нанять абсолютно лучших людей, и если вы ограничены в принятии решений тем, что написано в резюме, люди с опытом работы с C ++, по крайней мере, немного лучше Пари.
источник
Давайте перевернем это - если бы вы знали цель C, вы бы пригодились в качестве программиста на C ++? Я бы сказал, нет, вы бы не стали, языки слишком разные. Даже для таких простых языков, как C, я хотел бы получить опыт работы за 6 месяцев до того, как нанять кого-то, на C ++ на несколько лет.
Несколько лет назад я учил себя PHP. Я бы сказал, что прошло несколько месяцев, прежде чем я смог в этом разобраться, смог обойти библиотеку, понять общие идиомы и т. Д. И я уже знал много языков.
источник
Это зависит от различных аспектов контекста. Не только уровень роли, но и состояние проекта и компании.
На простейшем уровне любой императивный язык в фигурных скобках почти такой же, как и любой другой.
Если вы можете кодировать в императиве, вы можете кодировать в императиве. Будь то 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, в то время как компания использует опыт программиста в разработке ОО-программного обеспечения.
источник
Это зависит от рабочего места. Если они очень заняты, у них может не хватить времени ждать, пока вы дойдете до точки, где вы можете работать в Objective-C - им может понадобиться кто-то, кто может взяться за дело.
Некоторые рабочие места могут быть готовы пойти на риск с вами, если увидят, что вы знакомы с другими языками, а также имеете прочные основы и знание предметной области. Это будет действительно зависеть от того, насколько они открыты и насколько хорошо вы сможете убедить рекрутера пойти на такой риск.
источник
Найм труден; нанять хороших людей еще сложнее. Я сделал найм, где я столкнулся со стеком более 500 резюме. Конечно, мы отфильтровали людей с наименьшим опытом в том, что мы хотели, чтобы получить стек до разумного размера. Это справедливо по отношению к прекрасному кандидату, который не знает этого языка, вероятно, нет. Но если я смогу найти 100 человек, которые имеют квалификацию, которую я ищу, я действительно не собираюсь тратить много времени на 400 человек, которые этого не делали - независимо от того, насколько они хороши.
Теперь при найме у меня может быть длинный список требований, но обычно только один или два нарушают условия сделки. И если вы не найдете никого с первоначальным списком квалификаций, которые вы хотите взять на собеседование (или позже, если они все не пройдут собеседование, которое, как я видел, произошло), то обычно они возвращаются и смотрят на людей, которые пропускают некоторые из них. из менее критических квалификаций или людей, которые имеют что-то похожее, но не то же самое. В этих случаях вы часто ищете что-то из опыта этого человека, что сделает его лучше для вашей работы, чем кто-либо со всей технической квалификацией. Например, я бы рассмотрел аналитика данных с опытом работы в другой корпоративной базе данных, если бы у нее был опыт работы в моей бизнес-сфере (на самом деле, этот человек, вероятно, сделал бы мое первое сокращение, если бы я увидел все резюме). То же самое с чем-то вроде C # и Java. Если человек выполняет работу аналогичного уровня сложности, особенно в аналогичной сфере бизнеса, он может быть очень хорошим кандидатом, даже если у него есть другой язык.
Однако, если бы у меня не было достаточно формальной программы обучения для людей начального уровня, я бы с меньшей вероятностью нанимал людей, которые не соответствовали моему минимальному набору языков. И почти никогда из группы, у которой не было ничего из того, что я собирался найти. Людям, не имеющим опыта, приходится меньше привлекать к столу с точки зрения некоторой компенсирующей квалификации и меньше опыта, чтобы доказать, что они могут выполнять работу профессионального уровня на любом языке. Их достаточно, чтобы выучить на своем первом профессиональном концерте, не понимая самого важного языка, который мы используем. И нанять их - это больше риск того, что могут пройти месяцы, прежде чем вы сможете получить от них полезную работу.
Еще один момент вступает в игру, если сотрудник по найму переводит команду на новую технологию. Если никто в команде не является действительно экспертом в технологии, и мне нужно нанять кого-то нового, я собираюсь нанять кого-то с таким большим опытом, который я могу найти в этой технологии, потому что у них есть идея, где «наземные мины» «Избегать есть.
Наконец, подайте заявку на интересующую вас работу, даже если вы не соответствуете всем заявленным требованиям (но старайтесь соответствовать некоторым, сотрудники, принимающие на работу, не любят тратить свое время на людей, которых никогда не берут на работу). Вы никогда не знаете, какое соревнование вы собираетесь устроить на работу или что больше всего впечатлит людей, просматривающих резюме или проводящих собеседования. То, что может дать вам интервью в компании А, может быть именно тем, что мешает вам пройти собеседование в компании Б, даже если у них есть одинаковые требования на бумаге. Кроме того, у них может быть работа, которая лучше соответствует вашей квалификации, которую они еще не рекламировали. Но вас никогда не заинтересуют за работу, если они не знают о вас.
источник
Должно ли это? Нет ли это? Да, к сожалению. Это синдром «фиолетовой белки»: компания хочет получить свой пирог и съесть его, а также найти кандидата, который сможет делать все под солнцем, в котором они нуждаются или могут нуждаться. Часто, но не всегда, это потому, что они либо А) не имеют ни малейшего представления о том, что на самом деле влечет за собой развитие, и просто предполагают, что кто-то, отвечающий всем их критериям, может выполнить свою работу, Б) Они придирчивы, потому что им это сходит с рук, или В) Они планируют подать H-1B / Green Card / Promote изнутри, но должны сделать так, чтобы они выглядели так, как будто они рекламируют настоящую работу.
источник
Если у вас более 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 в некоторой нетривиальной степени.
источник
Зависит от языка / личности.
Если я на C # и кто-то с опытом JAVA / J2EE подает заявку, я сделаю попытку. Синтаксис между C # и JAVA ничем не отличается. Кодирование - это кодирование, и я полагаю, что когда они привыкнут к некоторым различиям, с ними все будет в порядке.
То же самое относится и к JAVA -> C #.
Теперь, если вы работали в C # и подали заявку на работу в C ++, я хочу увидеть опыт. Слишком много различий.
Так что да, это зависит от ситуации
источник
Хотя я считаю, что ОП не знает, как программист, имеющий опыт работы со многими парадигмами, может легко добавить еще одну, все это сводится к отвращению работодателя к риску. Потенциальный наемник, который не знаком с их инструментами, является дикой картой; они могут быть действительно хорошими, но они также могут быть провалом, и интервьюеру будет труднее, чем обычно, определить разницу, если он не сможет подробно задать вопросы о технологиях, которые он использует.
Я определенно не говорю, что это правильный взгляд на это, но так делают некоторые работодатели. Умные используют это и выкапывают удивительных программистов с 30-летним опытом работы на C ++, а глупые отказывают им, потому что им не хватает 15-летнего опыта работы с Ruby on Rails. Программисты могут использовать это также, избегая работы с работодателями, которые так плохо информированы. В конце концов, кто хочет работать в месте, которое систематически принимает плохие решения о найме?
источник
Частично речь идет о том, чтобы HR бросал модные слова в описание работы, поскольку они не совсем понимают роль. Вот почему вы время от времени сталкиваетесь с комичной ситуацией, когда в должностной инструкции указывается 3-летний опыт работы в технологии, существовавшей всего 6 месяцев.
Что касается того, должно ли это иметь значение, это действительно зависит от роли и вовлеченных людей. Почти все менеджеры, нанимающие на работу (конечно, все умные), будут инструктировать сотрудников отдела кадров передавать им кандидатов, которые имеют большую силу в большинстве областей, даже если им не хватает одного или двух пунктов в описании работы. Однако это обычно не относится к недавнему выпускнику; Я говорю о людях с большим опытом работы, которые взаимодействуют с клиентами, ведущими командами или кем-то еще.
источник
Вы когда-нибудь рассматривали все элементы, составляющие ваш стек разработки? Например, какие IDE, среда тестирования, непрерывная интеграция, управление версиями, методология разработки и парадигмы кода создают среду, которую кто-то использует для создания программного обеспечения. Это может быть целый ряд инструментов, которые некоторые компании, возможно, захотят, чтобы кто-то уже знал, а не использовал их с нуля. Еще одним фактором здесь является мнение Айронкода о рынке работодателя, поскольку могут быть случаи, когда существует сильная конкуренция за должность, и поэтому компании могут стремиться к небу и, возможно, получить его.
Просто чтобы дать более конкретный пример этой среды, вот что у меня есть, где я работаю: Visual Studio 2008 делает ASP.Net с использованием C # в основном, nUnit, Cruise Control.Net, Subversion, Agile / Scrum, со смесью процедурных OO и функциональный в зависимости от того, где вы смотрите. Если бы я хотел переключиться на Java, это могло бы означать привыкание к новым инструментам для многих из этих функций, которые могут не соответствовать тому, что работодатель хочет поглотить, как стоимость найма меня на эту должность. Также могут быть некоторые хитрые моменты, которые те, кто имеет опыт в этой версии, могут знать лучше, чем другие, и избегать некоторых ловушек, которые в противном случае могут заставить кого-то уйти: «Почему они построили это таким образом?»
источник
Нет, смотри Эти требования не собраны ИТ-парнями. Они собраны сотрудниками отдела кадров. И способ, которым сотрудники отдела кадров получают требования, - это выкрикивать вопросы ИТ-специалистам, когда они возвращаются к кофеварке.
Поэтому они говорят: «Что тебе нужно?» и случайный чмо, который в итоге отвечает, говорит: «Программист. Нужен опыт нескольких лет. Например, я не знаю, 4? И было бы хорошо, если бы он знал .Net». Разумный ответ.
Но это переводится как «4-летний опыт работы в .Net 4», и это .Net 4, потому что, когда вы заходите в Google .Net, первая ссылка приведет вас на страницу, посвященную .Net 4.
Существует также возможность, и я сталкивался с этим несколько раз, что у них есть особые требования к языку, потому что они хотят двигаться в этом направлении, и они думают, что будет легче, если у них будет опытный человек в штате.
источник