Советы ленивого программиста: проверьте логику и не пренебрегайте деталями

13.09.2018

«I'm lazy developer», – так начинает свое резюме Виктор Пасенчук, аспирант ОмГТУ, прошедший путь от азов программирования до архитектора проекта. Его резюме на 8 страницах впечатляет и завораживает: бесконечное перечисление профессиональных навыков начинается с 20 языков программирования и заканчивается свободным владением английского языка и опытом работы в российских и зарубежных компаниях.

Многие молодые люди все чаще выбирают профессию программиста, о которой в обществе достаточно много иллюзий, с одной стороны, а с другой – это динамично развивающаяся профессия. Мы попытались узнать из первых уст все секреты профессионального успеха в преддверии Дня программистов, отмечаемого 13 сентября.

Виктор, что для Вас – «программист»?

Программист - это профессионал, который решает задачи клиента посредством написания кода. А заказчику, прежде всего, нужна прибыль, часть которой он готов передать программисту на создание и поддержание продукта.

Есть ли ступени в карьере программиста, или это, скорее, свободный художник?

Конечно, есть, как и в других профессиях. Карьерная лестница программиста начинается с позиции стажёра, перерастающей в должность младшего разработчика (Junior). Джуниор учится писать код и грамотно работать с инструментами, правильно интерпретировать пожелания заказчика. Для начинающего программиста важно не придумывать лишнего, точно следовать плану заказчика и максимально корректно решать задачу.

Далее следует инженер-программист или, как их еще называют, Middle или Regular. На этом этапе у программиста появляется ответственность за результат своей работы. Как правило, такой специалист выполняет максимальный объем работы за отведенное время, то есть он уже умеет программировать, хорошо ориентируется в своей среде, и его основная задача – это быстрое и грамотное написание кода.

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

Архитектор (Systems architect), который уже уходит от написания кода и задействован в управлении командой и менеджменте, занимает более высокую позицию. К должностным обязанностям архитектора относится не только распределение задач, но и работа с рисками. Он ведет проект с технической стороны, определяя стратегию его развития.

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

За сколько лет программист проходит путь от начинающего до архитектора?

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

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

Сколько программистов обычно входит в команду?

Состав команды, как правило, определяется бюджетом проекта. Одного, даже джуниора, иногда достаточно для решения одной или нескольких задач, но проекты имеют тенденцию к масштабированию (увеличению). Например, программист сначала делает только серверную часть, потом выясняется, что необходима сложная нестандартная вёрстка, мобильные приложения, дополнительные сервисы и инфраструктура. Как следствие, растет количество функционала и требований к нему, так команда проекта дорастает до десяти человек и больше. Конечно, с проектом растет и бюджет. Но и проект растет не самопроизвольно, а под увеличение прибыли.

Также это может быть внутренний проект, нацеленный на оптимизацию - сокращение расходов на поддержку. А еще существуют проекты, в которых архитекторов больше, чем разработчиков начального уровня. Например, сейчас я работаю на проекте, команда которого составляет около 50 человек, разработчиков в нем немного, а развивающих свои подпроекты архитекторов болeе 60%.

Можете ли привести примеры крупных российских проектов?

Можно привести пример проекта компании Тамтэк (Thumbtack), омской организации, занимающейся написанием серверных, архитектурных решений. На данном этапе неплохо себя показывает внутренний продукт компании DataSwitch – платформа для демонстрации рекламы, аналогичная решениям от Google. Эта платформа обеспечивает высокие конкурентные результаты. Сейчас маржа продукта формируется за счет показа рекламы, но основная выгода может быть получена от продажи этого решения на более серьезный уровень, например Google, а это – более высокий уровень дохода.

Можно также упомянуть сервис Призма, используемый для обработки фотографий в искусственной нейросети в стиле картин известных художников. Данный сервис возник как startup, его популярность была настолько запредельной, что даже не выдерживали сервера. Программу заметила и приобрела крупная компания, и ребята на этом хорошо заработали.

То есть стартапам есть еще место в большом бизнесе?

На самом деле рынок сейчас перегружен, но интересные технические решения всегда актуальны. Если компания выйдет на локальный рынок с новым продуктом, прибыль вряд ли будет впечатляющей. Но, если встроить этот продукт в бизнес-процесс больших компаний, то порядок прибыли и масштаб распространения продукта изменятся. Сейчас компания, в которой я работаю, занимается покупкой стартапов со всей инфраструктурой и доведением их до уровня бизнес-решения.

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

