1 added
1 removed
Original
2026-01-01
Modified
2026-02-26
1
<p><em>Это перевод заметки Саймона Саута, оставленной в ответ на вопрос<a>How do you know when someone is a good programmer?</a>на quora.com</em></p>
1
<p><em>Это перевод заметки Саймона Саута, оставленной в ответ на вопрос<a>How do you know when someone is a good programmer?</a>на quora.com</em></p>
2
<p>В понятие "хороший программист" (или "хороший новый работник", что не одно и то же), входит несколько показателей, поэтому первый шаг - разобраться, что нужно конкретно вам.</p>
2
<p>В понятие "хороший программист" (или "хороший новый работник", что не одно и то же), входит несколько показателей, поэтому первый шаг - разобраться, что нужно конкретно вам.</p>
3
<p>HR-менеджер в поисках "хорошего программиста" скорее всего будет интересоваться насколько он:</p>
3
<p>HR-менеджер в поисках "хорошего программиста" скорее всего будет интересоваться насколько он:</p>
4
<ul><li><strong>Способен программировать:</strong>Понимает ли технологию. Может ли писать рабочий код. Может ли решать проблемы.</li>
4
<ul><li><strong>Способен программировать:</strong>Понимает ли технологию. Может ли писать рабочий код. Может ли решать проблемы.</li>
5
<li><strong>Проявляет склонность к бизнесу:</strong>Разбирается ли он в индустрии компании. Умеет ли расставлять приоритеты и принимать решения, которые сочетаются с бизнес (не техническими) целями.</li>
5
<li><strong>Проявляет склонность к бизнесу:</strong>Разбирается ли он в индустрии компании. Умеет ли расставлять приоритеты и принимать решения, которые сочетаются с бизнес (не техническими) целями.</li>
6
<li><strong>Способен адаптироваться к коллективу:</strong>Уживается ли он с другими членами команды. Сочетаются ли его ценности с ценностями организации.</li>
6
<li><strong>Способен адаптироваться к коллективу:</strong>Уживается ли он с другими членами команды. Сочетаются ли его ценности с ценностями организации.</li>
7
<li><strong>Способен работать на кого-то:</strong>Следует ли он указаниям, без жалоб. Согласится ли он с зарплатой, которую ему предлагают платить.</li>
7
<li><strong>Способен работать на кого-то:</strong>Следует ли он указаниям, без жалоб. Согласится ли он с зарплатой, которую ему предлагают платить.</li>
8
</ul><p>... или другими ценными для его компании качествами. Я собираюсь сфокусироваться на первом критерии ("способен программировать"), поскольку это обычно сложнее всего оценить нетехническому человеку. Но не забывайте, что "способность" в данном контексте имеет множество граней.</p>
8
</ul><p>... или другими ценными для его компании качествами. Я собираюсь сфокусироваться на первом критерии ("способен программировать"), поскольку это обычно сложнее всего оценить нетехническому человеку. Но не забывайте, что "способность" в данном контексте имеет множество граней.</p>
9
<p>Я был в обеих ролях: программиста, который пытался устроиться на работу и позже, менеджера - искал программистов. Когда вы наконец понимаете, что это сложно, правильный ход - определить какой из кандидатов реально хорош, а какой будет либо тратой времени и денег, либо - что ещё хуже - потянет за собой остаток команды.</p>
9
<p>Я был в обеих ролях: программиста, который пытался устроиться на работу и позже, менеджера - искал программистов. Когда вы наконец понимаете, что это сложно, правильный ход - определить какой из кандидатов реально хорош, а какой будет либо тратой времени и денег, либо - что ещё хуже - потянет за собой остаток команды.</p>
10
<p>Существуют определённые признаки. Хорошие программисты хотят поддерживать качество своей деятельности, они целенаправленно развивают навыки, которые не только выгодны работодателям, но и подают знаки другим программистам. Если вы начнёте замечать такие знаки у кандидатов, у вас появится больше шансов выбрать кого-то, кто будет хорошим вложением на долгий срок.</p>
10
<p>Существуют определённые признаки. Хорошие программисты хотят поддерживать качество своей деятельности, они целенаправленно развивают навыки, которые не только выгодны работодателям, но и подают знаки другим программистам. Если вы начнёте замечать такие знаки у кандидатов, у вас появится больше шансов выбрать кого-то, кто будет хорошим вложением на долгий срок.</p>
11
<p>Что же вы должны искать? Из моего почти двадцатилетнего опыта в программной индустрии, я выделил пять черт, которые у меня ассоциируются с крутыми разработчиками и которые я бы рассматривал, если бы сейчас нанимал программиста.</p>
11
<p>Что же вы должны искать? Из моего почти двадцатилетнего опыта в программной индустрии, я выделил пять черт, которые у меня ассоциируются с крутыми разработчиками и которые я бы рассматривал, если бы сейчас нанимал программиста.</p>
12
<p><strong>1. Они могут программировать.</strong>Не смейтесь: мне довелось работать с несколькими людьми, получившими высшее образование, с хорошей зарплатой и должностью, но, очевидно, не способными писать даже простой код. Такой человек - мёртвый груз для команды разработчиков, и намного проще и дешевле не нанимать его, чем уволить позже.</p>
12
<p><strong>1. Они могут программировать.</strong>Не смейтесь: мне довелось работать с несколькими людьми, получившими высшее образование, с хорошей зарплатой и должностью, но, очевидно, не способными писать даже простой код. Такой человек - мёртвый груз для команды разработчиков, и намного проще и дешевле не нанимать его, чем уволить позже.</p>
13
<p>Как это уже было отмечено, нет другого способа оценить способности, кроме как дать кандидату написать программу прямо во время интервью, о чём множество организаций как-то не беспокоится. Положительный момент, особенно если у вас не технический бэкграунд: тест по программированию может быть настолько простым, насколько вас устраивает, но он всё равно будет очень эффективным. Оказывается, люди, которые не могут качественно программировать, не могут программировать вообще.</p>
13
<p>Как это уже было отмечено, нет другого способа оценить способности, кроме как дать кандидату написать программу прямо во время интервью, о чём множество организаций как-то не беспокоится. Положительный момент, особенно если у вас не технический бэкграунд: тест по программированию может быть настолько простым, насколько вас устраивает, но он всё равно будет очень эффективным. Оказывается, люди, которые не могут качественно программировать, не могут программировать вообще.</p>
14
-
<p>Тест FizzBuzz - хорошая отправная точка, н�� так как многие программисты уже знают о нём, вам лучше написать собственный тест. Senior-программист из вашей команды (или консультант, если вы все еще собираете команду) может помочь вам собрать эффективный тест и множество приемлемых решений для сравнения.</p>
14
+
<p>Тест FizzBuzz - хорошая отправная точка, но так как многие программисты уже знают о нём, вам лучше написать собственный тест. Senior-программист из вашей команды (или консультант, если вы все еще собираете команду) может помочь вам собрать эффективный тест и множество приемлемых решений для сравнения.</p>
15
<p><strong>2. Они хорошо пишут.</strong>И тут я подразумеваю умение излагать материал. На английском (или вашем родном языке), я не говорю про код. Есть как минимум две причины, почему это важно.</p>
15
<p><strong>2. Они хорошо пишут.</strong>И тут я подразумеваю умение излагать материал. На английском (или вашем родном языке), я не говорю про код. Есть как минимум две причины, почему это важно.</p>
16
<p>Первая: большая часть работы в программировании - писать для других людей: нормативные документы, комментарии в коде, документацию API, отчёты о багах, сообщения о коммите и так далее. Большая часть расходов на программный проект нарастает во время стадии обслуживания, после релиза, а один из лучших способов сократить эти расходы (до сих пор!), писать эффективную документацию перед разработкой и в течение её.</p>
16
<p>Первая: большая часть работы в программировании - писать для других людей: нормативные документы, комментарии в коде, документацию API, отчёты о багах, сообщения о коммите и так далее. Большая часть расходов на программный проект нарастает во время стадии обслуживания, после релиза, а один из лучших способов сократить эти расходы (до сих пор!), писать эффективную документацию перед разработкой и в течение её.</p>
17
<p>Вторая: хорошие программисты - люди, которые умеют справляться с задачами, а способность решать задачи, в основном, интеллектуальная функция. Вы не можете проверить интеллектуальные способности того, кого нанимаете напрямую (в США, а возможно и ещё где-то, это запрещено по закону), но вы можете проверить их способность писать, а умение излагать материал - это мощный индикатор интеллекта. Так что ищите что угодно, что писал когда-то кандидат - в блоге, на технических сайтах, которые я упомяну ниже и оцените качество, как ещё один показатель способностей этого человека к программированию.</p>
17
<p>Вторая: хорошие программисты - люди, которые умеют справляться с задачами, а способность решать задачи, в основном, интеллектуальная функция. Вы не можете проверить интеллектуальные способности того, кого нанимаете напрямую (в США, а возможно и ещё где-то, это запрещено по закону), но вы можете проверить их способность писать, а умение излагать материал - это мощный индикатор интеллекта. Так что ищите что угодно, что писал когда-то кандидат - в блоге, на технических сайтах, которые я упомяну ниже и оцените качество, как ещё один показатель способностей этого человека к программированию.</p>
18
<p><strong>3. Они вкладываются в open-source проекты.</strong>Это ярко-выраженный показатель статуса среди самих программистов. Кроме того, участие в публичных проектах проявляет сразу несколько желательных черт.</p>
18
<p><strong>3. Они вкладываются в open-source проекты.</strong>Это ярко-выраженный показатель статуса среди самих программистов. Кроме того, участие в публичных проектах проявляет сразу несколько желательных черт.</p>
19
<p>Во-первых, кандидат очевидно любит разработку софта настолько, что готов заниматься этим в свободное время, бесплатно. Это самый уникальный индикатор увлечённости.</p>
19
<p>Во-первых, кандидат очевидно любит разработку софта настолько, что готов заниматься этим в свободное время, бесплатно. Это самый уникальный индикатор увлечённости.</p>
20
<p>Во-вторых, open-source проекты часто (хотя и не всегда) - технически сложные компоненты инфраструктуры, которая, технологически выражаясь, функционирует на относительно низком уровне. Поэтому работа над ними отражает реальный масштаб способностей. Переделывать веб-страницу, чтобы она быстрее загружалась, означает знать что-то о том, как работает Web;<em>изменять Mozilla Firefox</em>так, чтобы он загружал веб-страницы быстрее, требует значительного уровня знаний о производительности Web.</p>
20
<p>Во-вторых, open-source проекты часто (хотя и не всегда) - технически сложные компоненты инфраструктуры, которая, технологически выражаясь, функционирует на относительно низком уровне. Поэтому работа над ними отражает реальный масштаб способностей. Переделывать веб-страницу, чтобы она быстрее загружалась, означает знать что-то о том, как работает Web;<em>изменять Mozilla Firefox</em>так, чтобы он загружал веб-страницы быстрее, требует значительного уровня знаний о производительности Web.</p>
21
<p>И наконец, работа в open-source показывает, что кандидат имеет как минимум элементарные организационные навыки. Такие проекты часто нуждаются в поддержке, но не обязательно принимают ее. Так что всегда есть аспект "продажи" своих изменений. Программист, который чрезмерно груб или неорганизован, или не может выражать свои мысли, окажется изолированным от этого мира.</p>
21
<p>И наконец, работа в open-source показывает, что кандидат имеет как минимум элементарные организационные навыки. Такие проекты часто нуждаются в поддержке, но не обязательно принимают ее. Так что всегда есть аспект "продажи" своих изменений. Программист, который чрезмерно груб или неорганизован, или не может выражать свои мысли, окажется изолированным от этого мира.</p>
22
<p>Хорошая, свежая стратегия по поиску отличных разработчиков - идентифицировать важные open-source проекты, используемые в вашей сфере разработки, затем искать системы отслеживания багов в проектах, репозитории кода и списки рассылок, чтобы найти людей, которые выполняли тип работ, необходимый вашей компании. Многие open-source работы размещены на Github, так что просматривая там профиль кандидата, вы можете сделать важные выводы о его участии.</p>
22
<p>Хорошая, свежая стратегия по поиску отличных разработчиков - идентифицировать важные open-source проекты, используемые в вашей сфере разработки, затем искать системы отслеживания багов в проектах, репозитории кода и списки рассылок, чтобы найти людей, которые выполняли тип работ, необходимый вашей компании. Многие open-source работы размещены на Github, так что просматривая там профиль кандидата, вы можете сделать важные выводы о его участии.</p>
23
<p><strong>4. Они выходят за рамки стандарта</strong>. Что вы подумаете о кулинарном критике, который хвастается в газете своим изысканным вкусом, узнав, что он питается только в фаст-фудах? Люди, страстно относящиеся к своей работе, мотивированы выходить за общепринятые рамки и привычное, искать что-то новое и непохожее в своей области, даже если никто кроме них не способен видеть разницу среди других вариантов.</p>
23
<p><strong>4. Они выходят за рамки стандарта</strong>. Что вы подумаете о кулинарном критике, который хвастается в газете своим изысканным вкусом, узнав, что он питается только в фаст-фудах? Люди, страстно относящиеся к своей работе, мотивированы выходить за общепринятые рамки и привычное, искать что-то новое и непохожее в своей области, даже если никто кроме них не способен видеть разницу среди других вариантов.</p>
24
<p>Именно поэтому я всегда с подозрением отношусь к "senior" разработчикам, которые всю работу делают, скажем, в С# или Java, и на их компьютере установлена только Microsoft Windows. Есть функции по-умолчанию, варианты, которые вы выбираете, если<em>ничего не делаете</em>. Тот, кто страстно относится к программированию, у кого есть мнение о том, что делает систему лучше и замотивирован прорабатывать сложную задачу, почти стопроцентно попробует "альтернативные" операционные системы вроде Linux, NetBSD или Haiku, или языки программирования вроде Eiffel, Haskell или Clojure, и на их сайте или в резюме будет этому доказательство.</p>
24
<p>Именно поэтому я всегда с подозрением отношусь к "senior" разработчикам, которые всю работу делают, скажем, в С# или Java, и на их компьютере установлена только Microsoft Windows. Есть функции по-умолчанию, варианты, которые вы выбираете, если<em>ничего не делаете</em>. Тот, кто страстно относится к программированию, у кого есть мнение о том, что делает систему лучше и замотивирован прорабатывать сложную задачу, почти стопроцентно попробует "альтернативные" операционные системы вроде Linux, NetBSD или Haiku, или языки программирования вроде Eiffel, Haskell или Clojure, и на их сайте или в резюме будет этому доказательство.</p>
25
<p>Заметьте важное следствие: вы можете запороть свою работу как HR менеджер, используя слишком чёткие критерии для поиска работника. Программисты с достаточной степенью любопытства, попробовавшие работать на Smalltalk, оказываются хорошими работниками, несмотря на то, знание какого языка программирования требуется от кандидата. Если ваш поисковый фильтр - "PHP, Apache, Oracle и Windows 10", сможете ли вы найти таких людей?</p>
25
<p>Заметьте важное следствие: вы можете запороть свою работу как HR менеджер, используя слишком чёткие критерии для поиска работника. Программисты с достаточной степенью любопытства, попробовавшие работать на Smalltalk, оказываются хорошими работниками, несмотря на то, знание какого языка программирования требуется от кандидата. Если ваш поисковый фильтр - "PHP, Apache, Oracle и Windows 10", сможете ли вы найти таких людей?</p>
26
<p><strong>5. Они делятся своими знаниями с другими.</strong>В какой-то степени это объединяет предыдущие четыре показателя. Программисты, которые способны и хотят обучать своих коллег, обладают уверенностью, что сами понимают предмет, способностью общаться эффективно и достаточно для того, чтобы ориентировать других делиться ценностями, которые они накопили. Такие люди могут действовать, как усиливающий фактор внутри организации, помогая новым членам команды выйти на требуемый уровень (включиться в работу), а всем остальным работникам компании понимать, что группа разработчиков может выполнять для них и что ей требуется в замен.</p>
26
<p><strong>5. Они делятся своими знаниями с другими.</strong>В какой-то степени это объединяет предыдущие четыре показателя. Программисты, которые способны и хотят обучать своих коллег, обладают уверенностью, что сами понимают предмет, способностью общаться эффективно и достаточно для того, чтобы ориентировать других делиться ценностями, которые они накопили. Такие люди могут действовать, как усиливающий фактор внутри организации, помогая новым членам команды выйти на требуемый уровень (включиться в работу), а всем остальным работникам компании понимать, что группа разработчиков может выполнять для них и что ей требуется в замен.</p>
27
<p>Как уже говорилось ранее, блог кандидата или его участие в open-source проектах могут дать хорошее представление об активности в этом вопросе.</p>
27
<p>Как уже говорилось ранее, блог кандидата или его участие в open-source проектах могут дать хорошее представление об активности в этом вопросе.</p>
28
<p><em>Перевод: Наталия Басс</em></p>
28
<p><em>Перевод: Наталия Басс</em></p>
29
<p><em>От редактора:</em>Мы на Хекслете часто публикуем переводы статей. Важно помнить:</p>
29
<p><em>От редактора:</em>Мы на Хекслете часто публикуем переводы статей. Важно помнить:</p>
30
<ol><li>Мнение автора статьи может отличаться от мнения администрации и сотрудников Хекслета.</li>
30
<ol><li>Мнение автора статьи может отличаться от мнения администрации и сотрудников Хекслета.</li>
31
<li>Цель перевода - показать мнение. Поэтому одна статья может визуально противоречить другой: это просто разные мнения. Мы оставляем на вашу ответственность возможность анализировать и делать выводы для себя.</li>
31
<li>Цель перевода - показать мнение. Поэтому одна статья может визуально противоречить другой: это просто разные мнения. Мы оставляем на вашу ответственность возможность анализировать и делать выводы для себя.</li>
32
</ol>
32
</ol>