С чего начать проект
Несколько дней назад получил письмо от одного из читателей моих статей в журнале «Хакер». Парень рассказал, что несколько лет назад заинтересовался программированием, приступил к изучению этого нелегкого «ремесла» и, к сожалению, не смог добиться существенных результатов. Сейчас у него есть идея нового web-проекта, и он не знает с чего начать его реализацию. По себе знаю, что с подобным вопросом сталкиваются многие (тем более на прошлой неделе я получил 3 подобных письма), я решил написать небольшую заметку со своим взглядом на проблему.
Итак, есть идея, но пока нет четкого плана ее реализации. В большинстве случаев возникшие в голове креативные мысли не совпадают с багажом возможностей для их воплощения в жизнь. Я говорю это совершенно серьезно, т.к. сам сталкивался с подобным. Например, идея первой программы (еще под Windows 98) мне пришла в голову, когда у меня полностью отсутствовали навыки программирования. Тогда я только знал, что есть такие классные языка программирования как C++, Delphi и все.
С чего начать воплощение проекта в жизнь
Проработав почти 8 лет разработчиком, я успел несколько раз изменить взгляды на эту профессию и вывести свои стратегии достижения успеха. Последние проекты, в которых мне довелось участвовать, создавались на основе принципов, описанных ниже по тексту. Не могу сказать, что это безупречное решение, но эти простые правила уже несколько раз позволили трансформировать идеи в реальные вещи.
Закрепляем идею на бумаге
Любой свой проект я начинаю с ручки и чистого листа бумаги. Нет, вру. На чистом листе обычно рисуются непонятные схемы, а потом они старательно переносятся в электронный документ. В кино частенько показывают красивый процесс прототипирования идеи на бумаге/доске, но лично я так не умею.
За годы использования клавиатуры, мой почерк превратился в криптографический алгоритм необратимого шифрования. Идеи, оформленные таким стилем, надежно защищаются не только от злостных завистников, но и их автора, т.е. меня. Да, это, правда - Игорь Антонов очень плохо читает собственный рукописный текст.
Возвращаемся к нашей теме. Закрепленная идея на бумаге позволяет лучше прочувствовать замысел и определиться с начальным функционалом. Представим, есть идея: «Хочу написать книгу о вражде оборотней восьмидесятого левела, и новой формой жизни, возникшей в канализациях древних публичных домов Шанхая». Классно? Да, просто круто! Все рассказывают о войне оборотней с вампирами, а тут совершенно не избитая тема, да еще и с перспективой интересного приквела (только подумай, как можно раскрутить идею образования этой самой новой формы жизни).
Казалось бы - бери и начинай писать, но вероятней всего твой энтузиазм быстро пропадет или ты не сможешь сдвинуться с мертвой точки. Ведь по факту, кроме микро идеи у тебя ничего нет.
Итак, первый шаг к успешному воплощению любой идеи – детальное обдумывание концепции и документирование. Заводи отдельный документ и описывай свое видение проекта. Как это должно примерно выглядеть, что оно должно уметь делать и т.д. Чем подробней ты опишешь, тем лучше будешь знать, что вообще требуется сделать.
Весь собранный на бумаге функционал раздели на две части. В первую должны попасть функции с максимальным приоритетом, т.е. вещи без которых запуск и функционирование проекта невозможен. Во второй же, собирай идеи на перспективу. Перфекционизм спрячь подальше в чулан и развей идею создать идеальную первую версию приложения. В реальной жизни так не бывает, а если и бывает, то такие проекты умирают на стадии рождения. Почему?
Пойми, современный мир быстро изменяется, и возможно пока ты будешь воплощать свою идею в жизнь, ее актуальность иссякнет. Лучше быстрей создать рабочий прототип и обкатать его на реальных пользователях. После первых испытаний станет понятно, имеет ли твоя идея право на существование и стоит ли в нее инвестировать время и деньги.
Не пытайся создать идеальный продукт сразу, быстро сделай рабочий прототип и получи обратную связь.
Планирование
У любой идеи имеется срок годности. На начальном этапе необходимо для себя определить четкие сроки реализации рабочего прототипа. Нет конкретных сроков исполнения – нет прямого пути к цели. Берем план приоритетных функций и проставляем им примерные сроки исполнения. Здесь нужно быть максимально честным и не пытаться поставить оптимистичные сроки завершения проекта.
Для начала определи время, которое ты готов уделять проекту в день/неделю. Особенно это актуально для людей, занятых на постоянной работе. Вот так просто выделить в неделю 40 часов для домашнего проекта, при наличии полной дневной занятости нереально. В моих случаях всегда возникает именно такая ситуация. Например, для своего проекта я готов выделять 2,5 часа в день. За шесть рабочих, дней (один день всегда нужно оставлять для отдыха, т.к. без отдыха о продолжительной и главное продуктивной работе речи быть не может) у меня получается 15 часов. В месяц это примерно 60 часов.
Определяем, сколько требуется часов на реализацию каждой приоритетной функции, и накидываем рабочий график. При расчете времени всегда делай некоторый запас. Если ты планируешь самостоятельно реализовывать весь проект, то планируй дополнительное время на задачи, опыта, в решении которых у тебя отсутствует опыт.
Чаще всего без таких задач не обходится ни один проект. Это нормально и не подразумевает о том, что прожект стоит задвинуть в долгий ящик. Достаточно включить в план отдельное время на обучение. Только помни, что при выделении времени на обучение ты также должен составить план занятий.
Реализация
Закончив с организационными вопросами, можно приступать к реализации. Давать здесь какие-то советы сложно, т.к. остается только сесть и начать работать над проектом. Могу лишь сказать одно – будь готов к трудностям. Сложные ситуации возникают у всех (независимо от степени крутости разработчика) и главное не вешать нос. Хорошо, если есть человек (супруга, девушка, друг), который готов тебя поддержать морально или материально. Полно классных проектов, разработчики которых остановились на полпути к финишу. Старайся не входить в их число, доводи начатое дело до конца.
Финальные советы
Ну и самый главный совет – не сдавайся, всгда иди к своей цели. Помни: «Возможно все, вопрос только во времени». Десять лет назад я впервые услышал эту фразу от своего виртуального друга М. Фленова и теперь с уверенностью могу сказать, что это не пустые слова. Мы можем добиться всего чего захотим, нужно лишь уделить этому должное количество времени и терпения.
2014-03-17 в 06:17:40
Всесторонне поддерживаю. =)
Вопрос со временем действительно стоит очень остро. Если работать только вечерами, то разработка большого проекта автоматически растягивается на долгие месяцы. Психологически этот момент начинает угнетать (сужу по себе). Ты усердно работаешь, а финансовых выгод нет... Именно поэтому я предпочитаю небольшие подработки по вечерам. Несколько дней поработал, всё сделал, деньги получил, можно браться за следующее. ИМХО, так проще.
2014-03-17 в 09:09:28
2Роман,
К сожалению, во многих случаях так оно и есть. Тут вопрос всегда еще в смысле. Если хочется заработать денег, то проще выполнить одноразовую работу и сорвать куш. Большие проекты больше для души и прокачки нового скилла. ИМХО.