Система грейдов разработчиков — back-end программист

back-end developer

Ранее, мы исследовали грейды в общем, порассуждали про хард скиллы и рассмотрели пример грейдов фулл-стек программиста.

В этой статье, нас интересуют грейды бэк-енд разработчика

Пример основного стека:

  • язык: PHP, Laravel, Codeigniter (язык программирования и фреймворки на нем: новый, современный и старый, легаси)
  • Основная база данных: MySQL, дополнительные: Sphinx, Redis
  • Сервера Linux, Nginx, PHP-FPM, Docker

А теперь — подробнее и с различением по уровням:

  1. Джуниор

Комментарии: принимаем на этот уровень новичков без значимого опыта. На этот уровень не подымаются по системе грейдов.

  1. Джуниор+
  • Базовые знания composer и фрейворк Laravel (на примере оформления цикла жизни http запроса)
  • знание git, gitflow, 
  • навыки работы с консолью linux

Комментарии: предполагается, что Laravel — основной фреймворк, на котором разрабатываются все новые задачи. Ну а систему контроля версий, тоже, нужно знать как можно раньше

  1. Джуниор++
  • Продвинутые знания Laravel: джобы, гейты, политики, посредники, composer пакеты, продвинутые знания в ОРМ в части родительских и полиморфных связей), 
  • знание Codeigniter на примере цикла жизни http запроса, включая основы безопастности передачи данных
  • понимание принципов юнит тестирования, архитектуры тонких контроллеров, принципов проектирования rest api

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

  1. Мидл
  • Разбирается в основном проекте на уровне, что может пояснять бизнес процессы коллегам
  • Принимать архитектурные решения. Связка 2 и больше таблиц для решения поставленных требовании
  • Нереляционная база данных, кеширование, Redis
  • юнит тестирование
  • понимание значения индексов MySQL, умение писать оптимальные сырые запросы (без ORM)

Комментарии: программист на уровне Мидл должен быть выше Джуна принципиально. Он может принимать «решения». Например, разрабатывать архитектуру небольших приложений или «фичи». Так же, он более самостоятелен в работе и, постепенно, становится экспертом в своей области. И владеет более сложными технологиями. Так как на этом грейде, речь была про архитектуру, добавляем хорошее знание баз данных.

  1. Мидл+
  • Приличная экспертиза в одном из проектов из экосистемы (наряду с основным проектом), уверенное выполнение задач
  • грамотное применение паттернов проектирования, 
  • работа с Docker, Docker-compose
  • хорошая база знаний чистого php (не в рамках фреймворков)
  • Придерживается принципов программирования: YAGNI (You Ain’t Gonna Need It)

Комментарии: полезные, современные бэкэнд технологии. Алгоритмы. Оптимальный код Экспертиза мидлов не ограничивается кодированием, т.е. активно применяет общепринятые принципы программирования и чистого кода

  1. Мидл++
  • Разбираться в бизнес-процессах одного из эко-системных продуктов на уровне чтобы передать знания
  • описание и дополнение статей  лучших практик в рамках проектов компаний
  • знание Manticore (Sphinx)
  • Jenkins (сборка проектов)
  • Придерживается принципам программирования: KISS (Keep It Simple, Stupid)

Комментарии: еще больше полезных и сложные технологии бэкенда, которые увеличивают гибкость реализации задач. Так же подымаются вопросы сборок, релизов, CI/CD

  1. Сеньор
  • Не менее 5 лет работы в программировании (включая предыдущий опыт)
  • Сильная экспертиза в следующих технологиях  и инструментах:
  • Linux server console / Nginx config
  • Написан новый крупный компонент (соизмеримый с проектом из микро-сервисной архитектуры) или проект, или сделан рефакторинг крупного компонента
  • Наставничество: ученик был повышен с Джуна+ или Джуна++ до Мидла
  • Придерживается принципам программирования: DRY (Don’t Repeat Yourself)

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

  1. Сеньор+
  • Сильная экспертиза в следующих технологиях  и инструментах: создание Composer-пакетов
  • Написан необходимый Composer-пакет для одного из наших модулей (или блока, который необходимо выделить в модуль). Подключение в нашем проекте
  • Написана статья об этом компоненте или того же уровня в общедоступном айти ресурсе с большой аудиторией (habr или чтото подобное) от корпоративного аккаунта, на этом грейде или ранее
  • Занимается релизами в проекте над которым работают 2+ человек
  • Наставник 2+ человек, делает код ревью их кода
  • Придерживается принципам программирования: SOLID

