June 3, 2020

Мышление начинающих разработчиков

Поговорили с Артемием Степановым о проблемах dev-индустрии, "всепрощающем" пользователе и цикличности цивилизаций

02.06.2020 Ангелина Головченко, Devhouse

— Артемий, я знаю тебя как Devhouse alumni и спикера ставропольского IT-митапа 2018 года. Плюс, ты должен был стать спикером на нашем митапе 2019 года, но не срослось :)Знаю, что сейчас ты программист, а раньше был предпринимателем не с одним бизнес-проектом. Но давай чуть подробнее о том, чем ты занимаешься в IT? — Сейчас я контрактный разработчик, работаю на шведскую компанию, предоставляющую бухгалтерский софт.
Если говорить о языках, то конкретно сейчас у меня вектор в Java, потому что того требует мой личный проект.
А у шведов я ответственен за функционал авторизации и аутентификации пользователей, а также за получение информации о них из государственных или полугосударственных источников.
Также участвую в улучшении наших DevOps процессов. Тут я пишу преимущественно на Ruby и Go, реже Python.

— Отлично, давай тогда переходить к вопросу, ради которого я это всё затеяла: какая тема в разработке сейчас является наиболее свербящей для тебя?)Какая-то “боль” индустрии? — Иное мышление у начинающих программистов.
Мне в последнее время достаточно активно приходилось собеседовать людей, плюс я преподавал, точнее, менторил. И невольно стал замечать, что у многих из тех, кто хотел попасть ко мне в ученики, достаточно заметны отличия в мышлении от тех, кто приходил ко мне учиться в самом начале.
Раньше был запрос: "Хочу научиться программировать, не знаю, с чего начать".
А сейчас, последний год, запрос выглядит так: "Хочу научиться писать код, за что больше платят, или как быстрее начать" (в контексте быстрее начать зарабатывать).
И если первые ребята были заточены на то, чтобы решать задачи, создавать что-нибудь, независимо от инструмента, которым они будут пользоваться, то последних больше интересуют деньги и не возможность решения задач, а возможность быстро научиться какому-нибудь языку или стэку, жить в нем и начать уже делать деньги.

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

Таких, повторюсь, всё больше, больше онлайн-школ и курсов, которые прямо так и заявляют: "Стань Java-программистом!", "Стань разработчиком на Python!",
стань кем-нибудь, кто четко завязан на язык или технологию,
например "Стань React-разработчиком".
(Кстати, любопытно, что в рекламе подобных курсов они всегда, в обязательном порядке указывают "среднюю" зарплату, которую якобы можно будет получать после этих самых курсов, то есть их целевая аудитория – и есть этот класс программистов, о котором мы говорим).

При этом, что самое интересное (насколько мне известно) немного в другой области программирования – в data science, так и говорят: "Становись data scientist’ом!".
Не разработчиком на Python, который умеет использовать тулзы для data science, не программистом на языке R или Julia, которые тоже используются для data science. Тебе так и заявляют – ты становишься датасайентистом. Чего ты там будешь использовать, какой инструмент – это зависит от задачи.
И вот туда, в data science, сместилось всё правильное восприятие программирования, в моем понимании.
А вот у нас сейчас нет установки: "Становись программистом, независимо на каком языке. Для того, чтобы создавать крутые проекты, решать задачи, делать мир лучше".

Я, конечно, абсолютно понимаю любовь к конкретным инструментам. У меня они тоже есть, и мне нравится решать задачи, которые решаются определенными инструментами, именно теми инструментами, которые я люблю. Делать с их помощью классные вещи, которые приносят пользу другим людям.
Но суть в том, что общее понимание решения проблем очень жестко куда-то ушло.

— Окей, давай сделаем краткое резюме сказанного. Есть проблема: логика новоиспеченных программистов сейчас выглядит как движение от обратного – сначала интересен инструмент, а уже потом – что с его помощью можно решать. Большинство из них сразу бросаются во фреймворки, в какой-то конкретный язык, не особенно вникая, как оно всё работает, а просто учатся это использовать. Как ты думаешь: а) что к этому привело? б) что это за собой повлекло? — Мне очень нравится думать вот в каком ключе: есть понятие цикличности цивилизаций, звучит так: "Трудные времена порождают сильных людей, сильные люди создают хорошие времена, хорошие времена рождают слабых людей, слабые люди создают трудные времена".
Это можно перенести и на разработку, я думаю. Сейчас мы находимся там, где придумано уже много всего, много хорошего уже было сделано – настали действительно хорошие времена для разработки.
Тяжелые времена, на мой взгляд, были тогда, когда появился Apple, Microsoft, IBM и иные гиганты IT мира. Когда все эти компании стали появляться, было не просто тяжело – ничего подобного еще не существовало, это вообще было впервой.

Сейчас же, грубо говоря, всё есть. Доходит до такого уровня, что некоторые разработчики даже не пытаются понять: а как же оно там ра-бо-та-ет. Их это уже не волнует. Ну, и, собственно, мы имеем дело с тем, что хорошие времена порождают "слабых" людей )))
И они делают плохой софт. Но самое "страшное" то, что пользователи сейчас как-то двояко к этому относятся: с одной стороны, они очень придирчивы, например, тормозящие приложение на телефоне многие не станут терпеть, даже если его функционал им нужен. С другой – многое прощают, например, долго грузящиеся сайты или софт на их ПК.
И то, что пользователь сейчас много чего прощает, – это тоже такой важный негативный фактор. И он мне очень не нравится. Он позволяет нам, разработчикам, расслабляться.

— Многопрощающий пользователь – какой он? Раскрой мысль, пожалуйста.
— Небольшие баги, периодические зависания практически не смущают пользователей. Более того, твое приложение вообще без ведома может закрываться пару раз за час, но ты всё равно продолжаешь им пользоваться.
Ты принимаешь это, и все равно продолжишь юзать апп, даже если где-то в комментах к продукту пожалуешься.
Например, iOS – раньше у тебя даже мысли не возникало, что там может что-то не работать. А сейчас обновлять ось всё страшнее и страшнее, там всё больше багов. Но ты не отказываешься от использования, ибо это всё равно лучшее в своем роде.
Или еще один интересный пример:
Вот язык Java – большинство программистов сидит на версии 8, хотя сейчас уже есть 14 версия. Более того, даже начинают проекты на 8-й, имея 14-ю. Всё потому, что она годами проверена, и люди точно уверены, что она работает. Хотя тут, конечно, есть еще и момент с лицензией на использование, но все же.

— Таким образом, что этим можно сказать?) — Что даже мы сами боимся нового кода. Мы сами себе уже не верим, а пользователи – отнюдь. И “всепрощающий” пользователь, на мой взгляд, – это одна из причин проблемы иного мышления новоиспеченных программистов.

— Как ты думаешь, какие есть пути решения? Что может изменить вектор мышления новичков, а также увести всех нас от "плохого софта"?
— А тут все очень просто, это глобальное явление. И против течения тут не попрешь, надо пережить эти времена и наблюдать за цикличностью истории.
Когда настанут трудные времена, придут и сильные программисты, и более качественный софт.

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