Является ли «Найм только лучших» действительно практическим советом для нормального программирования приложений для настольных компьютеров? [закрыто]

61

Для фона мы создаем приложения для настольных систем с интерфейсом, похожим на AutoCAD, похожим на etabs .

Меня действительно беспокоит то, что нужно нанимать лучших разработчиков? Для начала, мы испытываем большие трудности при наборе персонала; большинство резюме, которое мы видим, или делают простые приложения CRUD, или настройку SharePoint, которая, я не думаю, действительно включает в себя много жесткого программирования. Даже те, кого мы зовем на собеседование, большинство не могут выполнить последовательность Фибоначчи и простой двоичный поиск, и мы достаточно любезны, чтобы выдавать подсказки и четко излагать проблемы, чтобы кандидатам не приходилось искать словарь для проверки что означает «последовательность Фибоначчи».

Это заставило меня задуматься: да, нам нужен какой-то уровень навыков программирования, когда мы занимаемся вычислительной геометрией / линейным программированием, и нам нужен определенный уровень навыков программирования при разработке архитектуры программного обеспечения / или принятии решения о том, какой программный шаблон использовать, но помимо этого Большая часть нашего кода - это всего лишь верстка (я думаю), которую может сделать кто-то, кто знаком с программированием.

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

Как вы думаете?

Редактировать: Вам не нужно переписывать целые библиотеки вычислительной геометрии / линейного программирования; все, что вам нужно сделать в том, что касается моего приложения, - это уметь уметь решать возникающие проблемы в соответствующих терминах вычислительного геометрического / линейного программирования и знать, когда и как использовать существующие библиотеки. Так что это не так сложно, как кажется.

Graviton
источник
53
Стандартный ответ: может быть, вы предлагаете слишком низкую зарплату, а лучшие разработчики не заинтересованы работать на вас? В любом случае, если у вас есть проблемы с людьми, которые не могут выполнить бинарный поиск, то это не проблема с отсутствием суперзвезд, обычный кодировщик, выполняющий заурядный ход, должен это делать.
Quant_dev
15
Ваша заглавная
буква
13
Они не могут написать последовательность Фибоначчи? Это совсем не сложно ... эти люди не могут быть программистами.
Бен Б.
6
Гравитон, все сводится к зарплате. Если (например) вы предложили тройную рыночную стоимость за зарплату, у вас будут люди, желающие уйти с работы, чтобы они работали на вас. Я не предлагаю, чтобы вы предлагали ЭТО много, но это иллюстрирует суть. Если вы хотите хорошее резюме, то вам нужно заплатить за это.
riwalk
7
@ user1525, поскольку это что-то тривиальное, у разработчиков обычно не должно быть проблем с его реализацией (рекурсия или отсутствие рекурсии)
Darknight

Ответы:

110

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

То, что делает суперзвезду и зачем ее иметь, открывает долгую и бесполезную дискуссию. Это элитарность и это не практично.

Вам нужен человек, который:

  1. Хотел бы делать то, что вы делаете
  2. Был бы страстный увлеченный программист
  3. Будет иметь потенциал, чтобы узнать, что нужно, чтобы сделать вашу работу правильно

Остальное не имеет значения.

Вы не поверите, сколько молодых выпускников, которые хотят ничего другого, кроме как погрузиться в этот вид CS-сильного проекта и никогда не смотрят на кодирование CRUD-приложений. Некоторое время назад я был одним из них, я практически мечтал присоединиться к проекту, связанному с разработкой компилятора, но не смог его найти. Почему бы не дать шанс одному из них?

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


большинство резюме, которые мы видим, либо делают простые приложения CRUD, либо настраивают SharePoint

Чего ожидать, если большинство рабочих мест требуют именно этого? Люди, возможно, изучали CS в университете и даже были очень хороши в этом, но вы не можете ожидать, что они запомнят это, если они никогда не использовали это в практическом программировании за 10 лет. Очевидно, что никто не собирается читать старые книги по CS каждый год, чтобы держать их свежими, если эти знания нигде не используются.

