Однажды мы допустили ошибку, которую заметили только спустя пару месяцев. Перед программистом в нашей команде стояла задача: проанализировать настройки сервера (php.ini) и сделать определённые выводы о совместимости с нашим софтом. “Сложность” была в том, что сделать это нужно было внутри php-скрипта, то есть без возможности куда-то положить phpinfo. Шутки ради в тот же день я поручил эту задачу в качестве первого тестового задания стажёру, которого занесла к нам учебная практика. Стажёр промучался с задачей четыре часа, затем исчез и больше никогда не появлялся в нашей жизни. Возможно, он решил навсегда завязать с программированием. И вот тогда я забеспокоился всерьёз.
Tag: разработка
Тестовое задание для программиста
DEPRECATED WARNING: этот пост был написан для найма программистов в веб-студию в 2010-2013 годах, а сейчас УСТАРЕЛ по многим причинам. Сейчас в мировом вебе используются новые технологии, и нужно задавать новые вопросы. Однако вы можете извлечь из текста что-то полезное.
Я не даю абстрактных, выдуманных из головы тестовых заданий. Я считаю что это абсурд – на основе быстрого решения какой-то единичной проблемы пытаться сделать выводы о том, насколько человек окажется эффективным сотрудником. Реальную эффективность можно оценить только спустя недели и месяцы реальной работы в команде. Поэтому, когда есть такая возможность, вместо тестовых заданий – я задаю самые различные вопросы, чтобы понять обладает ли кандидат широким кругозором, опытом, развитым ассоциативным и нестандартным мышлением. Я решил опубликовать эту подборку, чтобы кандидаты могли реально оценить свои силы для участия в моих проектах. Continue reading “Тестовое задание для программиста”
Теория автоматического обновления (deploy)
Каждый разработчик сайтов и веб-приложений регулярно сталкивается с задачей обновлять свои проекты. Хорошо, если вы работаете в правильной среде и имеете все инструменты для деплоя (deploy). Но что, если нет? Давайте рассмотрим несколько способов и выберем наиболее подходящий.
Continue reading “Теория автоматического обновления (deploy)”
Программисты с потерянной обратной связью
Зачастую бывает так, что мы садимся осваивать новый программный продукт, и нас начинает мучать странное ощущение "некачественности". Я не говорю о случаях, когда явно что-то не работает – там всё понятно. Я о другом – когда это ощущение рождается где-то на задворках подсознания, и его никак не выразить словами. Когда тебя спрашивают: ну скажи ты конкретно, что тебя не устраивает? А ты и сказать не можешь – мучаешься, пытаясь выразить свою неудовлетворённость словами.
В этом посте я выдвигаю свою гипотезу о том, что же именно в таких продуктах на самом деле "сделано не так". Всё дело в том, что их создавали люди с потерянной обратной связью.
Когда ребёнок плачет, мама приходит к нему на помощь, и он замолкает. Когда ваша девушка грустит, вы её обнимаете, и она улыбается. Когда вы кликаете мышкой, вы слышите и ощущаете пальцем щелчок. Когда вы работаете на клавиатуре, вы чувствуете ход нажатия кнопок. Когда вы ставите машину на сигнализацию, она пикает и мигает фарами. Когда вы нажимаете на дверной звонок, вы слышите звук сигнала через дверь. Когда вы решаете трудную задачу по работе, вы получаете одобрение руководства и благодарность от клиентов.
Весь мир насыщен обратной связью. Прокрутите в голове все события, которые происходят в вашей жизни повседневно, и вспомните определить фидбэк от каждого из них. А теперь представьте, как выглядела бы жизнь, если бы фидбэка не было. Представьте себе девушку, которая не реагирует на ваши ласки. Разберите мышку и извлеките щёлкающий механизм. Попробуйте поработать на сенсорной клавиатуре айпада вслепую. Каждый раз выходя из машины, проверяйте вручную – закрылись ли все дверцы и багажник.
Мир без обратной связи был бы адом. Именно таким адом выглядит программный продукт, который не поставляет достаточное количество обратной связи пользователю. Что происходит прямо сейчас? Я кликнул – и что изменилось? Начался ли фоновый процесс? Или уже закончился? А если он идёт, то почему так долго? А успешно ли он завершился? Ждёт ли от меня система каких-то действий, или это я должен подождать? Можно ли закрывать эту страницу – сохранятся ли данные?
Причины создания таких программных продуктов лежат глубоко в области психологии. Большинство "компьютерных гиков" настолько "продвинуты" в области разработки и программирования именно потому, что у них нарушена коммуникабельность и связь с внешним миром. Они играют в вов и линейку, сидят в социальных сетях и на профессиональных форумах, занимают всё свободное время чтением документации, отрицая реальный мир и создавая вокруг себя воображаемый. Они реализуют себя в жизни в общении с компьютерами, потому что общество их отторгает, а компьютеры бессловесны и принимают их "как есть". Даже само понятие "компьютерной грамотности" становится для них критерием для деления людей на достойных и недостойных. Возможно, в глубине души они уверены, что Ньютон, Галилей, Коперник и Чарльз Дарвин тоже были программистами.
С теми кто просто замкнут по своей природе – ещё можно найти общий язык и помочь человеку осознать, что никакая программа не ценна сама по себе. Ценной её делает полезность для потребителя. Но если человеку впору ставить диагноз "аутизм" или "социопатия" – то в результате становится страшно. Страшно от осознания, что ты сидишь перед экраном и пользуешься продуктом, но тебя как-бы нет. Для автора ты – пустое место, робот с запрограммироваными use-кейсами и встроенным аппаратом для чтения документации. Только так автор может допустить тебя к использованию продукта, но если бы тебя вообще не было – вот это был бы идеал.
Потребители и пользователи – абсолютное зло для программистов с потерянной обратной связью, так как нарушают их волшебный дуэт с компьютером. Важно удалять таких людей из команды прежде, чем они заразят своим отношением других.
Материалы для самостоятельного изучения:
Рекомендации компании Apple
Рекомендации по книге Джефа Раскина "Интерфейс"
Не позволяйте знаниям ослепить себя
Как выбирать программистов
Профессиональный программист – это совсем не тот человек, который способен писать сложные SQL-запросы, разбираться в виртуальных деструкторах, и знать все нововведния в последней версии языка PHP. В реальной жизни опытный менеджер ожидает от программиста совсем другие качества:
Программист не должен быть абстрактным творцом
Каждый может взять готовый паттерн или с нуля придумать абстрактное хранилище данных. Это не сложно, но это только половина дела. Если в реальности твоё хранилище при попытке выбрать “все зелёные объекты массой от 10 до 50 кг, которые были куплены не менее 2-х раз за текущую неделю” на несколько секунд вешает выделенный сервак – то грош цена твоей красивой абстракции.