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

Давайте прямо сейчас проясним одну вещь: я абсолютно не жалею о том, что занимаюсь Scholarship Technology. Это был большой вызов! Мне очень понравился опыт работы над проектом, который длился месяцы, а не недели, дни или даже часы. Я научился программировать на новом языке с большим фреймворком (Java + Android), я узнал, что значит разрабатывать нативное приложение для Android, я встретил много интересных людей, которые помогали мне на этом пути, и я создал вещь от начала до конца.

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

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

Первое, что я сделал, это просмотрел все примеры проектов, которые мои учителя смогли найти для меня. Безусловно, это были классные проекты, но ни один из них не соответствовал тому, что я хотел сделать. Однако они оказались очень полезными. Оказывается, не так важно, какой у вас проект на самом деле, важно, через какой процесс вы проходите. Все проекты, на которые я смотрел, имели одну и ту же структуру:

  1. Определите проблему
  2. (надеюсь) решить проблему

Выявление проблемы

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

Проблема, которую я хотел решить, заключалась в том, что слишком сложно быть в курсе того, как у тебя дела в NCEA. Я собирался сделать приложение, которое помогло бы старшеклассникам справиться с этой задачей. Совершенно очевидно, как я пришел к этой идее: отслеживать кредиты NCEA сложно. Несмотря на множество посещений различных магазинов приложений, я никак не мог найти приложение, которое делало бы то, что я хотел, — так почему бы не сделать его самому?

Я использовал первый термин как время для создания проекта. Единственным решением, которое я принял на тот момент, было то, что я собираюсь создать приложение для Android, поэтому мне пришлось работать над изучением Java. Это в основном то, на что я потратил свое время в первом семестре, я провел небольшой мозговой штурм над своим проектом, но большая часть моего времени была посвящена Java. Первые два языка программирования, которые вы изучаете, всегда самые сложные (после этого значительно легче освоить новые), и, поскольку они пришли из Python, Java сильно отличалась. Мне удалось заполучить копию учебника Java Университета Отаго для NCEA, их учебник Python был бесценным для изучения Python, а учебник Java был даже лучше.

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

Решать проблему

Хорошо, это сложная часть.

Проблема действительно существует? Есть ли уже готовое решение?

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

«Исследование рынка» заключалось не только в том, что я спрашивал своих сверстников за обедом, что они думают. Мне хотелось получить более точные результаты, поэтому я писал опросы и раздавал их широкому кругу людей. Даже создание приличного опроса — это целая наука сама по себе (учитывайте мой интерес к статистике и психологии), так что это был относительно трудоемкий процесс.

Кто ваши заинтересованные стороны?

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

Заинтересованные стороны — это те, для кого вы разрабатываете продукт. Мне нравится делить их на две группы: прямые и косвенные. «Прямые» заинтересованные стороны — это те, кто, как вы надеетесь, будет использовать продукт больше всего. В моем проекте непосредственными заинтересованными сторонами были студенты, проходящие курсы NCEA. «Косвенные» заинтересованные стороны — это такие люди, как родители, учителя и т. д. В основном это люди, которые могут не использовать продукт сами, но которые могут пропагандировать продукт своим детям/ученикам.

Одна из причин, по которой так важно иметь заинтересованные стороны, заключается в том, что вы хотите вовлекать их в процесс. Когда вы разрабатываете свой продукт, вам нужна частая обратная связь от них. Что делает это сложным, так это то, что иногда вы получаете обратную связь, которая противоречит вашим собственным идеям! К сожалению, иногда вы думаете, что у вас есть лучшая идея, но имеет больше смысла следовать тому, что хочет пользователь.

Проектирование

Хорошо, вы установили, что в вашем продукте есть потребность, и у вас есть представление о том, чего хотят ваши заинтересованные стороны. Пришло время для мозгового штурма.

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

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

Минимальный жизнеспособный продукт

Теперь, когда я был вооружен отзывами заинтересованных сторон и парой мозговых штурмов, пришло время решить, каким будет мой MVP (минимально жизнеспособный продукт). MVP — это, по сути, ваш запасной вариант. Это ваша цель «Я должен хотя бы зайти так далеко». Хорошо иметь MVP, потому что он дает вам продукт, который, как вы знаете, вы можете создать. Когда вы разрабатываете свой MVP, в то же время вы также должны записывать вещи, которые вы будете реализовывать дальше — считайте это вашими дополнительными целями.

Создание