Комментарии: добавляем профильные, очень перспективные технологии, которые должны двинуть разработку за новые горизонты. Еще больше наставничества. А так же социальная активность от имени компании. Все в выигрыше.

  1. Сеньор++
  • Знание работы ядер фреймворков, задействованных в компании
  • Сильная экспертиза в CI/CD. Внедрение промывных процессов в разработке
  • Наставничество: ученик был повышен с Мидла до Мидла++
  • Выступление на айти конференции от лица компании по актуальной теме, на этом грейде или ранее

Комментарии: Уровень «бог программирования». Лидер мнений в компании и айти сфере. Еще больше взаимной пользы: и программисту, и компании

Как установить Redis на MAC системе с M1 (семейство процессоров M)

Чтобы установить Редис на Mac компьютер/ноутбук на процессоре M1, необходимо сделать следующее:

  • Открыть Терминал для ввода команд: Launchpad > Other > Terminal.
  • Установить Homebrew. Вводим следующую команду в Терминале и подтверждаем ввод Энтером:
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
  • Если, по окончанию успешного процесса установки увидите сообщение ошибки: Warning: /opt/homebrew/bin is not in your PATH. Необходимо добавить Homebrew в PATH (2е команды):
(echo; echo 'eval "$(/opt/homebrew/bin/brew shellenv)"') /Users/quest/.bash_profile 
eval "$(/opt/homebrew/bin/brew shellenv)"
  • Затем, обновляем Homebrew:
brew update
  • Теперь, мы готовы к непосредственной установке Редиса:
brew install redis
  • Когда установка будет завершена, стартуем сервис Redis:
brew services start redis
  • Чтобы проверить корректную установку, «пропингуем» сервис:
redis-cli ping

В ответе на нашу команду, если Редис установлен и запущен, мы увидим «PONG» в Терминале.

Это все. Мы установили, запустели и проверили установку Redis на вашем Mac M1.

How to install Redis on Mac with M1

You can follow these steps to install Redis on your Mac M1:

  • Open Terminal by going to Launchpad > Other > Terminal.
  • Install Homebrew by pasting this command in the Terminal and pressing Enter:
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
  • If you see error message: Warning: /opt/homebrew/bin is not in your PATH, run the following 2 commands:
(echo; echo 'eval "$(/opt/homebrew/bin/brew shellenv)"') /Users/quest/.bash_profile
eval "$(/opt/homebrew/bin/brew shellenv)"
  • Once Homebrew is installed, update it by running this command:
brew update
  • Now you can install Redis by running this command:
brew install redis
  • After the installation is complete, start the Redis server by running this command:
brew services start redis
  • To check if Redis is running, you can run the command:
 redis-cli ping 

If Redis is running, it will return «PONG» in the Terminal.

That’s it! Redis is now installed and running on your Mac M1.

Установка Redis на MacOS, Debian, Ubuntu, Centos

MacOS (Catalina)

(Если вам необходимо установить Redis на Mac c процессором семейства M — есть отдельная инструкция)

Открываем терминал (Terminal.app) и обновляем локальные пакеты:

> brew update

Устанавливаем Редис одной командой

> brew install redis

В процессе успешной установки увидим подобные сообщения:

$ brew install redis
==> Downloading https://homebrew.bintray.com/bottles/redis-5.0.6.catalina.bottle
==> Downloading from https://akamai.bintray.com/8a/8ae4fed5494daa20391ab16d4be0b
################################################################## 100.0%
==> Pouring redis-5.0.6.catalina.bottle.tar.gz
==> Caveats
To have launchd start redis now and restart at login:
brew services start redis
Or, if you don’t want/need a background service you can just run:
redis-server /usr/local/etc/redis.conf
==> Summary
/usr/local/Cellar/redis/5.0.6: 13 files, 3.1MB

Redis успешно установлен. Запустим процесс, чтобы он работал в бекграунде:

> brew services start redis

В случае успешного запуска увидим подобное сообщение:

==> Successfully started redis (label: homebrew.mxcl.redis)

Это все. Процесс установки и запуска завершен.
Проверим работоспособность запущенного редис-сервиса

redis-cli ping

Если видим вывод “PONG” значит все прошло успешно и редис готов к работе.

Linux (Debian, Ubuntu)

Открывает терминал, переходим в домашнюю папку для скачивания архива с Редисом:

$ cd ~/

Скачиваем архив с установочными файлами Redis (последняя стабильная версия):

