December 13, 2012
Идея

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

Project Manager

В любом проекте должен быть один, и только один, руководитель команды. Где-то он называется project manager, где-то product owner, но суть одна - он задает вектор движения команды, он ставит майлстоуны, и он всегда точно знает, как должен выглядеть продукт. Да, есть “команды без менеджеров”, типа github, но в них все равно есть “играющий тренер” - это нормально (даже если эта роль преходящая). Но хуже всего, когда менеджер формально есть, но видения продукта у него нет.

Юзеры

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

Задача

РМ должен максимально ясно и однозначно донести до команды, какую задачу решает продукт. Дальше все просто: если фича не помогает решить задачу - в мусорку такую фичу (даже если она уже реализована). Хороший дизайн - такой, от которого нечего отнять (а вовсе не когда нечего добавить).

Коммуникации

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

Итог

Перечисленные мною пункты - абсолютный must have для правильного понимания идеи всеми членами команды. Без такого понимания проект не взлетит совершенно точно (думаю, у многих найдутся такие примеры). Зато, если все перечисленное есть и работает, можно сделать “конфетку” даже из непритязательного клона западного сервиса.

October 20, 2012
Как заставить себя работать

Многие начинающие фрилансеры не знают, как прекратить проскастинацию и начать наконец работать. Я постараюсь описать, что помогает в самомотивации лично мне.

  1. Поставь себе цель. Помните про пирамиду Маслоу. Еда и крыша над головой - это хорошо, но это низшие уровни, поэтому надо поставить себе какую-то более высокую цель. Для кого-то это покупка машины, для кого-то путешествия, для кого-то запуск стартапа своей мечты. Причем, тут нежелательно пользоваться кредитами, мозг очень по-разному воспринимает состояния “я должен накопить Х денег ради своей мечты” и “я должен отдать Х денег банку за свою мечту”. Плюс, тут вступает в действие следующий пункт.
  2. Вышвырни себя из зоны комфорта. Ничего личного, просто физиология. Множество экспериментов (хе-хе) наглядно показали, что если я сплю, сколько захочу, ем от пуза и лежу под пальмой, то работать в таком состоянии почему-то неохота. И после секса, кстати, тоже (мноого экспериментов!). Поэтому лучше вставать по будильнику, кушать по расписанию, да и под пальму ходить в отведенное время. И, главное, не в сиесту. Некоторые говорят “не хочу лишать себя удовольствий”, но для меня кайф от самореализации гораздо важнее, чем возможность лежать на пляже весь день. Тем более, если сильно приспичит - можно выделить специальный пляжный день и хоть улежаться. Главное, не в сиесту, да.
  3. Рабочее время, рабочее место Как проснешься - так и день пройдет. Если сразу взял себя в руки и начал работать - будет все хорошо, а если сначала позавтракал, потом Хабр почитал, потом RSS… а потом уже обед, а ты еще ни черта вообще не сделал. также помогает настроиться закрытая дверь в комнату (если она обычно открыта) и музыка в наушниках. Семья уже в курсе: если дверь закрыта, подходить и спрашивать, почему, не стоит :) Закончу - сам выйду.

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

October 20, 2012
Чеклист для больших проектов

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

Постановка задач

  • Нужен таск-трекер, лучше old good redmine или что-нибудь похожее. Agile-штуки вроде Pivotal или Trello хорошо работают только при поддержке agile менеджментом - маленькие задачи, короткие итерации. Если же задача требует обсуждения и уточнения - такие трекеры начинают мешать.
  • Нужен product owner, как его ни назови. Человек (или коллективный орган), который точно знает, как будет выглядеть и работать продукт. Он должен уметь понимать языки и пользователя, и разработчика, и бегло переводить с одного на другой. Если такого нет - нужно его нанять или назначить.

Сервер

  • Хостинг. Нужно иметь минимум 2 инстанса продукта - для разработки/тестирования и для выкатки на публику.
  • Нужно бэкапить как минимум продакшен, как минимум раз в неделю. Лучше раз в день. И бэкапы хранить отдельно от рабочего сервера (например, в Amazon S3).
  • Нужно иметь хранилище кода с контролем версий. Я считаю, что лучше всего для этого подходит аккаунт на github/bitbucket (в первую очередь, из-за удобного просмотра и возможности быстро показать коллегам код), в случае обострения паранойи можно держать репозиторий и на своем сервере.

