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

Затем вы делаете паузу.

Как вы выбираете технологии для обзора? Как начать их изучать? Как стать достаточно экспертом, чтобы сделать выбор?

Шаг 1 - Изучите свои варианты

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

Как выбрать на таком переполненном рынке? Я задаю несколько ключевых вопросов:

  1. Это открытый исходный код с разрешающей лицензией? Современные стеки с открытым исходным кодом превосходны, и нет особых причин рисковать привязкой к поставщику.
  2. Является ли оно устоявшимся, зрелым и активно разрабатываемым? Если я ищу приложение, которое можно поддерживать и после завершения проекта, это очень важно. Если в будущем к нему вернусь я или моя команда, тем более.
  3. Делает ли он все, что вам нужно? Нет смысла использовать новую технологию, которая не поможет вам доставлять ваше приложение. Более того, если технология делает гораздо больше, чем вам нужно, время обучения и текущее обслуживание могут быть нежелательными. Не забывая о том, что сочетание различных технологий, связанных вместе, также может привести к неприятностям; думайте наперед, учитывайте среднесрочные и долгосрочные потребности, а не только то, что вам нужно сейчас.
  4. Есть ли хорошая документация? Если разработчики технологии не могут легко объяснить, как она работает, на что вы надеетесь, как сторонний наблюдатель? Хорошие, основополагающие, документационные и простые руководства на вес золота.
  5. Есть ли активное сообщество? Любой разработчик знает, что поисковые системы - ваши друзья. В Stack Overflow полно павших товарищей, ищущих помощи, а другие поднимают их на ноги. Легче учиться у тех, кто упал до тебя, чем у того, кто упал.
  6. Есть ли в наличии группа опытных разработчиков? Если приложение станет успешным, команде необходимо будет расти, чтобы поддерживать его и поддерживать новые функции. Если вы выберете эзотерическое решение, это может привести к неуправляемому приложению в будущем. Некоторые приложения, возможно, даже придется переписать, чтобы они продолжали работать.
  7. Является ли технология самоуверенной или настраиваемой? Я возражаю и скажу, что у меня есть время только на самоуверенные технологии, если нет очень веской причины для гибкости. Я достаточно опытен (стары?), Чтобы видеть, как многие приложения превратились в беспорядок из вчерашних технологий, и это того не стоит. Если нет необходимых убийственных функций, доверяйте тем, кто работал до вас - их мнения, скорее всего, основывались на опыте.
  8. Соответствует ли технология основным технологиям приложений? В зависимости от того, насколько приложение «зеленое», это может относиться в большей или меньшей степени. Например, вы можете решить, что Java и TypeScript необходимы, что исключит многие другие варианты.
  9. Что думают ваши коллеги-разработчики? Возможно, вы знаете других участников вашей сети, которые являются специалистами в данной области. У них может быть очень твердое мнение о том, что хорошо, что плохо или что некрасиво. Часто лестно спрашивать ваше мнение - приятно знать, что его ценят, - и вы можете узнать кое-что важное.

Этот контрольный список должен сузить варианты до небольшой горстки, вашего короткого списка. Может, даже один, если повезет.

Шаг 2. Заполните учебное приложение

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

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

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

Шаг 3 - Настройте учебное приложение

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

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

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

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

В зависимости от того, сколько у вас опыта, этот процесс может быть долгим или коротким. Вы можете быстро увидеть параллели с уже знакомыми вам технологиями. Архитектура может быть похожей, и могут присутствовать хорошо проторенные шаблоны проектирования. Это сразу же успокоит вас и позволит сделать полезные предположения о том, как это работает.

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

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

Шаг 4 - Разверните приложение

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

Я начинаю с рассмотрения того, насколько легко упаковать и поместить в контейнеры. Если есть серверный компонент, легко ли поместить его в контейнер Docker? Это сразу же откроет вам целый мир облачных возможностей. После создания контейнера я знаю, что могу легко вставить его в конвейер CI / CD.

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

Шаг 5 - Просмотрите свой короткий список технологий

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

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

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

Резюме

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