Что не является проектом?




IT-проекты

Проектный замысел

 

Уважаемые друзья, если вы открыли этот документ, значит, либо вы уже твёрдо решили, что в ближайший год вы будете делать проект в сфере IT, либо вы находитесь в процессе выбора. Ну или вам просто любопытно, что, в общем, тоже неплохо.

 

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

 

* * *

 

Итак, IT-проект. Думаем, слово "проект" вы уже слышали раз двести и вряд ли здесь имеет смысл давать какое-то определение. Хотя, c другой стороны, чтобы у вас не возникло ощущение, что мы относимся ко всему легкомысленно, приведём цитату из документа под названием “Национальный стандарт Российской Федерации ГОСТ Р ИСО 21500-2014 – Руководство по проектному менеджменту (англ. ISO 21500:2012 Guidance on project management)”:

 

“Проект состоит из уникального набора процессов. Процессы состоят из координируемых и контролируемых работ с датами начала и окончания, которые выполняются для достижения целей проекта. Достижение целей проекта требует получения определенных результатов, отвечающих конкретным требованиям. При реализации проекта могут действовать множество ограничений, включая описанные в подразделе 3.11.

 

Несмотря на возможное сходство каждый проект уникален. Проект может отличаться:

 

· получаемыми результатами;


· составом влияющих на проект заинтересованных лиц;


· используемыми ресурсами;

· существующими ограничениями;

· особенностями использования процессов проектного менеджмента для получения результатов. ”[1]

 

В этой цитате многое (если не всё) может показаться достаточно очевидным, но именно то, что здесь указано, и будет определять структуру вашей деятельности в ближайший год. Однако, понимая, что всё, что здесь сказано про проект, относится к проекту любого типа, мы, не медля, перейдём сразу к проектам нашего типа и, отбросив строгость ГОСТа, скажем, что проект - это процесс и результат работы над программным продуктом, который, среди прочего, характеризуется: 1) функциональностью - то есть, способностью решать задачи определённого круга пользователей, 2) законченностью - то есть, непосредственно к сроку сдачи пользователи, для которых он предназначен, могут начать с ним работать, 3) определённой степенью сложности (об этом подробнее будет сказано дальше, пока что отметим, что этот пункт нужен для отсечения Hello World -проектов).

 

* * *

 

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

 

К моменту дедлайна у "заказчика" (а тут кавычки и несколько секунд позже вы поймёте, почему) проект должен быть уже полностью готов к работе. Что это значит?

 

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

 

Если у вас мобильное приложение, то оно в идеале оно должно присутствовать в AppStore / Google Play, но, если с этим возникнут разного рода сложности, то этот пункт можно смягчить до предоставления полностью готового проекта (в терминах той среды разработки, которой вы пользуетесь), который, опять же, будет собран и протестирован локально.

 

Если же у вас десктоп-приложение, то здесь всё просто: код и установочные файлы должны быть предоставлены тестировщикам к определённому дню.

 

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

Резюме: на защиту выносится полностью готовый продукт, требующий только установки и настройки параметров со стороны пользователя (конечно, если последнее предусмотрено самой концепцией проекта).

 

* * *

 

Возможно, вы уже спрашиваете себя или Вселенную: хм, а кто такой заказчик? Есть два варианта: заказчиком может быть реальный человек (родственник, друг, деловой партнёр, кто угодно), который попросил вас написать приложение/сайт/что угодно для своих задач. Он ставит перед вами задачу и, если она проходит этап предзащиты, вы приступаете к работе. В данном случае нам бы очень хотелось иметь возможность общения с вашим заказчиком (мы не будет отрывать его от дел и забот каждую неделю, конечно, речь идёт о разумной консультации).

 

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

 

* * *

 

Что не является проектом?

 

А почему, собственно, мы задаёмся этим вопросом? Дело в том, что, как вы уже догадались, однозначно определить, что такое проект - попросту невозможно, а когда определение дать невозможно, полезно уточнить, чем не является то, о чём мы говорим.

 

1) Естественно, не является проектом результат чужой работы. Мы не будем говорить, что будет в случае, если кто-то попадётся на плагиате. И так понятно, что ничего хорошего.

 

Тем не менее, отметим важный момент: поскольку весь код с нуля, понятное дело, вы писать не будете, вам нужно будет в документации к проекту указать, какие именно библиотеки, фреймворки и т. п. вы используете. Это разумно, это не нарушает авторские права и отдаёт дань уважения тем, кто создал этот код до нас.

 

2) Если ваш проект представляет собой сайт, то не будет засчитываться сайт, собранный на одной из CMS - будь то WordPress, Joomla, Drupal и тому подобное. Всё это важные вещи, но, как нам кажется, в этих проектах особо нет (мягко говоря) программирования, а есть сборка модели из конструктора. Вместо CMS изучайте фреймворки. Их много, с ними интересно, вы получите отличный опыт чтения документации и погружения во что-то новое (если, конечно, вы до этого ни на чём не писали).

 

