о программировании
Jan. 25th, 2008 01:11 pmВчера разговорился с коллегой из отделения Гугла в одной европейской стране. Он жаловался, что трудно найти инженеров - кандидатов, которые хотя бы как-то подходили, почти нет. Я спросил, в чем дело, и он объяснил, что выпускники университетов в его стране обычно считают, что писать код - ниже их достоинства, и что вообще "карьера" несовместима с такими занятиями; они хотят быть не то мелкими начальниками, не то "архитекторами". Им прямо в университете, дескать, так и говорят: получите свою степень магистра - больше вам программки писать не придется. Конечно, с работой в Гугле это все никак не сочетается.
У нас в Израиле тоже есть схожие проблемы, хоть и не в таких масштабах. Время от времени попадаются кандидаты, которые не просто не могут написать простой код на бумаге (не могут-то многие), но еще и возмущаются тем, что от них этого просят. Однажды кандидат долго расспрашивал меня, просто не желая поверить, что так может быть: "неужели меня, после PhD и постдока, посадят писать код, как какого-то мальчишку? Должны же у вас быть какие-то должности типа архитектора или системного аналитика! Нет, ну я могу писать код, но я этого не делал много лет и не в этой области лучше всего проявляются мои способности".
В Гугле все инженеры пишут программы, включая любого рода тим-лидеров, включая и ученых, нанятых на ставку "research scientist". Нет никаких "архитекторов" и "аналитиков", которые сами думают, а код за них пишут другие. Те же люди, которые придумывают дизайн какой-то системы, вместе с другими ее воплощают.
Я, кстати, не уверен, что так лучше. Мне лично такое порядок работы очень по душе, но я не готов заявить, что он объективно приводит к лучшим результатам, чем более иерархичное устройство с "архитекторами". Несоменно, есть места и есть обстоятельства, где такое устройство очень хорошо работает. Но я лично не хотел бы быть "архитектором".
У нас в Израиле тоже есть схожие проблемы, хоть и не в таких масштабах. Время от времени попадаются кандидаты, которые не просто не могут написать простой код на бумаге (не могут-то многие), но еще и возмущаются тем, что от них этого просят. Однажды кандидат долго расспрашивал меня, просто не желая поверить, что так может быть: "неужели меня, после PhD и постдока, посадят писать код, как какого-то мальчишку? Должны же у вас быть какие-то должности типа архитектора или системного аналитика! Нет, ну я могу писать код, но я этого не делал много лет и не в этой области лучше всего проявляются мои способности".
В Гугле все инженеры пишут программы, включая любого рода тим-лидеров, включая и ученых, нанятых на ставку "research scientist". Нет никаких "архитекторов" и "аналитиков", которые сами думают, а код за них пишут другие. Те же люди, которые придумывают дизайн какой-то системы, вместе с другими ее воплощают.
Я, кстати, не уверен, что так лучше. Мне лично такое порядок работы очень по душе, но я не готов заявить, что он объективно приводит к лучшим результатам, чем более иерархичное устройство с "архитекторами". Несоменно, есть места и есть обстоятельства, где такое устройство очень хорошо работает. Но я лично не хотел бы быть "архитектором".
no subject
Date: 2008-01-25 07:07 pm (UTC)Другой программист держит в голове сложнейшую систему классов view-компоненты большой системы и колбасит под нее интерфейс из сотен форм и отчетов; он в курсе всего в этой системе и может решить любой вопрос по интерфейсу; но от одной мысли про квиксорт или endianess он заболеет.
Третий программист разработал большую архитектуру системы массового обслуживания, создал ее прототип, провел все исследования и убедительно доказал что эта архитектура - правильная; он с коллегами пишет ее код, а сама система уже выросла до release candidate; продукт эксплуатируется в продакшне; но при одной мысли о GWT или реализации сортировки на низком уровне он заболеет.
Четвертый программист феноменально держит контекст состояний графического акселератора, он знает все про железо, он пишет драйвер карточки, включая низкий уровень (DMA/etc) и высокий (opengl), но при одной мысли об интерфейсе или распределенных системах он заболеет.
Так или нет?:)
no subject
Date: 2008-01-25 07:37 pm (UTC)no subject
Date: 2008-01-25 09:29 pm (UTC)Я же думаю, что хоть и не факт, что он есть, оказывается весьма полезным вести себя так, будто он существует.
no subject
Date: 2008-01-25 10:08 pm (UTC)Но. Как руководитель, я вижу, что этот сотрудник эффективно выполняет свою задачу, приносит компании пользу и есть все предпосылки что он будет развиваться и дальше. И, кстати, в этом развитии он, опять-таки, запросто может пройти мимо всех вышеописанных вопросов. И он - программист.
Выходит, базиса нет. Думаю, вести себя так, как будто он существует - нет смысл, это - иллюзия.
Как бы так сформулировать, чтоб никого не обидеть... в общем, для руководителя/овнера человек - это вот тот самый хуман ресурс, который надо использовать максимально оптимально. А в этом смысле важно только та его, хумана, специализация, в которой он эффективен. Да, это short-run подход, но практически весь вебный софт тоже не рассчитывается на life time больше трех-пяти лет.
no subject
Date: 2008-01-25 11:53 pm (UTC)Во-первых, какой вид программистов нужен фирме вообще и на конкретную должность? Я считаю, что ответ на этот вопрос менее очевиден, чем кажется: даже если данный конкретный проект не требует семи пядей во лбу, есть много других причин нанять хакера, а не code monkey. Например, если в фирме/отделе вообще нужны одаренные сотрудники (хакеры), то нужно учесть, что им гораздо больше понравится работать в среде других хакеров, чем кодообезьян. Их высокая концентрация обеспечит престиж фирмы и желание квалифицированных кадров у вас работать. Способность того или иного программиста перейти на более трудный проект в будущем тоже определяется его - не нахожу подходящего слова, скажем - развитием. Изобретательный человек часто сможет додуматься до такой возможности автоматизировать рутинную работу, о которой вы и не подозревали и тем самым сократит срок разработки. Взаимная помощь, которую хакеры оказывают друг другу вне рамок проекта, - там, где один застрянет, другой додумается мгновенно. В итоге приходим к выводу, что нанимать ограниченных людей следует либо в условиях, когда штат уже оккупирован прочным контингентом торчковолосиков (http://en.wikipedia.org/wiki/Pointy_Haired_Boss) и прочих бездарей, либо в фирме, ориентирующейся на низкое качество продукции, либо условиях острого недостатка в финансах.
Во-вторых (возвращаюсь к теме), есть ли критерий для оценки всех тех качеств, которые требуются для того, чтобы программист смог приносить все те плюшки, о которых я распространился в предыдущем параграфе? Я думаю, что он есть, и очень простой: сообразительность и любознательность в заданной области и ее основах. Вот и получается, что правильный хакер в обязательном порядке будет соображать в алгоритмике, как основе всех прикладных веток программирования, и в нескольких/многих конкретных прикладных областях.
no subject
Date: 2008-01-27 08:05 pm (UTC)К этому ещё надо умение разбираться в предметной области.
no subject
Date: 2008-01-28 03:27 pm (UTC)