Насколько рынок ИТ- труда насыщен, сложно ли найти работу?

На этом рынке толковый человек всегда найдёт себе место. Наверное, следует рассмотреть эту проблему с нескольких сторон. Для начинающих программистов оплата труда варьируется на уровне 20-25 тысяч рублей, и кому-то это может показаться мало. Но на этом уровне зарплат необходимо проработать год или даже два.

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

Можете дать пример непонимания причинно-следственных связей?

Самый банальный пример – задачи на пропорции. Задачи уровня восьмого класса по нахождению процентов от целого числа часто ставят людей в тупик. Нахождение пропорции очень хорошо отражает ход мышления человека, оно присутствует во многих естественных науках - физике, химии, программировании. К этому же ряду причинно-следственных связей можно отнести последовательности, прогрессии, например, геометрическая прогрессия. Человек должен уметь выявлять в совокупности чисел закономерности и описывать их, например, вводить массив данных.

Я бы не стал требовать написания формулы полураспада от программиста, но вопросы уровня «почему канализационные люки круглые?» понимать надо. При этом важно осознавать, что люк при такой форме не только не проваливается, но и имеет максимальную площадь при фиксированном периметре, что экономит материал. А вот другая задача: «Есть одна бактерия, она делится раз в минуту, в две минуты имеем четыре бактерии и так далее. Через 47 минут у нас есть 0,5 кг бактерий. Через сколько минут будет килограмм?»…

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

Обычно любители проходят в интернете какие-то курсы, дающие, как правило, фрагментированные знания. И вроде бы задачи уже можно решать, но только человек с системными знаниями и опытом может видеть грань между рациональным и нерациональным решением.

Как уже я говорил, лучше всего пройти обучающие программы, например, в Омске доступны следующие варианты: школа разработчиков Thumbtack, летняя стажировка в 7bits, обучающие программы в Burning Button. Еще можно попроситься стажёром в любое время в такие компании, как Live Typing, CrystalNix, Ronas IT, Rosberry и многие другие. Здесь можно и получить оценку профессионалов, и найти единомышленников.

Есть ли наставник, на которого Вы равняетесь в мире программирования?

Такие имена как Мартин Фаулер или Роберт Мартин по прозвищу Дядюшка Боб широко известны в мире ИТ. Я, кстати, всем советую почитать Роберта Мартина, например, книгу "Чистый код", где, вроде бы, описываются очевидные вещи, но ты понимаешь, что все не так тривиально и полезно многим. Даже опытные программисты читают его работы, мне нравится его стиль, и при написании кода я использую архитектуру, близкую к предложенной им слоистой или гексагональной архитектуре.

В области андроид-разработок хорошо известен Джейк Уортон, разработавший достаточно много библиотек открытого кода. И, если посчитать звездочки на GitHub, с которого программисты берут библиотеки и оценивают их выставлением звездочек, то у него звезд больше, чем у всего Фейсбука. То есть в плане оценки вклада в развитие ИТ-сообщества его популярность запредельна.

Но, несмотря на то, что личности часто играют значительную роль в ИТ-индустрии, я являюсь сторонником коллективных продуктов тех компаний, где работают многие программисты без имен, однако сами продукты заслуживают особого внимания.

Собственное дело это реальность?

Эта тема очень большая. Скажу одно, если ваша зарплата в ИТ-сфере растет, то есть смысл подумать об ИП, что поднимет ваш доход при тех же трудозатратах. Также при желании можно напрямую работать с иностранными биржами по поиску работы для фрилансеров (upwork, toptall).

Что бы Вы пожелали будущим программистам?

Большая часть ошибок – в логике, причем, как правило, они мелкие. Поэтому, если есть ощущение ошибки, проверьте логику и не пренебрегайте деталями. И помните, что всему можно обучиться, это, скорее, вопрос времени и желания.

Так все же, через сколько минут будет килограмм бактерий?

На самом деле – через одну минуту.

Беседовал Вячеслав Соломин.  





Автор: Вячеслав Соломин
Опубликовано: ЦТКиВТ ОмГТУ

Возврат к списку