Мой путь в IT начался не с модных фреймворков, а с оранжевой коробочки Ubuntu, которую в эпоху медленного и дорогого интернета присылали бесплатно на компакт-дисках по почте.
Этот «ламповый» старт определил мой подход на годы вперед: фундамент экспертизы закладывался в системном администрировании (linux и все что с ним связано) и в техподдержке провайдера, где я оживлял ADSL-соединения магическими манипуляциями на D-Link и всерьез готовился к сертификации Cisco. И хотя карьера в итоге ушла в сторону разработки и SRE, глубокое понимание работы сети (начиная с L2-уровня модели OSI) до сих пор остается моим главным читом при проектировании сложной инфраструктуры и траблшутинге.
За 10+ лет в индустрии я прошел путь от реализации как маленьких систем, так и сложных высоконагруженных проектов, простой которых в течение пары минут превращается в большую новость, которую публикуют все основные новостные каналы.
Мой основной фокус — создание и поддержка систем с десятками миллионов активных пользователей, где стабильность является критическим приоритетом. Про безопасность тоже важно не забывать.
Мой опыт включает не только написание кода на Go и Python, но и глубокий тюнинг производительности, оптимизацию SLI под большими нагрузками и автоматизацию процессов в том смысле, который обычно имеют в виду под DevOps.
Как инженер, я сторонник подхода «no magic»: если система ведет себя странно, я иду вглубь — к системным вызовам, анализу сетевых пакетов и исследованию поведения ядра. Поэтому я так же вкладываюсь в изучении экосистемы k8s, что дополнительно подтвердил (в первую очередь для себя) сертификатами CKA (Certified Kubernetes Administrator) и CKS (Certified Kubernetes Security Specialist), что позволяет мне проектировать отказоустойчивые среды на базе Kubernetes.
Помимо разработки, я активно занимаюсь помощью в найме и менторством, обучая инженеров более надежным подходам к проектированию устойчивых к сбоям систем — всему тому, что помогает превратить просто «работающий» код в enterprise-решение.
P.S. Настоящий эксперт должен понимать не только свой фреймворк/код, но и то, как его код живет внутри операционной системы и как байтики летят по проводам.
Это может показаться излишним и так оно и есть, пока все идеально работает. Но как только что-то начинается сбоить, хорошо бы понимать, сколько слоев абстракции есть под исполняемым кодом и как посмотреть внутрь каждого из них.
Observability важно на всех уровнях, вплоть до счетчиков ошибок на физическом уровне у сетевых карт.