Чи є "Наймання тільки найкращих" справді практичною порадою для звичайного програмування настільних додатків? [зачинено]


61

У фоновому режимі ми робимо настільні інженерні програми, з AutoCAD на зразок інтерфейсу користувача, щось подібне до етабів .

Одна річ, яка мене справді клопоче, - це чи потрібно найняти найкращих розробників? Для початку ми відчуваємо великі труднощі при підборі; Більшість резюме, які ми бачимо, або роблять прості програми CRUD, або налаштування SharePoint, які, на мою думку, насправді не передбачають багато жорстких програм. Навіть ті, кого ми закликаємо на співбесіду, більшість не може виконати послідовність Фібоначчі і простий двійковий пошук, і ми досить люб’язні, щоб дати підказки і чітко прописати проблеми, щоб кандидатам не довелося шукати словник для перевірки. що означає "послідовність Фібоначчі".

Це змусило мене задуматися: Так, нам потрібен певний рівень здатності до програмування, коли ми робимо обчислювальну геометрію / лінійні програми програмування, і нам потрібен певний рівень здатності до програмування, коли розробляємо архітектуру програмного забезпечення / або вирішуємо, який шаблон програмного забезпечення використовувати, але крім цього , багато нашого коду - це просто сантехнічний код (я думаю), який може зробити хтось, хто знайомий з програмуванням.

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

Що ти думаєш?

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


53
Стандартна відповідь: можливо, ви пропонуєте занадто низькі зарплати, а кращі чорти не зацікавлені працювати на вас? У будь-якому випадку, якщо у вас є проблеми з людьми, які не можуть виконати двійковий пошук, ніж це не проблема з відсутністю суперзірок, звичайний кодер, що працює на млині, повинен це зробити.
Quant_dev

15
Ваша
величина з

13
Вони не можуть записати послідовність Фібоначчі? Це ні в якому разі не складно ... ці люди насправді не можуть бути програмістами.
Бен Б.

6
Гравітон, все зводиться до зарплати. Якби (лише для прикладу) ви запропонували потрійну ринкову вартість зарплати, ви б мали людей, які бажають залишити свою роботу, щоб працювати за вас. Я не припускаю, що ви багато чого пропонуєте, але це ілюструє суть. Якщо ви хочете гарних резюме, то за це потрібно заплатити.
riwalk

7
@ user1525, оскільки це щось тривіальне, розробники не повинні мати проблем з його реалізацією (рекурсія або відсутність рекурсії)
Darknight

Відповіді:


110

Я пропоную вам занадто сильно читати Джоела. Те, що він написав у своєму блозі, суперечить його відгукам на цьому веб-сайті, тому я б дуже не сприймав його слова.

Що робить суперзірку і чому потрібно мати її, відкриває довгу і нікуди не обговорювану дискусію. Це елітаризм і це не практично.

Вам потрібна людина, яка:

  1. Хочеться робити те, що ви робите
  2. Був би пристрасним захопленим програмістом
  3. Мав би потенціал, щоб дізнатися, що потрібно, щоб правильно виконати свою роботу

Решта не має ніякого значення.

Ви б не повірили, скільки там молодих випускників, які нічого іншого не хочуть, окрім як зануритися у такий проект, що є сильним для CS, і ніколи не дивитись на кодування програм CRUD. Поки я був одним із них, я практично мріяв приєднатися до проекту навколо розробки компілятора, але не зміг його знайти. Чому б не дати шанс одному з них?

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


більшість резюме, які ми бачимо, або роблять прості програми CRUD, або налаштовують SharePoint

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


11
Дивовижна відповідь!

33
Так добре, але я працював із пристрасними захопленими людьми, які не мають поняття. Вони мертву вагу, і ви не хочете їх у своїй організації. Тож деякі ОСНОВНІ тести на здатність відживати справді німих чморів - це дуже гарна річ.
quick_now

3
Останній абзац описує мене до трійника.
ozz

20
Відвідано безліч "тестів на придатність", які були абсолютно марними, навіть мали явні помилки (а їх вказівка ​​змусила вас провалити тест, коли пошук і вказівка ​​на помилки - це частина нашої роботи як розробників ...).
jwenting

