Будучи фрилансером, да ещё работающим в команде, мне приходится не только писать код (код это лишь часть работы). Мне приходится делать ещё очень много вещей, но все они сводятся практически к одному: принимать решения.
Этот пост не будет освещать какие либо методики или философские подходы. Я просто приведу перечень типов решений, над которыми пришлось в последнее время подумать. Некоторые из решений давались легко, некоторые сложно. Считайте этот пост моим желанием посетовать на нелёгкую судьбу фрилансера, пока не ставшего руководителем чистой воды. Итак:
- С помощью какой технологии реализовать приложение? CMS, фреймворк, CMF и какие из них? На чём будет проще создать? а развивать? а придётся ли развивать? а не уйдёт ли заказчик посчитав что медленно стартанули при этом не задумавшись, что основа закладывается именно сейчас? а не завязнем ли мы потом в полной переделке готовой CMS, хоть старт и был быстрым за счёт использования этой CMS?
- Как распределить задачи среди ребят из команды? У каждого есть свои особенности, это понятно, но дело усложняется тем, что сотрудники бывают итак нагруженными и им сейчас нельзя поручить работу, пусть в ней они наиболее компетентны чем другие.
- Каким задачам/проектам отдать приоритет в данной ситуации? Ведь ситуации не всегда линейны чтобы подошёл ответ "самым денежным и долгоиграющим". Проект может быть большим, с солидными оплатами за этап работ, но деньги нужны прямо сейчас! Рисковать и откладывать большой проект в угоду разовым "визиткам", но за которые платят уже после обеда? Или наброситься всеми силами на большой этап чтобы получить за него деньги? А если не успеем в срок, в который нужны деньги? В качестве расплаты может быть на выбор: банковский штраф за просрочку кредита, снижение лояльности сотрудника за задержку зарплаты или что угодно ещё. Но ведь и проблема может быть другой: скажем двум заказчикам понадобились работающие версии их проектов не в пятницу, как договаривались, а раньше - в среду (у одного перенесли презентацию проекта внутри его холдинга, а другой срочно в четверг улетает в Ханты-Мансийск). Обоим одновременно! Сделать обоим хорошо не выйдет, значит что выбирать - кому-то всё, а другому ничего? Или всем пополовинке? Или искать способ сделать всё всем? Или всех послать? Но ведь оба - надёжные заказчики...
- На что потратить своё рабочее время? Вариантов много: программировать в проекте А (потому что горит!), программировать в проекте Б (если сейчас не сделать - завтра будет гореть!), назначить встречу партнёру по стартапу для прояснения ближайших совместных действий (иначе потратим силы не в ту сторону), заняться размещением рекламы в СМИ и мониторингу фрилансовых бирж с рассылкой коммерческих предложений (а то текущие работы кончатся, а заказов-то новых ещё нет!), проверить выполненные сотрудниками работы (как же рапортовать заказчику не посмотрев?), подумать над тем как оптимизировать рабочие процессы (до этого никогда руки не доходят, но ведь теряем время из-за непродуманности) и так далее и тому подобное.
И это только то, что я вспомнил сейчас. Конечно крупным планом. Сюда я не включил решения, которые приходится принимать именно как программисту касательно кода. Но ведь что самое сложное во всём этом деле - жизнь не всегда говорит какие есть варианты! Как говаривал Ф.М. Достоевский (цитирую по памяти): "дважды два не всегда равно четырём, иногда равно пяти, а порой и стеориновой свечке".
P.S. Небольшая иллюстрация к тексту выше. Я, как сообщал в предыдущем сообщении, должен был поехать на Веборуб. Давно планировал, регистрировался, списывался с коллегами etc. Но в пятницу вечером (а само мероприятие наутро в субботу) сложилась такая ситуация - в понедельник нужно сдавать проект, а мы подзастряли. Если я уеду (это как минимум суббота, а может ещё и часть воскресенья), то к понедельнику работу мы не сделаем. Веборуб - очень важное мероприятие. Проект тоже важен и не факт что мы его не успели бы, поедь я на Веборуб. Но риск был. И я не поехал.