Наверное каждый программист мечтал когда-то написать соцсеть, вот и я решил воплотить мечту в реальность, тем более была на то веская причина. Хотелось объединить ребят, которые учатся программировать, чтобы они могли обмениваться опытом, помогать друг-другу, делать совместные проекты. Так родилась идея MyTeamCode - соцсети, где ты можешь обучаться программированию на качественных курсах и тренироваться на стартапах в команде единомышленников.
Было много энтузиазма и совсем мало ресурсов: нужно было написать соцсеть одному за 2-3 месяца, выделить больше времени я не мог себе позволить - одними идеями сыт не будешь. Поэтому стояла задача максимально ускорить процесс. Вот что я для этого предпринял.
Шаг 1. Спроектировал Impact map
Как и хорошему дому - IT-стартапу нужен проект. Для этого мне нравится использовать технологию Impact Mapping'a, описанную в книге Гойко Аджича "Impact Mapping. Как повысить эффективность программных продуктов и проектов по их разработке". Эта технология позволяет:
- определиться с приоритетами
- проверить понимание целей и донести их до всех участников разработки
- визуализировать структуру проекта.
в итоге правильный план избавляет от переработки и экономит тысячи строк кода! Подробнее распишу процесс создания Impact map для MyTeamCode в отдельной статье.
Шаг 2. Нашёл шаблон дизайна
Мне нужно было экономить на чём угодно, но только не на внешнем виде проекта, но заказывать дизайн и качественную вёрстку это долго и дорого поэтому я принял решение купить готовый UI-кит. Обычно я ищу дизайн на http://themeforest.net/ . Если внимательно искать за 50$ там можно найти достойный вариант почти под любую задачу. В итоге нашёл качественный шаблон на Bootstrap 4 под схожую тематику с кучей полезных элементов.
Шаг 3. Визуальная вёрстка
Дальше начался кропотливый процесс доработки интерфейса под мои задачи. Я расставил приоритеты в BackLog'e и выделил основные интерфейсы, которые требовались для создания MVP (минимально жизнеспособного продукта).
В первую очередь нужно было сделать профиль пользователя и связанные с этим истории:
- просмотр профиля
- редактирование профиля
- регистрация
- авторизация
- восстановление пароля
Во вторую - каталог курсов, без них MyTeamCode не был бы продуктом. Ну и простенький макет статической страницы - чтобы передавать смыслы.
Всё остальное осталось на следующую итерацию, чтобы хватило ресурсов закончить продукт надо было отбросить всё, что можно отбросить.
Чтобы ускорить процесс совместил проектирование UX и вёрстку посредством Pinegrow.
Pinegrow выглядит конечно как интерфейс управления космолётом, но при должной сноровке оказывается вполне удобной и позволяет верстать html в 2-3 раза быстрее чем вручную даже с применением ZenCoding'a, впрочем ZenCoding у неё под капотом тоже есть, и я им активно пользовался если целесообразно было что-то поправить вручную. Самое главное, что в отличии от многих визуальных редакторов, Pinegrow может работать на базе Bootstrap 4 и поэтому выдаёт качественный код на выходе который прекрасно отображается на всех устройствах и легко правится в любых других редакторах кода.
Шаг 4. Написал MVP на Django
Наконец имея на руках impact map, back log, ui-кит и интерфейсы я приступил к программированию не прошло и пол года. Для максимальной скорости разработки выбрал Python, Django и PostgreSQL в качестве основной базы.
Я принял решение писать традиционное MPA (Multi Page Application), т.к. даже для меня, профессионала с 11-летним стажем быстрее писать на одной технологии, не смотря на то что я отлично знаю SPA (Singe Page Application) стек с Django Rest Fraemwork'ом и AngularJS или VueJS. Однако я спроектировал архитектуру MTC (MyTeamCode) так, чтобы в дальнейшем перейти на SPA с минимальными трудозатратами. Для этого всю бизнес-логику я поместил в модели и получил тонкие и красивые Generic Class Based View:
Придёт время и я перепишу клиентскую часть MyTeamCode на моём любимом VueJS.
А сейчас MVP готов, и мне нужно получить обратную связь от мира чтобы понять как развивать проект дальше.
И самое интересное: я записал разработку MVP MyTeamCode на видео, и сделал на основе этого курс в котором подробно показываю всё вышеперечисленное и даже даю доступ к исходникам MyTeamCode, чтобы Вы могли использовать приёмы оттуда в своих проектах! Получилось 38 часов видео-исходников.
Сейчас я всё это монтирую, но уже можно приобрести курс по предзаказу тем самым поддержать проект и получить скидку в 50%!
Купить курс и посмотреть то что у меня получилось Вы можете на сайте
https://myteamcode.ru/courses/id4/
Спасибо, что уделили мне время и дочитали эту статью до конца, пишите что Вы думаете о моём проекте в комментариях 🙏