Дизайн

  • Дизайнер должен быть доступен всегда. Практически всегда нужно вносить какие-то мелкие правки или добавлять элементы интерфейса. Лучше, чтобы этим занимался один человек.
  • Дизайнер должен разбираться в проектировании интерфейсов (практически тавтология, да). В Рунете часто считается, даже на больших проектах, что дизайнер рисует всякие красивости, а кнопочки и формы программисты сами раскидают. Мы, конечно, раскидаем, только результат чаще всего будет неудобен и непонятен органическим гуманоидным формам жизни.
  • Дизайн должен учитывать работу с сервисом с мобильных девайсов. Хотя бы начиная с андроидного среднего разрешения 800х480 и с тач-скрином.
  • И вообще, дизайнер должен осознавать, как его картинки будут верстаться и работать.

Верстка

  • Вопрос “дивы или таблицы” давно не стоит. Естественно, на дивах, хорошо бы - семантичная, еще лучше - на фреймворке типа bootstrap.
  • Если дизайнерские выкрутасы нельзя сверстать аккуратно - стоит попросить дизайнера переделать (если это не принципиальный элемент). Поддержка выйдет дороже.
  • В верстке должны быть все возможные состояния элементов. Если это кнопка - она должна быть в нажатом и отключенном состоянии, если форма - должны быть сверстаны поля с ошибками.
  • Я выше написал про поддержку мобильных платформ - к верстке это тем более относится.
  • Идеально, если верстальщик умеет поднять у себя проект и пользоваться репозиторием кода.

Бэкенд

  • Код должен следовать гайдлайнам языка и фреймворка. Если он писался человеком без опыта работы с конкретной платформой - код смотрим особо тщательно, будь автор хоть суперкрутой программер. Больше того, “суперкрутые”, даже чаще используют мозгодробительные конструкции, в которых никто потом не может разобраться.
  • Должна быть документация. Коментарии в коде, тесты, отдельная документация - уже не так важно, что именно. Ведущего разработчика или owner-а всегда может переехать трамвай, и нужно быть уверенным, что проект после этого не развалится, как карточный домик.
  • Обязательно должен быть поставлен процесс тестирования. Опять же, конкретные методики это та еще пища для холивара, но что-то быть должно. Иначе к запуску окажется, что все ломается, никто не знает точно, работает фича или нет, а если не работает - кто и когда ее сломал.

Коммуникации

Все члены команды должны быть связаны со всеми остальными. Давно уже у всех есть доступ в интернет, есть Skype, есть TeamViewer (if you like it - buy it!). Сотрудник, который проверяет почту раз в неделю, а отвечает на нее еще реже (при этом, сотового у него нет, потому что он Перельман) - не очень хороший сотрудник (хоть и, возможно, отличный программист). Схема, при которой все общение между верстальщиками, программистами и дизайнерами идет только через менеджера - тоже не очень эффективна. Имеет смысл ограничить “прямую” постановку задач, но вопросы типа “как вот это у тебя должно работать” должны ходить напрямую.

Мы не успеваем!!!

Если проект не укладывается в сроки или в бюджет - команда об этом должна узнать как можно раньше. Чтобы вместо “релиза” глючного, постоянно падающего и частично вообще нефункционального нечта можно было заранее обсудить сроки, урезать функциональность (почти всегда оказывается, что можно урезать что-то ресурсоемкое, но маловажное для пользователя) и выкатить рабочий продукт.

Собственно, это одна из мантр agile - постоянно иметь рабочий продукт. После первой недельной итерации мы должны иметь рабочий продукт. Да, он мало что умеет, но он работает, он не падает, и его всегда можно показать при возникновении вопроса “а чем вы тут так долго занимаетесь?”.

Методология

Лучшая методология разработки ПО

А если человек много треплется, но мало двигает дело вперед - ну его нафиг.

У нас не сработает

