beldmit: (Default)
[personal profile] beldmit
[livejournal.com profile] arilou вчера поднял вопрос о том, насколько разумно требование предоставлять образец кода на собеседованиях. Да, значительная часть кода пишется под работодателей, которые от предоставления такового будут не в восторге.

[livejournal.com profile] besm6 и [livejournal.com profile] vitus_wagner тут же предложили радостный выход - предоставлять код из OpenSource проектов, который туда попал. Да, все противоречия таким образом вполне снимаются. Правда, оба они не остановились на достигнутом, заявив, что программист, у которого нет кода в OpenSource-проектах - не настоящий, но эту реплику я склонен воспринимать скорее как признак идеологической позиции.

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

Тезис второй.
Не все OpenSource-проекты одинаково полезны. При попытках отправить патч в различные я наблюдал 4 позиции

1. Принять патч после переписки. Самая простая и понятная.
2. Принять патч к сведению, через какое-то время выпустить новую версию, в котором интерфейс, предложенный в патче, будет переименован нафиг.
3. Не принимать патч, но реализовать свой, дающий тот же функционал. Патч в этом случае используется как ТЗ/основа для ТЗ.
4. Разработчик в гибернации, на патчи не реагирует.

Желающие сами могут сделать вывод о продуктивности посылки патча.

Тезис третий, главный.
От программиста на работе требуется писать поддерживаемый код. Потому что времена солистов, к счастью, прошли. Поэтому вопросы на собеседованиях "Что означает это выражение - переменную или функцию" для меня имеют один однозначный ответ: "Автора этой строчки надо уволить нафиг". Да, и к большинству нестандартных и к половине высокоуровневых идиом это тоже относится - код, написанный человеком, перечитавшим Александреску, в отличие от кода человека, остановившегося на Саттере или Мейерсе, скорее всего к поддержке непригоден.

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

Date: 2008-09-12 05:50 am (UTC)
From: [identity profile] maksa.livejournal.com
Твоя позиция мне ближе.

Date: 2008-09-12 06:22 am (UTC)
vitus_wagner: My photo 2005 (Default)
From: [personal profile] vitus_wagner
Интересно, Дим, что ты сейчас работаешь руководителем проекта, и рассматириваешь процесс скорее с точки зрения нанимаемого, а мы с Раном работаем программистами, и рассматриваем процесс скорее с точки зрения нанимателя. Ну и с теорией вероятности у тебя некоторые сложности. Впрочем, ты за время работы в Криптокоме по-моему ни разу внутрь криптоалгоритмов не лазил. И образование у тебя не естественно-научное, поэтому со статистикой там было плохо.

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

Date: 2008-09-12 07:09 am (UTC)
From: [identity profile] yakov-sirotkin.livejournal.com
Java гораздо проще C/C++, поэтому читать Саттера и Майерса - это уже ошибка.

Если код написан на Java, то с вероятностью примерно 100 процентов я смогу в нём разобраться и причесать, не думаю что найдётся много людей, которые понимают любой C++ код.

У нас люди пишут код на собеседовании. Лично я известный фанат TopCoder.

Date: 2008-09-12 08:59 am (UTC)
From: [identity profile] http://users.livejournal.com/_ltt_/
Я вот код когда спрашивал, а когда и нет. Если спрашивал — то смотрел не на язык и использование его "хитрых мест" (как раз в озвученной тобой концепции "поддерживаемого промышленного кода" чем меньше языковой специфики задействовано, тем лучше), а на "общие места" — аккуратность, наличие хоть какой-то системы в именовании переменных / функций / классов / методов, и т.д. и т.п.

Сейчас, правда, я код с людей не прошу, а задаю две простые задачки. Одна алгоритмическая, на сообразительность; вторая про SQL — тоже на живость ума и владение чем-то большим, чем простым select * from t where a = 5... Обе увидены и "спёрты" из ЖЖ двух разных деятелей ;)

Так вот, вчера из 4 кандидатов двое обе эти задачки успешно отщёлкнули и стали потенциальными сотрудниками.

А на их код я посмотрю потом. Я ещё даже толком не смотрел код системы, которую мне надо принять от текущих разработчиков :)

Date: 2008-09-13 11:06 am (UTC)
From: [identity profile] dimrub.livejournal.com
Все верно. Кроме того, если я позиционирую себя, как программиста на C++, а опенсорсовские проекты у меня на питоне (причем совсем в другой области), то давать их на интервью не вижу смысла.

Profile

beldmit: (Default)
Dmitry Belyavskiy

December 2025

S M T W T F S
 123456
78910111213
14151617181920
2122 2324252627
28 29 3031   

Most Popular Tags

Style Credit

Expand Cut Tags

No cut tags
Page generated Feb. 10th, 2026 03:13 am
Powered by Dreamwidth Studios