Ну наконец то! Мы находимся на этапе «давайте-действительно-сделаем-что-то-сейчас»! Но на самом деле я снова погрузился в фазу дизайна примерно через неделю работы над программированием приложения. Мне не потребовалось много времени, чтобы понять, что да, я разработал то, как приложение будет вести себя, и у меня было смутное представление о том, как оно будет выглядеть, но я пропустил действительно важный шаг. Какой должна быть инфраструктура?

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

Методы тестирования

У этого есть две стороны: первая — с людьми, вторая — с кодом.

Итак, первый тест, который я провел, был на самом деле не с телефоном, а с бумагой («бумажное прототипирование»). Что я сделал, так это сделал макет приложения с помощью бумаги, и все было в масштабе. Затем я передал это заинтересованным сторонам с моим первоначальным планом того, как все будет устроено в приложении, и попросил их попробовать использовать «приложение». Всякий раз, когда они нажимали кнопку, я перемещал части, чтобы показать следующую страницу. Я сделал это, потому что кодирование первого макета заняло бы некоторое время, и это был более простой способ получить представление о непосредственных проблемах дизайна, которые возникнут у приложения. Это также означало, что я мог показать первую версию приложения тем же заинтересованным лицам, и они не были сразу знакомы с тем, как работает приложение. Этот подход работал на удивление хорошо и помог мне усовершенствовать мой дизайн, прежде чем реализовывать его с помощью кода, что значительно проще, чем писать код, а затем возвращаться и изменять его.

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

Документация и решения

Так что этот проект доставляет массу удовольствия, но помните, что вы также отправляете его на оценку, т. е. у вас есть много документации для написания. Каждое решение, которое вы принимаете на каждом этапе, должно быть обосновано и задокументировано. Войдет ли это в ваше окончательное представление или нет, не имеет значения, на данном этапе это для вашей собственной выгоды. Избавьте себя от боли, когда потом будете думать: «Почему я это сделал??»

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

Часть процесса принятия решений включает в себя общение с другими людьми. Нет, это не означает, что вам нужно получать подтверждение перед каждой строкой, которую вы пишете/забиваете гвоздь/припаиваете проволоку, только для более серьезных вещей. Иногда это вопрос разговора со стеной, потому что, когда вы объясняете это вслух, вдруг все становится ясно, а иногда вы действительно хотите поговорить с экспертом в этой области (или, по крайней мере, с кем-то, кто работал над чем-то подобным). Что касается меня, я обратился к нескольким людям. Я связался с профессорами компьютерных наук в местном университете, встретился с представителями местных компаний по разработке приложений и поговорил с несколькими друзьями из технической индустрии. Иногда это было для того, чтобы узнать о процессе разработки приложения, иногда это было буквально для того, чтобы «мой код сломался, и я не понимаю, что я делаю неправильно». Эти люди сыграли неоценимую роль в завершении проекта.

Ближе к концу проекта вы можете понять, что вы на самом деле хотите выдвинуть на рассмотрение. В итоге мне нужно было отправить почти 50 страниц работы, но, пожалуйста, не используйте это как руководство к тому, сколько вам нужно написать. Это варьируется от человека к человеку. Я твердо верю в то, что качество важнее количества, но я проделал большую работу над этим проектом! Так что оказалось, что эти 50 страниц были именно тем, что мне было нужно, чтобы всесторонне отчитаться о моем проекте.

Проиллюстрируйте, как ваш процесс соответствует реальному миру

У вас есть отличная возможность поработать над проектом, который может соответствовать тому, над чем кто-то действительно работал бы в отрасли, поэтому убедитесь, что вы определили, какой подход будет использовать этот «кто-то». С инженерной точки зрения это означает понимание разницы между каскадным и гибким подходами к управлению проектами (и всем, что между ними). Часть этого я узнала из чтения, большая часть — из разговоров с профессионалами отрасли.

Часто получайте обратную связь

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

Потраченное время

В основном это рассматривалось как совершенно другая тема, а потом и кое-что. Это было моим наивысшим приоритетом, в основном потому, что было очень интересно и весело работать! Я тратил на это несколько часов каждую неделю, чтобы максимально приблизиться к идеалу. Я не знаю, как это можно сравнить с другими людьми, но большая часть моей академической жизни была потрачена на этот проект. Учителям не понравится это слышать, но я на самом деле пропустил много школьного времени из-за этого проекта. Иногда я пропускал занятия, чтобы проводить больше времени в университете и получать отзывы о своем прогрессе. Но, конечно же, когда я вернулся, эта школьная работа всегда ждала меня, так что не думайте, что вы можете использовать это как возможность прогулять школу, потому что поверьте мне, когда я говорю, что это не сработает.

Как справиться с разочарованием

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

tl;dr;

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

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

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

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