2
@Developer Art, можливо, тобі пощастило? Якщо ви не змогли переконати їх у неправильності запитання про співбесіду, уявіть, які неприємності у вас виникнуть на роботі.
Марк Викуп

41

Книга, яка мені дуже подобається - спочатку порушити всі правила . У ньому багато інформації про відмінності між середніми менеджерами та хорошими менеджерами. Одне з ключових висновків, про яке хороші менеджери говорили знову і знову, було підсумовано одним із них у реченні: я ніколи не чекав занадто довго, щоб знайти правильний прокат, і я ніколи не звільняв неправильний прокат досить швидко. Так, найняти довго брати на роботу, але це варто доки.

Другим моментом, який слід пам’ятати, є те, що при вимірюванні пропускної спроможності проекту спостерігається пік продуктивності для команд з 5-8 осіб. Ви не повернетесь до тієї ж продуктивності, поки не будете мати команду з понад 20 людей. Будьте дуже, дуже обережні щодо того, щоб збільшити команду за розмірами, де працює невелика динаміка команди. І якщо ви збираєтесь залишитися нижче цього порогу, тоді ви дуже хочете, щоб тих 5-8 людей були хорошими.

Обидва пункти рішуче говорять про те, щоб витримати правильний прокат.


2
+1 для цієї цитати. Це прекрасно відображає те, що я зрозумів за останні кілька років.
Кріс

Що цікаво з піком 5-8, це те, що як тільки ти набереш 10 людей, ти можеш просто розколотись :) Звичайно, роботу потрібно розколоти і, бажано, не випадково ...
Матьє М. М.

@ mattieu-m: Багато людей мають цю теорію. Якщо дві групи насправді закінчуються потребою сильно взаємодіяти, то це не спрацює. Якщо їм можуть бути по-справжньому окремі проблеми, то це добре працює.
btilly

26

Усі заявляють, що "наймають лише перших 1 перцентилей". Якби це було правдою, 100% зайнятих людей були б у "першому перцентилі" всіх людей, тож 99% усіх людей були б безробітними (у будь-якій галузі). Оскільки це, очевидно, не так, і ми всі досвідчені люди, які явно не в цій групі (чому ще взагалі ви задаєте це питання ...), ми знаємо, що це неправда.

Насправді організації, що складаються виключно з таких людей, були б дуже нестабільними. Занадто багато его, занадто багато суперечливих ідей. Це або розвалиться, як кожен робить свою справу, занепадаючи в ніколи не закінчуються теоретичні дискусії про відносні достоїнства всього, або перетворюється на постійну кричущу відповідність, коли настрої спалахують, коли потрібно приймати рішення.


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 і в реальному житті використовуємо для цього бібліотеку. Я б навіть сказав: той, хто сам пише бінсарха, не знає, як зосередитися на важливих речах.

Це набагато важливіше, якщо кандидат розумний і вписується в групу. Якщо ви хочете перевірити його талант програмування, дайте йому / їй роботу, щоб виконувати вдома. Зверніть увагу, скільки часу йому / їй потрібно, і обговоріть результати, щоб дізнатися, чи справді це кандидати.


3
Не можна очікувати, що заявник отримає бінарний пошук точно правильно, але якщо ви зможете дати заявникові деякі підказки, він або вона повинна мати можливість наблизитися. ІМО, цікавіше бачити, як люди намагаються вирішувати поставлені перед ними завдання, ніж їм мати в голові енциклопедію.
dpk

11
Я фізик, навчаючись і можу робити бінарний пошук із зав'язаними очима і однією рукою, зав'язаною за спиною. Вибачте, але не знаючи, як написати просту реалізацію бінарного пошуку, це погано. Немає іншого слова, щоб описати це, просто бідний.
Quant_dev

так, ти правий. Двійковий пошук, принаймні основна ідея, справді можна було б здійснити. Я теж можу це зробити.
Майкл

