Новый проект
Вас посетила гениальная идея нового проекта.
Всю рабочую неделю вы ходили размышляя о том, каким классным он будет и какие фичи вы бы в него добавили.
И вот наступил долгожданный день выходного, вы с улыбкой на лице садитесь за клавиатуру, чтобы создать новый проект.
Так, стоп. А что мы выберем для проекта? 😕
Выбор технологий дома и на работе
С существующими проектами всё просто: вы используете те технологии, которые уже есть в проекте, иногда что-то добавляя и в редких случаях заменяя одну технологию на другую.
С проектами на работе тоже довольно просто, скорее всего в команде принято делать проекты на определённом стеке, его и берём.
Но вот личный проект, это другое дело. Тут полная свобода.
У вас куча экспертизы в различных технологиях, и вы можете использовать любую из них.
Что выбрать?
А может быть выбрать вон то хайповое что ещё не пробовали?
Или взять то на чём привыкли?
Сомнения, сомнения
Иногда эти сомнения могут завести вас в тупик, и вы получите аналитический паралич и не сдвинетесь с места.
Лучше не спрашивайте совета у коллег: выбор технологий это любимая тема программистов, и у каждого будет своё собственное мнение.
Наслушавшись советов вы окажетесь в ещё больших сомнениях чем раньше.
Зачем проект?
Начните сначала, задайте себе вопрос: а зачем вообще мне этот проект?
Какой результат я хочу получить? Я его делаю чтобы что?
Например
- Поразить коллег крутизной своих навыков
- Заработать дополнительные деньги
- Прокачаться в создании проектов
- Развить навыки разработки
- Освоить новую технологию
- Решить проблему которая мешает лично вам
- Бросить вызов самому себе, узнать “получится ли сделать?”
Это только примеры. Но они укладываются в две общие категории:
- Важен результат, то есть работающий продукт
- Важен процесс и побочный эффект, такой как “освоить технологию” или “прокачать навыки”
Проверьте себя. К каким категориям относятся перечисленные пункты из примера выше?
Если важен процесс
Если целью является прокачка навыков, если вам важнее “попробовать” чем довести продукт до конца:
Выбирайте те технологии, которые вам наиболее интересны.
Вы делаете этот проект ради фана, ради обучения. Возьмите уже наконец ту технологию X на которую давно уже заглядываетесь.
Вы получите отличный опыт, опробуете новое, развлечётесь и возможно прокачаете свои навыки.
При этом не так важно, состоится ли релиз, выйдет ли продукт “в свет”. Вы уже извлекли пользу.
Можете бросить его как только надоест.
Если важен результат
Если целью является решение проблемы или зарабатывание денег, то критичным будет релиз продукта.
Выбирайте самое привычное, то что вы знаете вдоль и поперёк.
Например, для веб-проекта я выберу PHP и MySQL, но не потому что не умею ничего другого, а потому что именно этим стеком владею лучше всего.
Все подводные камни я изучил, опыт и шишки набил. Реализация проекта на известном стеке технологий будет простым и привычным делом.
Да, это будет поскучнее, зато результат получу быстро, нигде не застряну.
Время — это самое критичное, что влияет на успех личных проектов.
Энтузиазм который в самом начале вас драйвит будет угасать с каждым днём. Это неизбежно.
Лучше предвидеть угасание энтузиазма заранее и сократить весь цикл разработки за счёт привычных технологий.
Придётся сознательно сдерживать себя от “вот бы и эту штуку затащить”, но оно того стоит.
Тем самым вы повысите шансы довести дело до конца.
Не смешивать
Не стоит смешивать эти подходы и пытаться поймать двух зайцев, одновременно пытаясь изучить новое и довести проект до релиза.
Вы просто убиваете шансы на успех с каждой новой неизученной технологией которую добавляете в проект.
Увеличиваете риск, что проект так и не будет сделан или затраты на него будут непомерны.
Лучше придерживайтесь правила, определите конечную цель и выберите один из двух путей.
Удачи!