оборота user8685
источник
11
Удивительный ответ!
33
Да, хорошо, но я работал со страстными энтузиастами, которые не понимают. Они являются мертвым грузом, и вы не хотите их в вашей организации. Так что некоторые тесты на базовые способности, чтобы отсеять по-настоящему глупых чепух, - это очень хорошая вещь.
quick_now
3
Последний абзац описывает меня до тройника.
Оз
20
Видел много «тестов на пригодность», которые были совершенно бесполезны, даже имели явные ошибки (и их указание приводило к провалу теста, когда обнаружение и указание на ошибки является частью нашей работы как разработчиков ...).
jwenting
2
@ Девелопер Арт, может, тебе повезло? Если вы не можете убедить их в неправильности вопроса об интервью, представьте, какие проблемы у вас возникнут на работе.
Марк Рэнсом
41

Книга, которая мне действительно нравится, это « Сначала нарушай все правила» . В нем много информации о различиях между средними менеджерами и хорошими менеджерами. Одна из ключевых идей, которую хорошие менеджеры повторяли снова и снова, была подытожена одним из них в предложении: я никогда не ждал слишком долго, чтобы найти правильный найм, и я никогда не увольнял неправильный найм достаточно быстро. Да, это неприятно брать много времени на работу, но это того стоит.

Второй момент, который вы должны иметь в виду, заключается в том, что при измерении пропускной способности проекта наблюдается пик производительности для групп из 5-8 человек. Вы не вернетесь к той же производительности, пока у вас не будет команда из более чем 20 человек. Будьте очень, очень осторожны в том, чтобы вырастить команду за пределы размера, в котором работает динамика небольшой команды. И если вы собираетесь остаться ниже этого порога, то вы действительно хотите, чтобы эти 5-8 человек были хорошими.

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

btilly
источник
2
+1 за эту цитату. Это прекрасно отражает то, что я осознал за последние несколько лет.
Крис
Что интересно с пиком 5-8, так это то, что как только вы наберете 10 человек, вы можете просто разделить :) Конечно, работу тоже нужно разделить, и желательно не случайно ...
Матье М.
@ mattieu-m: у многих людей есть эта теория. Если две группы на самом деле нуждаются в интенсивном взаимодействии, то это не сработает. Если им можно дать действительно отдельные проблемы, то это работает хорошо.
btilly
26

Все утверждают, что «нанимают только 1 верхний процентиль». Если бы это было правдой, все 100% работающих людей были бы в «верхнем 1-м процентиле» всех людей, поэтому 99% всех людей были бы безработными (в любой данной области). Поскольку это явно не так, и мы все опытные люди, которые явно не входят в эту группу (почему вы вообще задаете этот вопрос ...), мы знаем, что это не так.

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

jwenting
источник
13
Проблема в том, что если вы нанимаете только 1% лучших кандидатов, которые обращаются к вам, это не означает, что вы нанимаете 1% лучших разработчиков. 8 ') Что касается * супергероев , то они часто считаются проблемой для всей команды. Один человек, работающий на 200%, но сокращающий 5 человек на 50%, не является чистым выигрышем.
Марк Бут
2
+1: по статистике, большинство людей находятся в пределах нескольких процентных пунктов от среднего. Любой, кто не ценит это, живет в мире мечты. И вы абсолютно правы: люди, которые слишком далеки от среднего, являются подрывными, независимо от того, выше ли они или ниже среднего по способностям.
Satanicpuppy
5
@Satanicpuppy: По статистике, при нормальном распределении около двух третей людей находятся в пределах одного стандартного отклонения от среднего, а около 98% находятся в пределах двух стандартных отклонений. Это ничего не говорит о том, что такое стандартное отклонение, или о том, является ли любое произвольное распределение нормальным. Способность программистов к программированию определенно искажена, и даже может быть правильным хвостом нормального распределения.
Дэвид Торнли
11
Основная причина, по которой талант программистов среди программистов может быть искажен и / или правый хвост нормального распределения, заключается в том, что талант программистов у людей обычно распределяется. Подвыборка людей, которые становятся программистами, является необъективной выборкой этого распределения; то есть люди, которые в среднем или хуже в программировании, редко становятся программистами. Это может привести к тому, что «среднестатистический» программист будет иметь талант выше среднего по отношению к населению в целом, и это также может сделать талант программиста по распределению похожим на правый хвост нормального распределения.
Майкл МакГоуэн
2
@ david: "Никто не может быть настолько ниже среднего"? Я бы хотел работать там, где ты работаешь.
Satanicpuppy
25

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

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

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