3) Не может быть представлен к защите проект, который трудно или даже невозможно протестировать в аудитории. Допустим, ваш проект предусматривает работу с геолокацией и отслеживанием координат общественного транспорта, например, автобусов. Как мы узнаем, что ваш проект, действительно, работает с геолокацией автобусов и работает правильно? Увы, отправиться в пешую прогулку по Москве вслед за автобусами у нас возможности не будет. Или, допустим, вы написали приложение, которое каждые сутки выполняет какую-то функцию. А защита длится всего 10-15 минут. В общем, думаем, намёк понятен. Функционал приложения должен демонстрироваться в отведённое на защиту время в обыкновенной лицейской среде.

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

 

4) Не является проектом и тот код, где вы выступили только пользователем каких-то библиотек, а сами только "прикрутили" к ним интерфейс. Пример: допустим, вы написали приложение, которое подсчитывает число котиков на фотографии, использовав для этого машинное обучение-глубокое обучение-нейросети и всё то, что сегодня гремит во всех медиа. Если же вы при этом нейросети и алгоритмы обучения взяли из библиотек, а ваша работа свелась к написанию интерфейса загрузки фотографий и вызову функции countCats('file.jpg') (мы утрируем, конечно, но вы понимаете), то это не может быть признано проектом.

 

Значит ли это, что нельзя считать котиков посредством нейросети? Нет. Но будьте готовы:

 

1. писать нейросеть и все алгоритмы сами,

2. понимать математику, которая за ней стоит.

 

В отличие от кхмерского языка тут проблем с поиском экспертов для разговора с вами на эту тему не будет - найдём.

 

Разумеется, это не значит, что нужно вообще всё писать с нуля. Но должен быть разумный баланс между использованием своего кода и чужого, который достигается на этапе обсуждения проектной заявки.

 

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

 

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

 

6) Проекты без GUI – то есть, без графического пользовательского интерфейса. Причина всё так же: как правило, проекты без GUI – это что-то очень специфическое, не ориентированное на широкий круг пользователей.

 

7) Сайты-визитки, сайты-справочники, сайты для поклонников чего-либо и другие сайты, назначение которых – сообщение какой-либо информации для пользователя. Как правило, на таких сайтах может не быть никакого бэкенда или он очень примитивный. Функционал таких сайтов тоже очень простой. Как правило – это показ страниц с определённой информацией, иногда – примитивная гостевая книга, в которой можно оставлять комментарии.

 

8) Странные проекты. Хм, а что это такое? Мы, конечно, думаем, что таких проектов у нас не будет, но и обойти их своим вниманием мы тоже не можем. Представьте, что вы написали проект, который просит пользователя ввести число, а затем выводит столько кружочков, сколько было указано. Проект всем понятен, доступен, сами вы всё про него знаете и можете отчитаться за каждую запятую и точку с запятой в нём. Возникает, однако, один простой вопрос: зачем? Какую задачу решает вывод двадцати кружочков на экран? Кому это нужно?

 

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

 

* * *

 

Пример с кружочками довольного искусственный, но, допустим, вы решили написать программу, которая считает корни квадратного уравнения. Это полезно, вы понимаете, как происходят вычисления, но... это слишком просто. Для решения непосредственно задачи вычисления корней нужно несколько строк кода. Даже если вы никогда не изучали программирование до этого, вычислить корни квадратного уравнения вы сможете уже на втором-третьем занятии. Здесь нет ни сложной математики, ни трудоёмкого программирования, ни концептуально трудноосмыслимых понятий.

 

Тут можно спросить (мы поймём, если вы будете спрашивать с ехидной интонацией): а как вы будете измерять сложность проекта? Ответ: никак. Проект это не стол, его линейкой не измерить. Аршином общим тоже. Именно для этого нужен этап предзащиты и согласования проектной заявки: в процессе обсуждения мы сможем прийти к общему знаменателю и решить, как усложнить ваш проект, если заявка выглядит слишком простой, или, наоборот, предупредить вас о том, что стоящая перед вами задача потребует от вас слишком много временн ы х затрат.

 

* * *

 

Первый раздел нашего документа подошёл к концу. Что нужно сделать сейчас? Совет: изложите "вольным стилем" в одном абзаце суть вашего продукта и посмотрите, насколько ваша задумка соответствует перечисленным выше требованиям.

 

Эти требования вам могут показаться очень строгими. На самом деле, они нужны для того, чтобы отсечь крайности. Если вам кажется, что приведённые выше требования слишком несправедливы или не могут применяться к вашему проекту, пожалуйста, сообщите нам об этом.

 

Мы готовы к диалогу, а наша задача - не запрещать вам что-то, а помогать "доводить до ума" вашу заявку так, чтобы на защите ни у кого не возникало вопроса, а что же, собственно, вы защищаете, где тут проект, где тут работа головы и сердца и т. п.

 



Поделиться:




Поиск по сайту

©2015-2024 poisk-ru.ru
Все права принадлежать их авторам. Данный сайт не претендует на авторства, а предоставляет бесплатное использование.
Дата создания страницы: 2019-06-26 Нарушение авторских прав и Нарушение персональных данных


Поиск по сайту: