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

Использование ActiveMQ или RabbitMQ для лохов. vanguardista использует Kafka и реализует источник событий (кроме того, что Kafka не поддерживает его). Вам нужны контейнеры и бессерверные пакеты поверх Kubernetes, если ваше дерьмо настоящее. Не забывайте быть сторонником облаков, агностиком облаков и жан-клодом, чтобы надрать задницы. Добавьте сюда какую-нибудь служебную сетку, потому что, как вы знаете, наличие разрыва цепи, безопасности, регулирования, мониторинга и всего прочего на уровне инфраструктуры меняет правила игры.

Вы непрерывно доставляете каждую минуту, A / B-тест, модульный тест, дымовой тест, NFR-тест, интеграционный тест и никогда не протестуете. Если для вас концепция архитектуры микросервисов применяется только к бэкэнду, которого вы не догоняете, то существует тенденция к созданию модульных микро-интерфейсов, которые соединяются в каком-нибудь модном SPA.

Насколько свободно вы говорите с ecmascript? обязательно знайте его от версии 1 до 9 (даже никогда не выпускавшейся версии 4.0). Javascript - это новая сборка, вам следует использовать машинописный текст для масштабирования и привыкнуть к AngularJS, чтобы иметь дело с наследием, которое необходимо перенести на ReactJS. А пока наслаждайтесь ностальгическими воспоминаниями о том, когда ваш позвоночник был сломан каким-то нокаутом.

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

Никогда не забывайте СУХОЙ, но знайте, когда можно быть ВЛАЖНЫМ. Будьте ТВЕРДЫМИ, наслаждайтесь CRUD, вылечитесь от анемии в вашем домене и ОТДЫХАЙТЕ (полностью). Игнорируйте значения ключа REST (ful) в целях повышения производительности и не забудьте преждевременно оптимизировать эти надоедливые лишние обходы.
Будьте гибкими. Никогда не будь хрупким

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

Шаблоны GoF должны быть вашей библией, но не останавливайтесь на достигнутом, продолжайте CQS и обязательно используйте CQRS, если вы не хотите, чтобы вас облажала случайная сложность. Убедитесь, что модель-актер - это нечто большее, чем фетиш вашей подруги.

Создавайте конвейеры CI / CD, конвейеры приложений, фильтры, конвейеры и прочее. Реализуйте паттерн Сага. Но настоящая вещь, определенная бумагой 1987 года, а не распространенный кошмар хореографии сообщений.
И никогда не забывай, не будь лохом.

Как (ДЕЙСТВИТЕЛЬНО) оставаться актуальным разработчиком программного обеспечения.

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

1. Не сосредотачивайтесь на технологиях, сосредоточьтесь на принципах.

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

Например, в каждой базе данных есть механизмы для сохранения данных, создания индексов, репликации, обеспечения атомарных операций и некоторого уровня согласованности (ACID). Изучение структур данных, таких как b-дерево или хеш-таблицы, позволяет понять, как выполняется индексация, и какие компромиссы в этом проблемном пространстве. Понимая теорему CAP, вы можете определить ключевые значения, которые подчеркиваются для некоторых поставщиков баз данных в вопросе согласованности и доступности. Глядя на архитектуру журнала транзакций из реляционной базы данных, можно найти архитектуру, основанную на событиях (гораздо более старую, чем шумиха вокруг Грега Янга). Вы всегда можете поискать любую базу данных через призму теоремы CAP.

Другой пример фундаментальных принципов - это модели параллелизма, представленные на любом языке. Код выполняется в средах, которые обеспечивают контекст выполнения. Модель асинхронного программирования позволяет писать асинхронный код, используя синтаксический сахар, который компилятор переводит в строительные блоки среды. Понимание основных строительных блоков, которые предоставляет любая операционная система, таких как потоки, процессы, порты завершения ввода-вывода или объекты синхронизации, позволяет лучше понять эти модели. Понимая эти фундаментальные примитивы и шаблоны проектирования, такие как фьючерсы или обещания, у вас есть очень прочная база для понимания этих моделей, лежащих в основе таких языков, как C #, kotlin, Golang и т. Д.

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

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

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

2 - Эффект Линди

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

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

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

Рекомендация:

Операционные системы

Виртуальные среды

Шаблоны проектирования

Архитектура программного обеспечения

Практики программирования

CI/CD