Фейерверк (CC BY-SA 2.0) от spi516

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

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

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

Создайте собственный технологический радарwww.thoughtworks.com/insights/blog/build-your-own-technology-radar

Пытаясь уловить направление моей карьеры и увлечений, я последовал этому совету и создал свой первый персональный радар.

TL;DR

Сначала краткий обзор моего списка «Введение в 2018», который, кажется, разделен на три широкие категории.

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

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

Разнообразие навыков
Навыки, которые можно было бы рассматривать как «параллельный путь» к моей повседневной жизни, но которые я должен иметь приличную оценку — даже если только на самом базовом уровне. Например, разработка под Android или Alexa.

Теперь о радаре полностью.

Методы и теория

Слишком много огурцов!

удерживать

BDD и, в частности, Cucumber — отличные инструменты, если их использовать в правильном контексте. Однако наличие слишком большого количества тестов или создание несфокусированных тестов может привести к тому, что набор тестов будет медленным, хрупким и неудобным в сопровождении. В дополнение к этому, отсутствие ключевого заинтересованного лица, вовлеченного в определение и понимание сценариев, несколько лишает смысла. Я лично постараюсь использовать эту технику/инструмент более разумно в будущем.

Глубокое обучение

пробная версия

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

Сервисная сетка

оценить

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

Хаос Инжиниринг

оценить

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

Записи о решениях по облегченной архитектуре

оценить

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

Тестирование потребительских контрактов

пробная версия

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

оценить

Относительно старый метод машинного обучения, использующий цикл обратной связи для обучения программного агента в конкретной среде реального времени. Совсем недавно в сочетании с глубоким обучением были показаны некоторые очень интересные приложения, например. знаменитые игровые агенты Deep Mind Atari.

Структуры данных и алгоритмы

принять

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

Статистика

принять

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

Линейная алгебра

принять

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

Дизайн, управляемый доменом

принять

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

Тензорный поток

пробная версия

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

Scikit Learn

пробная версия

Scikit-learn — бесплатная библиотека машинного обучения. Он включает в себя различные алгоритмы классификации, регрессии и кластеризации, включая машины опорных векторов, случайные леса, повышение градиента, k-means и DBSCAN, и предназначен для взаимодействия с числовыми и научными библиотеками Python NumPy и SciPy.

Керас

оценить

Keras — это высокоуровневый интерфейс на Python для построения нейронных сетей. Keras имеет открытый исходный код и работает поверх TensorFlow или Theano. Он предоставляет удивительно простой интерфейс для создания мощных алгоритмов глубокого обучения для обучения на процессорах или графических процессорах.

Юпитер

принять

Повышенный интерес к машинному обучению — наряду с появлением Python в качестве предпочтительного языка программирования для практиков в этой области — привлек особое внимание к блокнотам Python, и самым популярным из них является Jupyter.

Открытая трассировка

оценить

Открытый стандарт распределенной трассировки, независимый от поставщика.

Апач Спарк

удерживать

Apache Spark™ — это быстрый универсальный механизм для крупномасштабной обработки данных. Несмотря на то, что в правильных обстоятельствах это все еще отличный инструмент, я решил сосредоточить свое внимание на изучении менее крупномасштабных фреймворков для обработки данных.

Панды

принять

pandas — это библиотека с открытым исходным кодом, предоставляющая высокопроизводительные, простые в использовании структуры данных и инструменты анализа данных для языка программирования Python.

Нампи

принять

NumPy — это основной пакет для научных вычислений с помощью Python.

Платформы

АМС

принять

Очевидно, что AWS не является чем-то новым, но лично я слишком долго пренебрегал более активным взаимодействием с платформой. Вот «заметка для себя», чтобы копнуть и понять это немного больше.

Бессерверный

пробная версия

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

Андроид

пробная версия

В том же ключе, что и моя запись AWS, Android (или мобильная разработка в целом) должен быть понятен на базовом уровне любому опытному разработчику программного обеспечения — еще одна задача для личных проектов.

Алекса

пробная версия

Голосовые платформы на данный момент очень популярны. Будь то причуда или реальная тенденция, стоит застрять в личном проекте на платформе Alexa для некоторого разнообразия навыков.

Создатель мудрецов

оценить

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

Каггл

принять

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

Кубернетес

принять

Kubernetes — это система с открытым исходным кодом для автоматизации развертывания, масштабирования и управления контейнерными приложениями.

Докер

принять

Docker — ведущая в мире платформа контейнеризации — мне особо нечего добавить, просто в настоящее время она необходима для серверной разработки.

Языки

Котлин

пробная версия

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

Питон 2

удерживать

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

Питон 3

принять

См. Python 2

Скала

удерживать

В течение многих лет после моей первоначальной одержимости Clojure я считал Scala своим функциональным спасителем от разочаровывающей и многословной Java. Несмотря на то, что с этим языком было много веселых моментов, присущая ему сложность и (кажущееся) падение популярности заставили меня рассмотреть растущие альтернативы — см. Kotlin.

R

удерживать

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

Действующая Java 8/9

принять

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

Первоначально опубликовано на сайте lucasmatt.com 1 января 2018 г.