Если у вас есть страсть к программированию, вы, вероятно, пережили этап своей карьеры, когда каждая блестящая новая игрушка была новым способом делать что-то. Если вы не использовали ‹вставьте JS-фреймворк здесь›, вы были старой школой — и вам следует не мешать молодежи. Ты тормозишь эволюцию, старик.

Я, конечно, знал, что это заблуждение: но одно дело повторять: «Не цепляйтесь за каждый новый фреймворк, старые вещи все еще работают!» своим сверстникам, но совсем другое дело почувствовать это. Так когда же я, в юности еще инженер, наконец, перестал увлекаться каждым новым фреймворком? Позвольте мне рассказать вам историю. История о микросервисах, бессонных ночах и возвращении в безопасное место.

Используйте ‹framework› или вы хромой

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

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

Мой секрет сохранения топлива в баке заключался в том, что я был очень взволнован всем этим; от Flutter, до Cloudflare Workers, до Pulumi и Hasura… Я хотел бы подчеркнуть, что это время не было потрачено впустую: я узнал много крутых способов делать вещи, о которых никогда бы даже не подумал, если бы не потратил время на исследование новые парадигмы и рамки.

Каждый новый проект, который я создавал, имел один и тот же запах: новинки — новый бэкенд NoSQL, новый язык запросов, новая среда тестирования. Я строил, чтобы учиться, а не строил, чтобы строить. Мой гитхаб — это пустошь полузаконченных проектов, в каждом из которых используется совершенно новый стек технологий. Этого достаточно, чтобы составить мнение, понравилось оно мне или нет.

Вы можете сделать это в свободное время: возможно, некоторые назовут меня сумасшедшим, возвращающимся домой с учебы/работы и возящимся с шаблонами в docker-compose.yaml . Но я подумал, что это круто и весело. Это было круто. Это было весело.

Было ли это продуктивно?

точно нет. Я закончил примерно 10% проектов, которые начал — изучение нового блестящего фреймворка было забавным, но в какой-то момент кто-то должен был сделать не очень веселую часть: написать модульные тесты, настроить CI/CD, собственно развернуть… Я научился много парадигм, но ничего не построил.

Подняв зеркало

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

Блестящие глаза и пушистый хвост, бэкенд-команда выбрала фреймворк на основе Scala. Я отвечал за интерфейс — к счастью, я не попался на удочку и выбрал то, с чем уже имел опыт. React.js с Typescript (конечно, было бы упущением сказать, что я опробовал новую среду тестирования и конвейер CI/CD!)

Выбор каркаса? Проверять. Крайний срок? 6 месяцев, частичная занятость. Очень просто.

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

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

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

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

SpringBoot спешит на помощь

Один из фреймворков, который я решил, был игрой стариков? Спрингбут. Я работал со springboot на своей первой стажировке; это не был унаследованный проект, но он определенно чувствовал себя таковым. Большой монолит — стандартные вещи Java, такие как Flyway, Hibernate, Spring Security и т. д. Оглядываясь назад? он казался старым, потому что был последовательным. Он сделал то, о чем мы его просили — немного медленно, но, тем не менее, выполнил.

Этому проекту нужна старая добрая последовательность. Такая последовательность, которую обеспечивает Youtube, поиск по названию фреймворка и получение 20 000 просмотров. Согласованность, которую обеспечивает копирование и вставка конвейера Github Action CI/CD. Такая последовательность, когда все тесты выглядят чертовски одинаково, потому что процесс настолько отточен, что количество футганов сведено к минимуму.

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

Итак, я стряхнул пыль со старого Spring Initalizr и занялся взломом.

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

Были ли мои сверстники довольны тем, что им пришлось вернуться к старой скучной весне? Нисколько. Они жаловались, что вся их тяжелая работа пропала; они помогали с серверной частью, записывая конечные точки REST так, как будто это их отчества, но это было неинтересно. Код был чрезвычайно прост в освоении — он делает именно то, что написано на банке, никакой магии здесь не скрывается (кроме, может быть, @autowired ).

Что другой разработчик сказал бэкэнд-команде? Это хорошо сказано, — ответил Кандид, — но мы должны возделывать наш сад.

На дворе 2022 год. Дайте мне любой проект. Что я буду оценивать в первую очередь?

Подходит ли Java? мы можем развернуть старое доброе приложение JVM? Можем ли мы приспособить к этой проблеме парадигму хорошего монолита?

Есть вещи, которые мне не нравятся в самой Java, несмотря на нулевую безопасность. Но любое место, где можно запустить jar, может запустить приложение, и поэтому я счастлив. (Иногда имеет смысл развернуть бинарный файл — что-то вроде CLI, я бы, наверное, использовал Rust для бинарных файлов в один клик.)

Повышение уровня кодирования

Спасибо, что являетесь частью нашего сообщества! Перед тем, как ты уйдешь:

  • 👏 Хлопайте за историю и подписывайтесь на автора 👉
  • 📰 Смотрите больше контента в публикации Level Up Coding
  • 🔔 Подписывайтесь на нас: Twitter | ЛинкедИн | "Новостная рассылка"

🚀👉 Присоединяйтесь к коллективу талантов Level Up и найдите прекрасную работу