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

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

Веб-фреймворк

Это может быть Ruby on Rails, Node.js, PHP, Phoenix, Perfect и т. Д., Это не имеет особого значения. Дело здесь в том, что должна делать веб-платформа - она ​​создает, читает, обновляет и удаляет (CRUD) данные из базы данных в ответ на заданный HTTP-запрос и предоставляет подходящий ответ. Он также может запускать фоновые задачи или добавлять данные в очередь / поток для обработки позже.

Средство выполнения задач / планировщик

Как упоминалось выше, средство выполнения задач подходит для задач, которые необходимо запускать в какой-то момент в будущем или по расписанию. Это может быть Cron, sidekiq, Verk, даже планировщик задач Windows. Идея здесь состоит в том, чтобы узнать, что некоторые задачи должны выполняться относительно самого времени или относительно запроса, но могут быть выполнены позже. Например, обработка загрузки файла; ответ будет мы получили ваш файл, спасибо!, но фоновой задачей может быть фактическая обработка файла и, возможно, отправка электронного письма после завершения обработки.

Программное обеспечение очереди

Это может быть RabbitMQ, Amazon SQS или Хранилище очередей / шина сообщений Azure. Идея здесь в том, что некоторое программное обеспечение на сервере называется производителями, и они помещают данные в очередь для использования потребителями. Это позволяет запускать или останавливать больше потребителей в зависимости от нагрузки на ваш сервер.

Программное обеспечение для потоковой передачи

Подобно постановке в очередь, когда элементы, попадающие в очередь, удаляются потребителями, программное обеспечение потоковой передачи позволяет потокам данных течь, как река, и многие потребители могут реагировать на то, что они видят, проходя мимо. Это может быть Kafka, Amazon Kinesis и т. Д. Разница между очередью и потоком также важна, но сейчас не время говорить об этом.

Фреймворк для внешнего интерфейса

Это может быть EmberJS, Angular, React + Redux, Vue.js, даже jQuery! Идея знакомства с фреймворком внешнего интерфейса состоит в том, чтобы изучить такие интересные уроки, как особенности браузера, трансформация / компиляция языков, веб-отладка / проверка, адаптивный дизайн, де / сериализация данных и UI / автоматическое тестирование.

Платформа для мобильных приложений

Хотя это и не обязательно, я думаю, было бы полезно изучить хотя бы одну мобильную платформу, такую ​​как iOS, Android или Windows 10 Phone. Он также может включать Cordova, React Native или даже Unity. Мобильное программирование многое учит программированию с техническими ограничениями и взвешиванию множества компромиссов пользовательского опыта, таких как небольшой размер экрана, время автономной работы и конфиденциальность. Поддержка IDE также создает приятную среду для работы.

Язык сценариев

Бывают случаи, когда вам нужно что-то быстрое и грязное для небольшого скриптинга. Это может быть AppleScript, Bash, Powershell, Python или Ruby. Просто что-то, чтобы автоматизировать задачу на раз или запускать время от времени с помощью Cron или аналогичного. Каждый хороший разработчик должен знать, когда и где написать что-нибудь быстрое и хитрое, и знать, как это сделать, - это здорово.

Реляционная база данных

Это может быть MySQL, PostgreSQL, MS SQL Server или что-то подобное. Идея здесь - узнать, как работают реляционные базы данных, как хранятся и ищутся записи. Было бы хорошо, если бы вы узнали о преимуществах хранимых процедур по сравнению с процедурами кода и о том, какие оптимизации можно сделать при хранении и извлечении.

Нереляционная база данных

Их становится все больше и больше, и каждый из них оптимизирован для выполнения определенной задачи, например, ElasticSearch для поиска или Druid для данных на основе времени. Сюда также могут входить базы данных NoSQL более общего назначения, такие как MongoDB или DynamoDB. Вы должны попытаться понять разницу между базами данных NoSQL и базами данных SQL (нереляционными и реляционными).

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

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

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

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