Дэвид Торнли
источник
7
Потому что отдел кадров очень некомпетентен в отборе кандидатов на софт. Требования: 10 лет в кофейном сценарии, 40 лет программирования на PHP, образование: BS / BA
Incognito
1
@ user1525: Это вполне может быть некомпетентность HR, но важно выяснить, почему и как это исправить (или обнаружить, что это невозможно исправить, поэтому ясно, что пришло время прыгнуть с корабля). Я бы не стал спешить с выводами. Ваш ответ предлагает другой подход: попросите хороших людей представить резюме и посмотреть, что HR делает с ними.
Дэвид Торнли
18

«большинство не может сделать последовательность Фибоначчи и простой двоичный поиск»

Ваши критерии, безусловно, неверны. В моей группе мы все физики или инженеры. Бьюсь об заклад, никто не мог делать бинарный поиск, потому что мы не посещали курсы CS и в реальной жизни мы используем библиотеку для этого. Я бы даже сказал: тот, кто пишет binsearch сам, не знает, как сосредоточиться на важных вещах.

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

Майкл
источник
3
Можно не ожидать, что заявитель получит точный бинарный поиск, но если вы можете дать заявителю некоторые подсказки, он или она должны быть в состоянии приблизиться. ИМО, интереснее увидеть, как люди пытаются решать поставленные перед ними задачи, чем иметь энциклопедию в голове.
дпк
11
Я физик по образованию, и я могу выполнять бинарный поиск с завязанными глазами и с одной рукой, связанной за моей спиной. Извините, но не зная, как написать простую реализацию двоичного поиска ... плохо. Нет другого слова, чтобы описать это, просто бедный.
quant_dev
да ты прав. Двоичный поиск, по крайней мере, основная идея, может быть действительно сделано. Я тоже могу это сделать.
майкл
... по крайней мере, основная идея (хотя я не мог сделать Фибоначчи, не посмотрев сначала, что это было). Но такой тест дает преимущество тем, кто просто посещал занятия по CS или просто готовил вопросы случайно. Более полезно привести кандидатов в пример программирования на практике. Он показывает, как они решают более сложные проблемы без немедленного давления, а также может показать кандидатам, какую работу вы ожидаете от них (выберите хороший пример). Гораздо полезнее вопросов учебника ИМХО.
Майкл
2
Не зная определения последовательности Фибоначчи на макушке, это не беспокоит. НО, неспособность написать программу для ее вычисления после того, как она была объяснена, вызывает беспокойство (даже если все, что вы ожидаете от них, это вычислить промежуточные итоги в простом приложении CRUD!).
Стивен С. Сталь
13

Я думаю, что «найм лучших» становится слишком культовым.

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

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

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

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

Uri
источник
Не для того, чтобы придираться… но «средний» врач, который провел сотни или тысячи операций такого типа, может быть предпочтительнее декана медицинской школы, у которого может быть больше знаний, но нет опыта
JoelFan
8

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

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

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

Тимо Гойш
источник
1
тьфу, даже сам термин "программист рок-звезды" заставляет меня рвать.
Оз
6

Как менеджер, я согласен, что нанимать «лучших 1%» не практично и не нужно. Я бы посоветовал нанять подходящую команду для сборки и поддержки вашего продукта (это могут быть две очень разные команды, так как сборка и сопровождение сильно различаются по своим потребностям)

Я настоятельно рекомендую вам определить людей, которых у вас в настоящее время есть в вашей команде, которые являются «ключевыми людьми» (например, добиться цели, иметь хорошие отношения, хорошо работать с неопределенностью / требованиями высокого уровня и т. Д.), А затем нанять людей, которых у них есть. работал в прошлом (и уважение, очевидно). Это устраняет большую неопределенность в процессе собеседования и помогает объединить команду.

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

