Когда приходят с запросом «добавьте кнопку для выгрузки отчета», программист всегда оценивает, какой объем работы стоит за небольшой иконкой. Некоторые решения настолько негибкие, что для добавления простого функционала необходима полная переработка. Поэтому написание кода – завершающий этап. Первое, что необходимо сделать разработчику, – тщательно продумать архитектуру: вникнуть в суть, взвесить разные подходы, проанализировать способы организации баз данных, синхронизацию с продуктами, которые используются в компании. И обязательно спрогнозировать, как трансформируются запросы заказчиков через несколько лет, какой функционал понадобится, как изменится взаимодействие с другими системами. Это большая аналитическая работа.
У меня есть тетрадь, в которую записываю идеи, приходящие в голову по текущим задачам. Все страницы исписаны стрелочками, блок-схемами, короткими пояснениями. Называю это записками сумасшедшего: через пару месяцев после сдачи проекта не сразу могу разобраться в логических связях.
Какими качествами должен обладать программист? Упорством. Иногда заказчик приходит с нечетким запросом и вместе с ним нужно терпеливо идти к четкому ТЗ. Если что-то не получается, нельзя опускать руки, пока не отработаешь все рабочие гипотезы. Иногда в голове прокручивается так много сценариев, что сложно заснуть. Поэтому еще один важный навык – умение отдыхать и отвлекаться. Это дает свежий взгляд на, казалось бы, тупиковый путь. Мне для перезагрузки помогают прогулки по парку.
Считается, что программирование – монотонный и скучный труд. Это неправда. В нашей работе много творческого и динамичного. Каждая рядовая задача – это сплав креатива, логики и опыта. А у нас еще много нетривиальных. Добавьте к этому скорости, с которыми происходят изменения: пользователи постоянно ждут улучшений, новых возможностей, гибкости. Мне сохранять продуктивность позволяет разносторонний опыт работы в МегаФоне.
Рад, что стал частью программы клуб экспертов. Внутри каждой команды, где я работал, было много общения, обмена опытом, наблюдениями. Это помогало расти, получать новые компетенции. С удовольствием поделюсь с коллегами своими знаниями. Опытная команда создает крутые продукты, бережно расходуя ключевые ресурсы: временные, финансовые, человеческие.
Что интересного хотелось бы сделать в будущем? До разработки я занимался техподдержкой нашего сервиса Botman. Смотрю на него теперь глазами программиста и понимаю, что можно обновить и улучшить.