... принаймні основна ідея (хоча я не міг би виконати Фібоначчі, не спершу заглянувши, що це було). Але такий тест дає перевагу людям, які щойно відвідували заняття cs або просто підготували питання випадково. Корисніше надати кандидатам реальний приклад програмування у світі. Це показує, як вони вирішують більш складні проблеми без негайного тиску, а також може показати кандидатам, яку роботу ви очікуєте від них (виберіть хороший приклад). Набагато корисніше, ніж питання підручника ІМХО.
Майкл

2
Не знаючи визначення послідовності Фібоначчі вгорі голови, це не хвилює. Але, не маючи можливості написати програму для її обчислення після пояснення, викликає занепокоєння (навіть якщо все, що ви очікуєте від них, це обчислити підсумкові відомості у простому додатку CRUD!).
Стівен К. Сталь

13

Я думаю, що "наймати найкращих" стає занадто великим культом.

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

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

Незважаючи на це, вимагати базової компетентності та мінімальних розумних вимог не є розумним і не є чимось, з чим слід компромісувати.

Подумайте про рутинну операцію: залежно від вашої толерантності до ризику, ви, мабуть, вважаєте за краще, щоб середній лікар її виконував, а не чекав 10 років, щоб декан медичної школи встиг це зробити. Це не означає, що ви повинні дозволити впорядкованому виконувати операцію.


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

8

"Наймання найкращих", як правило, означає "наймати найкращих, які зараз доступні приблизно там, де ми є", і означає різні речі для різних компаній. Деякі хочуть кодерів Rockstar, інші хочуть ретельної інженерів програмного забезпечення, а наступні вниз хочуть досвідчених майстрів програмного забезпечення. Не існує "універсального найкращого", тому майте це на увазі, і, можливо, ваша спеціальна робота пропонує вам шукати одного типу програміста, а інтерв'ю говорить, що ви шукаєте програміста іншого типу. Раптом у вас немає сірників.

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

Деякі люди не сприймаються як зірки, але є солідними програмістами середнього рівня. Їх добре мати в команді, і це не те, що я маю на увазі з "таким собі програмістом". Останній - це той, хто ледь не уникає звільнення кожного року під час перегляду результатів.


1
Тьху, навіть термін "програміст рок-зірки" змушує мене захоплюватися.
ozz

6

Як тип менеджера, я погоджуюся наймати "перших 1%" не практично, і не потрібно. Моя порада полягає в тому, щоб найняти правильну команду для створення та обслуговування вашого продукту (можливо, це дві дуже різні команди, так як збірка проти підтримки - дуже різні за своїми потребами)

Я б настійно пропонував вам визначити людей, яких ви зараз маєте у своїй команді, які є "ключовими людьми" (наприклад, робити все, мати гарне ставлення, можна добре працювати з невизначеністю / вимогами високого рівня тощо), а потім найняти людей, яких вони мають працювали в минулому (і повага, очевидно). Це усуває багато невизначеності навколо інтерв'ю і допомагає створити команду.

Крім того, більш "більш тривалий термін" - вкладайте значні кошти в стажування. Якщо у вашій команді програмування 20 людей, отримуйте 5 стажистів на рік та надайте їм справжню роботу. Щороку повертайте одну або дві, які вам подобаються, і вводьте ще 5 випадкових змінних. Це, мабуть, найкращий спосіб зберегти свою команду наповненою хорошими програмістами. Потім ви можете найняти зовні умовно-провідницько та підняти планку для цих кандидатів.

Як уже було сказано, зверніть увагу на процес співбесіди. Запропонуйте кандидатам написати код (а ще краще, пройдіть їх вирішення проблеми "1 годину забирайте додому"), змусьте їх обідати з командою. Ознайомтеся з їх технічними та міжособистісними навичками. І ніколи не бійтеся сказати «ні», навіть коли ви відчайдушно ставите ще 20 людей на великий проект, який розпочнеться наступного тижня.


6

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

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


2
+1, я згоден. Але я думаю, що питання: чи потрібні вам "жалюгідні" (наприклад, про моральний дух команди чи що завгодно) чи команда зробить так само добре, як без них? І чи можете ви розпізнати їх на співбесіді з роботи?
nikie