Если в команде мало людей (нет денег, злой заказчик и т.п.), указанные выше роли можно распределять по нескольку на одного человека. От чего-то можно отказаться совсем (например, не делать графический дизайн, а взять готовую тему для фреймворка, или вместо найма программистов взять cms), важно только осознавать “за” и “против”.

February 12, 2012
Удаленная работа

Не все тут знают, что я вот уже 3 месяца живу в банановой стране Эквадор. И работаю, соответственно, тут же (правда, с теми же контрагентами, с которыми работал в России). Так что работа моя стала еще на 15 тыс. км более удаленная :)

И вот, на днях перечислял жене, откуда мне “приходит” работа. Чехия, Франция, Белоруссия, Россия (Москва, Калуга и Томск), Израиль, Таиланд, Индонезия, Австралия. В прошлом году было прилично работы с людьми из США. Да, по большей части работодатели русские (или посредники между работодателем и мной), но все же.

Так что мне весьма весело читать в рассылке что-то вроде “денег немного, так и фрилансера не из Москвы можно”. У меня на питерских связях, с людьми, которыми я знаком лично, идет от всей работы процентов 20 максимум, остальное чисто через интернет. И если бы я жил не в Питере… ну да, возможно, школа и ВУЗ были бы попроще (но не факт что это бы сильно отразилось, на программирование меня все равно отец подсадил). Интернет бы появился попозже. Но глобально бы это не повлияло на то, что мне нравится, и чем я занимаюсь. И сейчас у меня были бы ровно те же возможности (собственно, их у меня сейчас еще больше, просто я не все использую… лень, знаете ли).

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

А неадекват он везде неадекват. Хоть в офисе, хоть на удаленке.

August 23, 2011
Уведомления

Удивляет, почему народ не подписывается на уведомления.

У одних отвечаешь на тикет, перевешиваешь его, а назавтра в гтолке чувак дергает - мол, ты видел, у тебя там тикет, когда сделаешь-то? Нет, дружище, это у ТЕБЯ тикет.

У других “кто-то” поменял параметры фильтра в багтрекере, поэтому тестер был уверен, что делать ему нечего. Интересно, почему при этом я получаю в почту и читаю все тикеты, включая менеджерские, дизайнерские и еще 2 программеров?

Потому что мне не насрать, наверное…

June 2, 2011
Vampire Hunter CH.A.K.

В jabber-е ВНЕЗАПНО придумалась будоражащая кровь история. Про молодого довольного жизнью программиста, приехавшего в тихую восточноевропейскую деревеньку писать свои амбициозные проекты. Про то, как там все на него днем косятся непонятно. Про то, что в деревне многие хозяева умерли, и в домах их теперь живут Черные Тени. И про то, как ночью в окно бьются летучие твари-кровососы. Так-то!

11:14am  |   URL: http://tmblr.co/ZT90Ky5hfYY_
(View comments
Filed under: lytdybr 
April 13, 2011
git autopush

Регулярно забываю делать push после коммита, особенно если коммит мелкий совсем. Чтобы не забывать - добавил в .git/hooks/post-commit строчку

git push

Да, не всегда это хорошо, но для меня чаще плюс, чем минус :)

April 7, 2011
про жж и любовь

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

Который ВНЕЗАПНО серьезно меняет сложившиеся (хоть и негласные) правила пользования, ВНЕЗАПНО обвешивает пользователей весьма назойливой рекламой, а потом в лице топ-менеджера называет их “уебанами”. Который вместо серьезной работы над UX который год внедряет всякие свистоперделки (причем, внедряет, по-видимому, безо всякой системы), и по всякому-другому издевается над своей аудиторией.

Без любви ничего не получится, а что есть - погибнет.

March 10, 2011
Аттракцон неслыханной щедрости! 1.45 литра сока пополам с водой ДЕШЕВЛЕ, чем 1.5 литра таки-сока!

Аттракцон неслыханной щедрости! 1.45 литра сока пополам с водой ДЕШЕВЛЕ, чем 1.5 литра таки-сока!

February 6, 2011
@ilvar:

Забавно: в процессе Django-фриланса сплошь и рядом сталкиваюсь с лютым overengineering-ом :)

Liked posts on Tumblr: More liked posts »