Здравствуйте, уважаемые хабровчане! Я занимаюсь запуском интернет – проекта, а именно web-сайта, позволяющего пользователем некоторой группы организации обмениваться друг с другом информацией о своих работах, комментировать работы коллег, сливать законченные проекты в архив и подключаться к работам других.
Я не прошу оценивать целесообразность и/или наличие аналогов у самого проекта, сейчас это не имеет практического значения. Мне интересно, какие сроки, на ваш взгляд, необходимо установить проекту от 0 точки (сбор команды, оплата серверов, ознакомление с ТЗ и прочее) до точки выпуска более-менее завершенного проекта, который можно будет выпустить в опытную эксплуатацию с первыми пользователями. Понимаю, что это один из самых сложных вопросов в IT вообще, поэтому интересно знать хотя бы общие, даже нечеткие оценки. Заранее спасибо!
Теперь по порядку.
Команда.
я – руководитель проекта, заказчик. Кроме контроля за командой занимаюсь тестированием функционала и валидацией кода.
мой помощник – то же, что и я. Помогает.
2 программиста – уровень средний, пишут код.
Дизайнер – очевидно, рисует.
Платформа.
VPS
RAID-10 HDD 200 Гб
Xeon/Opteron (Мгц) 4 * 2000
Память – 4 Гб
MySQL 5
Датацентр в Питере.
ISPmanager прилагается
Работы по проекту.
Основной шаблон – Хедер, футер, между ними 3 колонки. Правая и левая – для доп. Функций (типа регистрации и т.п.). Средняя – основная область сайта.
Дизайн – элементы шаблона яркие, укрупненные, но общая концепция минималистская. Шаблон создается с 0, уникальный.
Нужно создать:
— Возможность регистрироваться и иметь собственный кабинет (похоже на Хабр, когда в настройках аккаунта).
— Возможность внести собственную работу (форму заполнить) на сайт.
— Возможность разбивать работы, представленные на сайте по категориям (категория выбирается из списка пользователем при внесении работы), так, чтобы пользователь, нажимая на категорию, видел список работ отсортированных…
— Фильтр для сортировки (по дате, популярности, хз еще как)
— На главной странице – список самых популярных работ (лентой). В категориях – тоже лентой.
— При нажатии на любую работу, представленную на ленте в виде превьюшки и какого – нибудь краткого описания — тизера, выводится полная информация о работе и у зарегистрированных пользователей появляется возможность вступить в обсуждение и подписаться/отписаться на участие.
— По истечению сроков, отведенных на работу, она автоматически исчезает из своей категории и перемещается в архив работ.
Если кратко – то это пока все.
Ожидаемая нагрузка – не менее 1000 хостов в день (может и в пару – тройку раз больше), хитов – как получится.
Планируем прикрутить Nginx на фронтэнд. Вообще, связка LAMP.
Важно, чтобы все это было оптимизировано и с не очень уж неприличным количеством глюков.
Если бы ушли от lamP к lamROR (Ruby On Rails), то можно было бы сделать при помощи одного программиста не более чем за месяц (в зависимости от уровня программиста).
Т.е. тут может быть достаточно дизайнера, постановщика задачи (он же тестировщик) и одного программера. Если все оперативно работают по 8 часов в день, 5 дней в неделю, за месяц (ок, с запасом — два) можно все сделать качественно.
Если делать просто на php, время на программинг и отлавливание дыр придется умножить на 2 или даже 3.
И совет: проект не сложный, поэтому не стоит брать двух прогеров — только головная боль.
Я извиняюсь конечно, за то что влезаю в ваш разговор, но судя по описанию тут и на php неделя-две работы, если конечно программисты имеют наработки — своя цмс или опыт работы с одной из публичных.
Все зависит от уровня разработчиков и слаженности команды в общем. Про дизайн говорить не буду, опыта не много, разработка тянет на 100 часов для профи в одно лицо, для слабеньких программистов без отдельного архитектора получиться где-то по 1000 на каждого + 400 на обсуждение и сопряжение кода.
Я с автором вопроса не знаком, но тоже из РнД.
Тут да, 30к — нормальная средняя з/п для веб-программиста среднего уровня (то есть звезд с неба не хватающего, но имеющего уже какой-то опыт и какую-никакую квалификацию).
Программеры с уровнем выше среднего имеют порядка 40.
50 и выше — единицы. Это либо тимлиды, либо какие-то очень важные ключевые сотрудники, либо место какое-то очень удачное, либо работа с утра до ночи.
А, на остальное… знаете ли, у человека затруднение в оценке человеческих ресурсов(прочие возможности автора, аля офис пр. я не знаю) Их я оценил, со всем остальным он и сам справится. Почему у вас лично возник вопрос с обеспечением рабочих мест — это ваши личные проблемы. При чем тут я?
«На глаз» в зависимости от опыта решения программистами подобных задач, наличия наработок и использования фреймворков: от 3 до 8 месяцев с момента начала фактических работ.
Программистов (по опыту) можно искать реально долго, если не повезет.
В задании есть скрытый текст? Потому, что задачи подобные описанной два моих программиста решают за две недели. Какой из пунктов в задании делается больше пары дней?
При нажатии на любую работу, представленную на ленте в виде превьюшки и какого – нибудь краткого описания — тизера, выводится полная информация о работе и у зарегистрированных пользователей появляется возможность вступить в обсуждение и подписаться/отписаться на участие.
Возьмем хотя бы этот пункт. Тут может всплыть больше кол-во дополнительной работы:
— нужно что бы при длинном названии оно сокращалось в конце до 3х точек. И что бы не резало слова.
— нужно что бы тизер не всплывал за пределами viewporta
— простой блок последовательных комментариев может выльется, в блогодвижек.
И так можно по каждому пункту.
Если приглядеться к ТЗ, то понятно, что там будут 2 вида пользовтелей:
— работодатели
— фрилансеры
Соответственно и личный кабинет должен быть разный.
А разделение на профи и средненьких меня вообще убивает.
Тут все мелкая элементарщина, но неё много и она убьет много времени
Предпочитаю после прочтения таких кратких описаний умножать оценку, приходящую в голову на N. Может я самый непредусмотрительный или глупый среди отвечающих, но еще ни разу мне не удавалось в первые 15 минут после брифа задания угадать все подводные камни, на которые придется наткнуться.
Чтобы оценить сроки проекта, необходима «паяльная лампа» и опыт выполнения таких проектов. Т.е. как вы обрисовали, у меня и еще у других людей не сложилась две картины:
1) Что именно вам надо. Скажем какая-нить закавырка есть, которая увеличивает сроки выполнения в X раз.
2) Как именно вам это надо сделать. Качество собственно
Минусов не ставил, но по хорошему вы просите людей сделать вашу работу за вас (умение грамотно оценивать сроки — очень важный навык), а люди в IT особенно яростно не любят когда их это просят :)
Если вы и ваша команда, делает не обкатанный проект, т.е. первый раз и вы набираете команду под новый проект, у вас как и у всех будут факапы в самых не предвиденных местах, поэтому:
Сроки:
1) Возьмите всю команду, пусть каждый(включая руководителей) скажет, сколько он потратит на это времени в теории.
2) Посчитайте среднее арифметическое и умножьте это на великое число Pi
3) Получите реальные сроки со всеми факапами!
Реализация:
1) Сделайте простенький Roadmap, вот, только то, что нужно для альфа версии.
2) Делайте его без заморочек на всякие там масштабирования, устойчивость в высокой нагрузке и т.п. и т.д., т.е. основной нужный функционал как есть.
3) Получите быстро рабочую 1 версию, у вас уже будет четкое понимание, что как есть, сколько и где оно держит и где есть и будут косяки в будущем.
4) Напишите много много тестов и приступайте к рефакторингу в нужном русле.
Спрашивал, ибо раньше не приходилось делать подобные вещи и боюсь совсем запороть сроки (а дополнительный опыт очень нужен:) ). Я понял и принял к сведению все ваши советы, повторюсь, что очень благодарен за помощь и тоже постараюсь помочь нашему сообществу чем смогу.
Хороший дизайнер на пару со специалистом по юзабилити (если конечно это не один и тот же человек), сделает первичный вариант дизайна за два-три дня, окончательный вариант плюс ещё неделя. По программной части, на опыте могу сказать что сам бекэнд займёт не больше 3-4 дней на бета версию и ещё полторы недели на релиз, фронт-энд сильно зависит от дизайна, но думаю также не больше недели. Оптимизация по нагрузке нецелесообразна, в особенности если будут писать на python, так как дешевле будет арендовать новые машины, чем бесконечно оптимизировать код (учитывая что для подобной задачи понадобятся хорошие специалисты с опытом в подобных вещах). Учитывая возможность выполнять фазы одновременно. я бы дал срок не больше месяца, плюс ещё 30-50% если команда вместе до этого ни разу не работала.