10
Визначте жалюгідність. Якщо вони хороші аферисти, які виконують нудну бурхливу роботу, але не можуть придумати стрибок дива, ви все одно їх. Але якщо вони просто безнадійні і нічого не можуть зробити, то вони марно витрачають місце.
quick_now

Єдина причина збереження жалюгідних - це те, що ти не можеш когось краще замінити. Вони роблять те, що ми називаємо «ослінковою роботою»: незначні чи масові зміни, які не потребують багато роздумів.
DPD

1
Чи можна їх знайти в інтерв'ю. Так, залежно від навичок інтерв'юера. Я дозволив їм вирішити декілька програм та проблем із підручниками. Якщо вони пройдуть цей рівень, я даю їм кілька складніших проблем, щоб оцінити, чи можуть вони думати. Жалюгідні можуть бути хорошими в синтаксисі, але це лише тому, що вони вивчають це по черзі, не розуміючи цього. Вони будуть пролітати при вирішенні проблем. Деякі з них скажуть вам, що вони не можуть думати самостійно і можуть працювати лише на мові Ctrl + C, Ctrl + V
DPD

4
Ослінні трутні трутні принаймні виконують роботу. Коли вони хочуть переписати 10 років розроблених матеріалів у Haskell з парою посилань на OCaml, за 3 тижні, а все, що вони торкаються, перетворюється на cr * p. Тоді ви дійсно НЕ ХОЧЕТЕ ЇХ!
quick_now

4

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

Відповідь "чи потрібно найняти найкращих розробників?" завжди великий жир ТАК. Звичайно, насправді це не завжди можливо. Небезпечна помилка, яку я думаю, що ви робите, навіть розглядаючи це питання, - це думати, що "наше програмне забезпечення таке просте, що навіть такий хлопець може це зробити". Це неправильно.

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

Якщо ви приймаєте це і готові керувати цим, це нормально. Просто будьте готові до процесу та до результатів.


+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

Запишіть пошукові значення у працівника, який приєднається до ваших рангів.

Коли єдиною цінністю є компетенція програмування, ви швидко опинитесь в оточенні людей, які цінують саме це. Оскільки більшість справді грамотних програмістів мають більш досконалу систему цінностей, вони утримаються від приєднання до вашої команди.

Однак, швидше за все, ви шукаєте інноваційних, креативних, надійних, ерудованих, допитливих, самонавчаються, товариських, компетентних та відданих людей. Покажіть, що ваша компанія розуміє та поважає ці цінності та готові допомогти своїм працівникам розвивати їх далі.

Розумійте та сприймайте цінності своїх діючих співробітників та повідомляйте їх у своїх заявах на роботу. Хороші компанії зі стійкою системою цінностей залучають хороших працівників.


-1: якби ви сказали (а в ОП говорили) про гроші, звичайно, це має сенс. Я не розумію, як ця відповідь допомогла б йому. Ви в основному говорите, що він не вкладає достатньо маркетингу у своїй заявці, якщо я правильно зрозумів? Ну, може, це допоможе трохи, але я, як правило, не бачу дуже багато висококваліфікованих людей, які не ставлять хоч би розумну цінність на .. так ... компетентність? .. як я вже сказав, замініть "компетентність програмування" грошима, і ваша відповідь має багато сенсу, але вибачте, що я її не отримую.
n1ckp

Якщо ви не розумієте мого коментаря, можливо, ви не повинні його відмовити. У будь-якому випадку, я маю на увазі досить просто. З часом я зустрів цілком чудових програмістів. Вони знають свої мови, алгоритми, математику, фізику ... Однак те, що зробило їх чудовими в першу чергу, було зацікавленням більше, ніж просто ремеслом. Вони часто цінують цікавість як у собі, так і в оточуючих. Вони вважають незалежну ерудицію важливою рисою (або цінністю) або надихають творчих людей навколо них. Часто ці значення важливіші за їх дохід.
Діббеке

@Dibbeke: добре, я це відмовив також частково, тому що я не бачу, як це пов'язано з питанням. Хоча приємна роздратування, і я не згоден з вашим останнім коментарем (хоча ваша відповідь - це щось інше), але я все ще не розумію, як це допоможе ОП або відповісти на власне питання.
n1ckp

