avva: (Default)
[personal profile] avva
Вчера разговорился с коллегой из отделения Гугла в одной европейской стране. Он жаловался, что трудно найти инженеров - кандидатов, которые хотя бы как-то подходили, почти нет. Я спросил, в чем дело, и он объяснил, что выпускники университетов в его стране обычно считают, что писать код - ниже их достоинства, и что вообще "карьера" несовместима с такими занятиями; они хотят быть не то мелкими начальниками, не то "архитекторами". Им прямо в университете, дескать, так и говорят: получите свою степень магистра - больше вам программки писать не придется. Конечно, с работой в Гугле это все никак не сочетается.

У нас в Израиле тоже есть схожие проблемы, хоть и не в таких масштабах. Время от времени попадаются кандидаты, которые не просто не могут написать простой код на бумаге (не могут-то многие), но еще и возмущаются тем, что от них этого просят. Однажды кандидат долго расспрашивал меня, просто не желая поверить, что так может быть: "неужели меня, после PhD и постдока, посадят писать код, как какого-то мальчишку? Должны же у вас быть какие-то должности типа архитектора или системного аналитика! Нет, ну я могу писать код, но я этого не делал много лет и не в этой области лучше всего проявляются мои способности".

В Гугле все инженеры пишут программы, включая любого рода тим-лидеров, включая и ученых, нанятых на ставку "research scientist". Нет никаких "архитекторов" и "аналитиков", которые сами думают, а код за них пишут другие. Те же люди, которые придумывают дизайн какой-то системы, вместе с другими ее воплощают.

Я, кстати, не уверен, что так лучше. Мне лично такое порядок работы очень по душе, но я не готов заявить, что он объективно приводит к лучшим результатам, чем более иерархичное устройство с "архитекторами". Несоменно, есть места и есть обстоятельства, где такое устройство очень хорошо работает. Но я лично не хотел бы быть "архитектором".

Date: 2008-01-25 07:07 pm (UTC)
From: [identity profile] egorfine.livejournal.com
Один программист изобретет седьмой способ посчитать биты в слове или нараз напишет новый скедулер для ядра, но от одной мысли про GWT он заболеет.

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

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

Четвертый программист феноменально держит контекст состояний графического акселератора, он знает все про железо, он пишет драйвер карточки, включая низкий уровень (DMA/etc) и высокий (opengl), но при одной мысли об интерфейсе или распределенных системах он заболеет.

Так или нет?:)

Date: 2008-01-25 07:37 pm (UTC)

Date: 2008-01-25 09:29 pm (UTC)
From: [identity profile] avva.livejournal.com
Т.е. вы считаете, что нет ни малейшего общего базиса, знания которого можно было бы ожидать от хорошего программиста.

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

Date: 2008-01-25 10:08 pm (UTC)
From: [identity profile] egorfine.livejournal.com
Я считаю что программирование больше не является неделимым куском мяса. Если честно, то меня самого коробит от вида мальчишки: он понятия не имеет что такое процесс, форк, бинарник, как PHP запускается, что такое веб-сервер и тп., но при этом он кропотливо и усидчиво колбасит интерфейс немаленькой системы. Вдумчиво валидирует все поля формы, криптует нетривиальный XSLT, отслеживает связи между скринами и т.п. Я просто не могу понять, как такое возможно. Называю его "программист", но аж неуютно как-то.

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

Выходит, базиса нет. Думаю, вести себя так, как будто он существует - нет смысл, это - иллюзия.

Как бы так сформулировать, чтоб никого не обидеть... в общем, для руководителя/овнера человек - это вот тот самый хуман ресурс, который надо использовать максимально оптимально. А в этом смысле важно только та его, хумана, специализация, в которой он эффективен. Да, это short-run подход, но практически весь вебный софт тоже не рассчитывается на life time больше трех-пяти лет.

Date: 2008-01-25 11:53 pm (UTC)
From: [identity profile] neatfires.livejournal.com
Программирование может быть интеллектуальной профессией, а может быть конвейерным трудом. Чтобы решить, как отбирать людей, нужно ответить на два вопроса.

Во-первых, какой вид программистов нужен фирме вообще и на конкретную должность? Я считаю, что ответ на этот вопрос менее очевиден, чем кажется: даже если данный конкретный проект не требует семи пядей во лбу, есть много других причин нанять хакера, а не code monkey. Например, если в фирме/отделе вообще нужны одаренные сотрудники (хакеры), то нужно учесть, что им гораздо больше понравится работать в среде других хакеров, чем кодообезьян. Их высокая концентрация обеспечит престиж фирмы и желание квалифицированных кадров у вас работать. Способность того или иного программиста перейти на более трудный проект в будущем тоже определяется его - не нахожу подходящего слова, скажем - развитием. Изобретательный человек часто сможет додуматься до такой возможности автоматизировать рутинную работу, о которой вы и не подозревали и тем самым сократит срок разработки. Взаимная помощь, которую хакеры оказывают друг другу вне рамок проекта, - там, где один застрянет, другой додумается мгновенно. В итоге приходим к выводу, что нанимать ограниченных людей следует либо в условиях, когда штат уже оккупирован прочным контингентом торчковолосиков (http://en.wikipedia.org/wiki/Pointy_Haired_Boss) и прочих бездарей, либо в фирме, ориентирующейся на низкое качество продукции, либо условиях острого недостатка в финансах.

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

Date: 2008-01-27 08:05 pm (UTC)
nine_k: A stream of colors expanding from brain (Default)
From: [personal profile] nine_k
Imho, таки есть общий мыслительный базис. Скажем так: умение держать в голове некую модель взаимодействующих процессов и уметь перекладывать её на искусственные языки. Плюс способность и желание переходить ко всё новым моделям и языкам. Умение и желание всю дорогу взаимодействовать с кучей сложных машин разного уровня абстракции.

К этому ещё надо умение разбираться в предметной области.

Date: 2008-01-28 03:27 pm (UTC)

December 2025

S M T W T F S
  123 4 56
78 9 10 11 1213
1415 1617181920
21 22 23 24 2526 27
28293031   

Most Popular Tags

Style Credit

Expand Cut Tags

No cut tags
Page generated Dec. 28th, 2025 05:33 pm
Powered by Dreamwidth Studios