Как уже упоминалось, обратите внимание на процесс собеседования. Заставьте кандидатов написать код (или, лучше, рассмотрите их решение проблемы «1 час домой»), заставьте их пообедать с командой. Познакомьтесь с их техническими и межличностными навыками. И никогда не бойтесь сказать «нет», даже если вы отчаянно нуждаетесь в еще 20 людях для большого проекта, который начнется на следующей неделе.

Аль Биглан
источник
6

По моему опыту принцип Паретто относится и к программированию: 80% работы выполняется 20% разработчиков и наоборот. ОК, цифры могут быть преувеличены. В действительности у вас будет примерно 20% сотрудников, выполняющих 50% работы (под работой я подразумеваю хорошую работу, а не просто строки кода). Это на самом деле больше похоже на кривую колокола. Таким образом, в команде из 10 человек будет 1 герой, 2 отличных парня, 4 средних и 2-3 жалких.

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

Burhan Ali
источник
2
+1, согласен. Но я думаю, что вопрос заключается в следующем: вам нужны «жалкие» (например, для морального духа команды или чего-то еще), или команда без них справится? И можете ли вы узнать их на собеседовании?
nikie
10
Определить жалкий. Если они хорошие тучники, которые делают скучную ворчливую работу, но не могут совершить этот прыжок, вы все равно их. Но если они просто безнадежны и не могут ничего сделать, тогда они - пустая трата пространства.
quick_now
Единственная причина для того, чтобы держать жалких, состоит в том, что вы не можете заставить кого-то лучше заменить их. Они делают то, что мы называем «работой осла»: незначительные или масштабные изменения, которые не требуют особого внимания.
DPD
1
Можно ли их найти в интервью. Да, в зависимости от навыков интервьюера. Я позволил им решить несколько программ и проблем. Если они пройдут этот уровень, я дам им несколько более сложных проблем, чтобы судить, могут ли они думать. Патетические могут быть хороши в синтаксисе, но это только потому, что они изучают его наизусть, не понимая его по-настоящему. Они потерпят неудачу в решении проблем. Некоторые скажут вам, что они не могут думать самостоятельно и могут работать только на языках Ctrl + C, Ctrl + V
DPD
4
Дроны работают на дронах, по крайней мере, работают. Это когда они хотят переписать 10 лет разработанного материала на Haskell с парой ссылок на OCaml, через 3 недели, и все остальное, к чему они прикасаются, превращается в cr * p. Тогда вы действительно не хотите их!
quick_now
4

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

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

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

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

hbatista
источник
+1. Да. Идея, что вы можете нанять парней, которые не могут даже написать бинарный поиск с помощью и заставить их быть чем-то иным, кроме чистого мертвого веса - возможно, чистых негативных производителей - совершенно нелепа.
Том Андерсон
3

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

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

Итак, вы собираетесь снизить свои стандарты. Это круто, возможно, вы передумаете после того, как наймете действительно паршивого человека. Тот, который ответит на все ваши вопросы CS безупречно, но кто действительно не может написать одну строку производственного кода. Удачи с этим :)

Павел Дида
источник
3

Давайте сделаем шаг назад.

Что мы пытаемся сделать? Написать программное обеспечение.

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

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

Похоже, ты просто не хочешь этого чертова Арнольда? Не могли бы вы? Я устал от глючного кода, все занимает много времени, и эти новые парни, с которыми я беру интервью, говорят мне, что мне нужно все переписать!

Правильно, так что вы просите чертов Арнольд? Создайте веб-сайт на PHP, напишите немного jQuery, сделайте так, чтобы PHP выполнял некоторые базовые CRUD с MSSQL, и измените цвета фона.

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

Итак, тебе не нужно лучшее? Да, мне просто нужен кто-то с навыком, который соответствует моим целям.

Ой. Да уж.

Инкогнито
источник
@ user1525, это не приложение CRUD. Это инженерное программное обеспечение.
Гравитон
Не всегда. Многие работы там не требуют каких-либо знаний о структурах данных, алгоритмах или вычислительной сложности. Конечно, они не рабочие места в поиске Google, но есть огромный спрос на это. Просто посмотрите на большинство сообщений на досках объявлений: «Мне нужен плагин jquery» или «Дайте мне приложение для iphone, похожее на эти PSD». Люди хотят лучшего или самого дешевого.
Инкогнито
3

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

