На шестой неделе выездного курса — на полпути — мы впервые попробовали групповые проекты, и я твердо решил, что мой опыт заслуживает публикации в блоге! У меня была самая большая неделя обучения за все время, с ее справедливой долей взлетов и падений.

В понедельник, изучив Javascript в первый раз на пятой неделе и после выходных, пытаясь не совсем безуспешно начать соревнование по боулингу, мы рассказали о важных вещах, которые следует учитывать при работе в команде. Наш тренер объяснил, что это сильно отличается от индивидуальной работы и работы в парах, и самое главное, что целью недели был не результат проектов, а опыт командной работы. Должен сказать, что я действительно недооценивал, насколько сложно это может быть иногда, и почти насмехался над половиной «наиболее частых вещей, которые идут не так», думая, что я буду больше бороться с техническими аспектами, а не столько с «работой». вместе'.

Подводя итог нашему брифу — MakersBnB:

Характеристики заголовка:

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

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

Затем нас случайным образом распределили на команды по 4 человека и попросили быстро придумать MVP для проекта. Это минимально жизнеспособный продукт; самое маленькое, что реализует основную идею: т.е. если ваша спецификация требует автомобиль, не стройте колеса в первую неделю, двери во вторую неделю и т. д. Заказчик не может это попробовать! Основная функция автомобиля — добраться из пункта А в пункт Б, так что вместо колес — в первую неделю сконструируйте скейтборд, а затем развивайте его. Мы решили, что пользователи сайта должны сначала иметь возможность разместить объявление и арендовать помещение. Итак, мы начали.

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

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

В течение недели мы столкнулись с несколькими серьезными проблемами и многому научились. Основные вещи, которые я бы сказал, были:

  • Важность знания Git:

Я бы посоветовал всем действительно разобраться с этим, прежде чем приступать к проекту, если они не хотят возможности удалить весь свой прогресс (или, что еще хуже, чей-то еще!) За один раз. Филиалы также полностью жизненно важны! Проверки кода — мы не вникали в это должным образом до конца недели, когда по-настоящему поняли его ценность. Если кто-то создает ветку и делает запрос на вытягивание, крайне важно, чтобы другой член команды, который не работал с этим человеком, сделал слияние. Они могут проверить читабельность кода — и если есть что-то, чем они недовольны, они могут прокомментировать, но на самом деле не вносят изменения в код сами — таким образом, никто не изменит код без их ведома — и никто не сможет слить их собственный код. Это звучит так просто, но неизбежно легко впасть в плохие привычки и начать объединять свой собственный код, чтобы двигаться вперед быстрее.

  • Принятие того, что наши идеи не всегда являются правильными идеями, и что голосование — действительно единственный путь вперед.
  • Делать перерывы — совершенно безумно не делать этого. Все наши лучшие идеи пришли сразу после перерыва. Слишком легко сгореть, не заметив этого.
  • Хорошее планирование — мы слишком стремились начать проект с самого начала — чтобы написать код — и мы не спланировали должным образом, как будет развиваться наш проект — это сделало первый день довольно сложным! Мы также были очень нереалистичны — мы думали, что сможем сделать слишком много за слишком короткое время, и поэтому наши цели всегда казались недостижимыми.

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