Что должно быть в арсенале разработчика?

Хороший разработчик должне знать многое.

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

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

Web-фреймворк

Не важно, будет ли это Ruby on Rails, Node.js, PHP, Phoenix или Perfect. Главное — понимание того, что должен делать фреймворк – создавать, читать, обновлять и удалять данные из базы данных в ответ на данный по HTTP запрос и обеспечивать подходящий ответ. Он также может запускать фоновые задачи или добавлять данные в очередь/поток для последующей обработки.

Менеджер/планировщик задач

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

Программы для «очередизации»

Это может быть RabbitMQ, Amazon SQS или Azure Queue Storage/Message Bus. Идея в том, что есть некоторое ПО бэкенда, называемое «производители»; оно ставит в очередь данные, которые должны получить «потребители». Это позволяет вам включать/выключать потребителей в зависимости от загрузки вашего сервера.

Потоковое ПО

По аналогии с «очередизацией», где элементы, поставленные в очередь, удаляются потребителями, потоковые программы позволяют блобам данных течь подобно реке, а множество потребителей могут реагировать на то, что видят в этом течении. Это могут быть 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. Просто что-то для автоматизации единичной или запускаемой по watches lux replica swiss eta movements расписанию задачи. Каждый хороший разработчик должен знать, где и когда можно написать что-то на скорую руку, и как сделать это хорошо.

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

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

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

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

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


[customscript]techrocks_custom_after_post_html[/customscript]
[customscript]techrocks_custom_script[/customscript]

1 комментарий к “Что должно быть в арсенале разработчика?”

Оставьте комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Прокрутить вверх