Плохой прокат

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

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

Фил Миллер
источник
вам не нужно переписывать целые библиотеки вычислительной геометрии / линейного программирования; все, что вам нужно сделать в том, что касается моего приложения, - это уметь уметь решать возникающие проблемы в соответствующих терминах вычислительного геометрического / линейного программирования и знать, когда и как использовать существующие библиотеки.
Гравитон
2

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

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

Торстен Мюллер
источник
2

Запишите значения, которые вы ищете в сотрудника, который вступит в ваши ряды.

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

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

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

Dibbeke
источник
-1: если бы вы сказали (а ОП говорили) о деньгах, конечно, это имело бы смысл. Я не понимаю, как этот ответ поможет ему, хотя. Вы в основном говорите, что он не вкладывает достаточно маркетинга в свое приложение, если я правильно понял? Ну, может, это немного помогло бы, но я обычно не вижу много высококвалифицированных людей, не придающих хотя бы разумную ценность ... духу ... компетентности? ... как я уже сказал, замените "навыки программирования" деньгами, и ваш ответ имеет большой смысл, но извините, я не понимаю его.
n1ckp
Если вы не понимаете мой комментарий, возможно, вам не следует изменять его. В любом случае, то, что я имею в виду, довольно просто. Со временем я встретил довольно много отличных программистов. Они знают свои языки, алгоритмы, математику, физику ... Тем не менее, то, что сделало их в первую очередь великими, это интерес не только к ремеслу. Они часто ценят любопытство в себе и в других. Они считают независимую эрудицию важной чертой (или ценностью) или вдохновляются творческими людьми вокруг них. Часто эти ценности важнее, чем их доход.
Диббеке
@Dibbeke: хорошо, я изменил это также частично, потому что я не вижу, как это связано с вопросом. Хорошая напыщенная речь, и я не согласен с вашим последним комментарием (хотя ваш ответ - что-то другое), но я все еще не понимаю, как это поможет ОП или ответит на фактический вопрос.
n1ckp
@ n1ck Когда вы говорили о маркетинге, я начал задумываться, действительно ли процесс найма на основе базовых ценностей одинаков. Я не знаю, но я признаю, что создание социальной сети доверия и уважения сильно зависит от этого. Это, в свою очередь, влияет на репутацию вашей компании и помогает вам привлечь тех первоклассных разработчиков программного обеспечения.
Диббеке
@Dibbeke: не уверен, что получил ваш последний комментарий, но думаю, что согласен хотя бы немного с вами. Но опять же, я не уверен, что это полезно для ФП (хотя я вижу больше, как это связано с вопросом сейчас). Что заставляет меня говорить, что он никогда не говорил ничего о своей компании, так что да, может быть, это может быть причиной того, что его компания имеет плохую репутацию, но я думаю, что вы
спешите
1

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

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

Марк Бут
источник
1

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

Сдача перед тем, как начать, самый верный способ проиграть.

Марк Рэнсом
источник
1

Бинарный поиск - интересная проблема, потому что хорошо известно, что большинство программистов на самом деле изо всех сил пытаются написать это правильно ( Bently пишет об этом в Programming Pearls ). Возможно, это не так уж плохо для проверки, если вы не исключаете кандидатов на основании их неспособности решить это. Если они решают это быстро и правильно, то по крайней мере это намекает на то, какой программист они, так что у вас есть больше информации в этом конкретном случае.

скоро
источник
1

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

Задайте себе этот вопрос (вы вроде как уже ..): Если у вас есть другой инженер на той же должности в течение 5 лет, ожидаете ли вы, что она вспомнит ряды Фибонанчи и бинарные поиски?

если ответ «нет», измените схему собеседования. Может быть, вам нужно знать дюжину алгоритмов поиска, если вы хотите работать с таким поисковым приложением, как Google или Bing. Все остальные просто используют map.get ("");

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

вот здорово
источник
1

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

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

Брайан Слесинский
источник
0

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

Субу Шанкара Субраманян
источник