Познакомились с Software Engineer из компании Alif Tech и поговорили о ежедневных рабочих обязанностях, навыках, а также попросили поделиться советами для начинающих.
Рамиль Гарипов, 33 года, город — Ташкент, Software Engineer в Alif Tech, @RamzeshHalifionakis
Как пришел в профессию
Мне всегда было интересно понять, как сделан тот или иной сайт, приложение или софт на десктопе. Попробовав себя в этом, понял, что это мое. Веб-программированием занимаюсь давно, с 2007 года. Для меня это было что-то вроде хобби. Работал соло-фрилансером на фуллстеке, создавал pet-проекты. Основная деятельность не была связана с IT до прихода в Alif Tech.
Считаю, что программирование — это творческий процесс. Круто создавать продукт, имея из инструментария лишь компьютер и собственный ум.
Зачем нужен Software Engineer
Основная обязанность Software Engineer — нести ответственность за архитектурные решения, реализованные в проекте.
Я работаю в сфере, где IT решает проблемы бизнеса и не может существовать в разрыве от него. Поэтому ежедневные задачи, которые стоят перед всеми членами команды, направлены на то, чтобы помочь компаниям. Один из примеров — автоматизация процессов или высвобождение человеческих ресурсов.
Software Engineer нужен для того, чтобы в проекте писался чистый оптимальный код. Если такого специалиста не будет, система станет нестабильной. Начнутся проблемы с масштабированием, а разработка новых фич — функций или особенностей, будет занимать слишком много времени.
О работе Software Engineer
Большую часть моего рабочего времени занимает общение с компаниями-заказчиками и командой. На мне лежит ответственность за то, чтобы перевести нужды бизнеса в рабочий код.
Компании, которые обращаются к нам, не всегда знают все тонкости существующей системы. Поэтому моя обязанность — находить оптимальные способы решения задач.
Любая компания, IT-продукт которой приносит прибыль и развивается, нуждается в Software Engineer
Следующий шаг — внедрение этого решения в существующий функционал. Для этого мы с командой создаем план пошаговой разработки и выкладки новых функций. Из этого вытекают задачи, которые должны будут реализовать разработчики.
Перед каждой выкладкой на боевой сервер я проверяю написанный код. Сам занимаюсь кодингом, но беру в основном необычные задачи.
Одно из главных преимуществ работы Software Engineer — возможность влиять и делать что-то масштабное, полезное и значимое для людей. Это большая мотивация. При этом чем больше масштаб проекта, тем больше нервничаешь.
Любая компания, IT-продукт которой приносит прибыль и развивается, нуждается в Software Engineer.
Заработная плата специалиста зависит от опыта и скиллов. Средняя цифра по Узбекистану — 1500-2000 $ в месяц. Разброс большой. Есть хорошие профессионалы, зарабатывающие до 50 000$.
Где учиться на Software Engineer
Есть много хороших книг. Несколько из них, которые я советую прочесть:
— Clean Code, R.Martin
— Domain Driven Design, E.Evans
— Gangs Of Four
— Microservices Patterns, C.Richardson
— Building Microservices, S.Newman.
Думаю, что максимальную пользу можно получить, работая в команде над долгосрочным проектом. Хорошо, если вас будет направлять опытный ментор. Он сэкономит ваше время на мелких ошибках.
Вот что должен знать хороший Software Engineer:
— логика
— язык программирования и его тонкости
— базы данных
— фреймворки
— алгоритмы
— принципы разработки
— паттерны проектирования
— технологи и железо.
Советы начинающим
Советую начать с создания «долгосрочного» софта, который в дальнейшем планируется поддерживать, допиливать, улучшать. С таким подходом разработчик более осознанно подходит к проектированию архитектуры. Потому что каждая новая фича — как новый этаж в здании. При хорошем фундаменте высота здания — не проблема.