$ curl -s -o redis-stable.tar.gz "http://download.redis.io/redis-stable.tar.gz"

Далее выполняем команды под рутом — командой получаем права:

$ sudo su

Создаем необходимую папку (флаг -p означает, что создаем ее только в случае если ее нету)

# mkdir -p /usr/local/lib/

И назначаем права

# chmod a+w /usr/local/lib/

Разархивирует в нее архив с файлами Редис:

# tar -C /usr/local/lib/ -xzf redis-stable.tar.gz

Удаляем файл архива — он нам больше не нужен

# rm redis-stable.tar.gz

Переходим в папку с файлами Редиса

# cd /usr/local/lib/redis-stable/

И устанавливаем его (так как это установочные файлы написанные на языке C)

# make && make install

Проверим уставлен ли Редис, выведя его версию

# redis-cli --version

Далее, как рекомендуется в официальной документации, запускаем скрипт конфигурирования. Перейдем в его папку

# cd /usr/local/lib/redis-stable/utils/

И запускаем его

# sh install_server.sh

В процессе работы скрипт будет задавать вопросы (например, на каком порте будет работать Редис сервер). Вполне достаточно оставлять ответы по умолчанию — жмем все время Enter.
В результате скрипт настроит редис, соберет конфигурации, сформирует и добавит сервис в автозагрузку
После этого можно запустить Редис командой

# service redis_6379 start

Linux (CentOS)

Открывает терминал, обновляем установленные пакеты (для некоторых версий может быть важно)

$ sudo yum -y update

Убеждаемся, что необходимые для установки Редис пакеты и утилиты установлены

$ sudo yum -y install scl-utils
$ sudo yum -y install centos-release-scl devtoolset-7 llvm-toolset-7
$ sudo scl enable devtoolset-7 llvm-toolset-7 bash
$ sudo yum -y install gcc gcc-c++ make

Переходим в домашнюю папку для скачивания архива с Редисом:

$ cd ~/

Скачиваем архив с установочными файлами Redis:

$ curl -s -o redis-stable.tar.gz "http://download.redis.io/redis-stable.tar.gz"

Далее выполняем команды под рутом — командой получаем права:

$ sudo su

Создаем необходимую папку (флаг -p означает, что создаем ее только в случае если ее нету)

# mkdir -p /usr/local/lib/

И назначаем права

# chmod a+w /usr/local/lib/

Разархивирует в нее архив с файлами Редис:

# tar -C /usr/local/lib/ -xzf redis-stable.tar.gz

Удаляем файл архива — он нам больше не нужен

# rm redis-stable.tar.gz

Переходим в папку с файлами Редиса

# cd /usr/local/lib/redis-stable/

И устанавливаем его (так как это установочные файлы написанные на языке C)

# make && make install

Проверим уставлен ли Редис, выведя его версию

# redis-cli --version

Если, при этом, будет выведено сообщение об ошибке “command not found” — необходимо добавить /usr/local/bin в переменную среды PATH таким образом

# export PATH="$PATH:/usr/local/bin"

И вновь проверить успешно ли установлен Редис, как описано выше
Далее, как рекомендуется в официальной документации, запускаем скрипт конфигурирования. Перейдем в его папку

# cd /usr/local/lib/redis-stable/utils/

И запускаем его

# sh install_server.sh

Если в процессе будет выведена ошибка ”… This system seems to use systemd. Please take a look at the provided example service unit files in this directory, and adapt and install them. Sorry! “ — необходимо внести небольшое изменение в скрипт установки install_server.sh:

# nano install_server.sh

Закомментировать следующие строки

# bail if this system is managed by systemd
# _pid_1_exe=»$(readlink -f /proc/1/exe)»
# if [ «${_pid_1_exe##*/}» = systemd ]
# then
# echo «This systems seems to use systemd.»
# echo «Please take a look at the provided example service unit files in this directory, and adapt and install them. Sorry!»
# exit 1
# fi
# unset _pid_1_exe

Сохранить файл и запустить его.
В процессе работы скрипт будет задавать вопросы (например, на каком порте будет работать Редис сервер). Вполне достаточно оставлять ответы по умолчанию — жмем все время Enter.
В результате скрипт настроит редис, сформирует конфигурации, сформирует и добавить сервис в автозагрузку
Проверим работу сервера
При этом сам сервис Редеем запускается командой

$ redis-cli

127.0.0.1:6379> ping
PONG

$ service redis_6379 start