@ n1ck Коли ви сказали маркетинг, я почав цікавитись, чи заснований процес найму на базових значеннях насправді те саме. Я не знаю, але я усвідомлюю, що на це дуже сильно впливає побудова соціальної мережі довіри та поваги. Це, в свою чергу, впливає на репутацію вашої компанії та допомагає вам залучати тих найвищих розробників програмного забезпечення.
Діббеке

@Dibbeke: не впевнений, чи отримав я ваш останній коментар, але я думаю, що я хоч трохи погоджуюся з вами. Але знову ж таки, я не впевнений, що це корисно для ОП (хоча я більше бачу, як це пов'язано з цим питанням зараз). Що змушує мене сказати, що він ніколи нічого не говорив про свою компанію, так, так, можливо, це може бути причиною того, що його компанія має погану репутацію, але я думаю, ви
переходите

1

У будь-якій організації у вас є люди з більшим досвідом та люди з меншим рівнем. Мало того, але експерт в одній галузі може стати новаком в іншій. Звичайно, захоплений любитель може принести більше шкоди, ніж користі, кодовій базі, але саме так вони навчаються - від виправлення своїх помилок та обговорення свого досвіду з більш досвідченими колегами.

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


1

Звичайно, ви повинні прагнути найняти лише найкращих. Це автоматично не означає, що ви будете успішні в цьому - є лише стільки "найкращих", щоб обійти їх, і в битві за їх залучення будуть переможці та переможені. Значна частина цього буде виходити з вашої здатності та готовності наполегливо працювати над проблемою та наявних у вас ресурсів.

Відмовитися від того, як почати, це найвірніший спосіб програти.


1

Бінарний пошук є цікавою проблемою, оскільки добре відомо, що більшість програмістів насправді намагатиметься правильно його написати ( Bently пише про це у програмуванні Pearls ). Можливо, це не так вже й погано тестувати, поки ви не виключаєте кандидатів на основі їх неспроможності вирішити. Якщо вони вирішують це швидко і правильно, то, принаймні, це натякає на те, який тип програміста вони є, щоб ви мали більше інформації в цьому конкретному випадку.


1

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

Задайте собі це запитання (ви якось уже це робили ..): Якщо у вас інший інженер на цій же посаді протягом 5 років, чи очікуєте ви, що вона запам'ятає серію fibonanci та двійкові пошуки?

якщо відповідь "ні", то змініть свою схему інтерв'ю. Можливо, вам потрібно знати десяток алгоритмів пошуку, якщо ви хочете працювати над пошуковою програмою, наприклад google або bing. Всі інші просто використовують map.get ("");

орієнтуйте свої співбесіди на те, що потрібно на посаді, а не на доброго програміста з підручником.


1

Якщо ви дійсно не цікавитеся якістю, я б запропонував скористатись одним із веб-сайтів, що займаються аутсорсингом, і почати з невеликих проектів. Тоді ви можете заплатити їм, якщо вони зможуть виконати роботу, і мати простий спосіб застави, якщо вони не можуть.

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


0

Я повністю згоден з більшістю коментарів вище, які стосуються пристосування людини до проблеми. Зазвичай це призводить до довгострокових відносин, а не до наймання суперзірки для роботи над звичайною проблемою - це просто засмутить його швидко піти.
Сказавши це, ви завжди повинні намагатися найняти свою компанію, а не конкретну посаду. Тому що цей самий хлопець збирається рано чи пізно переходити між командами за допомогою особистих контактів тощо, і він може виявитися дедветом десь деінде. Переконайтеся, що у вашій компанії є дуже суворі внутрішні рекомендації щодо трансферу, і ви матимете чітку картину того, що ви будете робити у вашій команді протягом наступних двох років, перш ніж наймати людину, яка, на вашу думку, може не відповідати компанії (але вирішить поточну проблему ). Я бачив занадто багато випадків, коли посередність у розробниках змушувала команду працювати надто важко, щоб вмістити їх навколо.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.