Вакансии: программист, тестировщик и технический писатель

В связи с очередным расширением компании я объявляю вакансии: программист, тестировщик и технический писатель.

Мы хотим нанять программиста, который приходит на работу чтобы работать. Не чтобы читать хабрахабр, башорг или лепру, а чтобы работать. Не чтобы грезить о волшебных офисах гугла с воздушными шариками, а чтобы сцуко работать. И чтобы понимал, что поставленная задача – это 1% от того что придётся сделать на самом деле, потому что никто не будет думать за него. Придётся включать голову и думать самому. Придётся каждый день изучать продукты конкурентов и извлекать интересные идеи. Придётся продумывать сценарии использования, обеспечивать все крайние случаи и покрывать их юнит-тестами. Придётся заботиться об обратной совместимости, ограниченных ресурсах и устойчивости к нагрузке. Придётся тесно общаться с коллегами и благодарить когда они будут тыкать пальцем в косяки в твоём коде.

Continue reading “Вакансии: программист, тестировщик и технический писатель”

Средние показатели: виноват потом будет разработчик

В управлении IT-проектами часто возникает необходимость оценить срок и трудоёмкость выполнения большого количества однотипных задач. Например, требуется сверстать 30 макетов типовых сайтов. В реалиях нашей жизни оценку всегда нужно провести быстро, поэтому рассмотреть и оценить каждый макет практически невозможно. Даже когда вроде время на это есть, руководитель редко упустит шанс потом ткнуть исполнителя в его ошибку:

Ну, ты среднее время на макет оцени, и скажи нам.

Знакомая ситуация? Continue reading “Средние показатели: виноват потом будет разработчик”

Начнем закручивать гайки, или тестовое задание для завхоза

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

А вот так бы поступил опытный мастер-механик:

При этом, разумеется, затягивая их все постепенно и равномерно.

Это одно из тестовых заданий, которые я давал на собеседованиях кандидатов в завхозы в наше офисное здание на Дыбенко. Другие интересные задачки – предложение перевесить проточный водонагреватель с уровня пола на уровень “под потолок”, чтобы увеличить напор воды, или предложение покрасить внешние стены здания при нулевой температуре воздуха на улице. Взрослые мужики, вроде бы с умными глазами, соглашались на этот бред не задумываясь. Чего хотели добиться – неясно.

Кстати – недавно проезжал в  том районе: прожектора, которые я тогда монтировал на крыше своими руками, до сих пор работают. Очередной маленький результат дел моих рук продолжает служить людям.

Тестовое задание для программиста

DEPRECATED WARNING: этот пост был написан для найма программистов в веб-студию в 2010-2013 годах, а сейчас УСТАРЕЛ по многим причинам. Сейчас в мировом вебе используются новые технологии, и нужно задавать новые вопросы. Однако вы можете извлечь из текста что-то полезное.

Я не даю абстрактных, выдуманных из головы тестовых заданий. Я считаю что это абсурд – на основе быстрого решения какой-то единичной проблемы пытаться сделать выводы о том, насколько человек окажется эффективным сотрудником. Реальную эффективность можно оценить только спустя недели и месяцы реальной работы в команде. Поэтому, когда есть такая возможность, вместо тестовых заданий – я задаю самые различные вопросы, чтобы понять обладает ли кандидат широким кругозором, опытом, развитым ассоциативным и нестандартным мышлением. Я решил опубликовать эту подборку, чтобы кандидаты могли реально оценить свои силы для участия в моих проектах. Continue reading “Тестовое задание для программиста”

Программисты с потерянной обратной связью

Зачастую бывает так, что мы садимся осваивать новый программный продукт, и нас начинает мучать странное ощущение "некачественности". Я не говорю о случаях, когда явно что-то не работает – там всё понятно. Я о другом – когда это ощущение рождается где-то на задворках подсознания, и его никак не выразить словами. Когда тебя спрашивают: ну скажи ты конкретно, что тебя не устраивает? А ты и сказать не можешь – мучаешься, пытаясь выразить свою неудовлетворённость словами.

В этом посте я выдвигаю свою гипотезу о том, что же именно в таких продуктах на самом деле "сделано не так". Всё дело в том, что их создавали люди с потерянной обратной связью.

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

Весь мир насыщен обратной связью. Прокрутите в голове все события, которые происходят в вашей жизни повседневно, и вспомните определить фидбэк от каждого из них. А теперь представьте, как выглядела бы жизнь, если бы фидбэка не было. Представьте себе девушку, которая не реагирует на ваши ласки. Разберите мышку и извлеките щёлкающий механизм. Попробуйте поработать на сенсорной клавиатуре айпада вслепую. Каждый раз выходя из машины, проверяйте вручную – закрылись ли все дверцы и багажник.
Мир без обратной связи был бы адом. Именно таким адом выглядит программный продукт, который не поставляет достаточное количество обратной связи пользователю. Что происходит прямо сейчас? Я кликнул – и что изменилось? Начался ли фоновый процесс? Или уже закончился? А если он идёт, то почему так долго? А успешно ли он завершился? Ждёт ли от меня система каких-то действий, или это я должен подождать? Можно ли закрывать эту страницу – сохранятся ли данные?

Причины создания таких программных продуктов лежат глубоко в области психологии. Большинство "компьютерных гиков" настолько "продвинуты" в области разработки и программирования именно потому, что у них нарушена коммуникабельность и связь с внешним миром. Они играют в вов и линейку, сидят в социальных сетях и на профессиональных форумах, занимают всё свободное время чтением документации, отрицая реальный мир и создавая вокруг себя воображаемый. Они реализуют себя в жизни в общении с компьютерами, потому что общество их отторгает, а компьютеры бессловесны и принимают их "как есть". Даже само понятие "компьютерной грамотности" становится для них критерием для деления людей на достойных и недостойных. Возможно, в глубине души они уверены, что Ньютон, Галилей, Коперник и Чарльз Дарвин тоже были программистами.

С теми кто просто замкнут по своей природе – ещё можно найти общий язык и помочь человеку осознать, что никакая программа не ценна сама по себе. Ценной её делает полезность для потребителя. Но если человеку впору ставить диагноз "аутизм" или "социопатия" – то в результате становится страшно. Страшно от осознания, что ты сидишь перед экраном и пользуешься продуктом, но тебя как-бы нет. Для автора ты – пустое место, робот с запрограммироваными use-кейсами и встроенным аппаратом для чтения документации. Только так автор может допустить тебя к использованию продукта, но если бы тебя вообще не было – вот это был бы идеал.

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

Материалы для самостоятельного изучения:
Рекомендации компании Apple
Рекомендации по книге Джефа Раскина "Интерфейс"
Не позволяйте знаниям ослепить себя