Программист с детства: интервью с разработчиком
Программистов на свете много. Но откуда они берутся? Что должно случиться в жизни человека, чтобы он раз и навсегда решил связать свою жизнь с разработкой?
Нет, конечно же, мы не будем брать в расчет выпускников ИТ-курсов. Далеко не все из них продолжат карьеру в ИТ. Тех, кто погнался за «легкими» деньгами тоже оставим за скобками. Как правило, самые интересные истории рассказывают люди, влюбившиеся в компьютеры и программирование в раннем возрасте. Те, кого называют «прирожденными» программистами.
Сегодня в формате свободного интервью мы поговорим с Колей. Он профессиональный программист, инди-разработчик, коллекционер ретро-техники и просто очень интересный человек.
Изображение создано с помощью Stable Diffusion
— Всякая техника, механизмы… я интересовался ими с раннего детства, сколько себя помню. Когда родители ходили со мной в гости, первым делом, буквально с порога я спрашивал у хозяев: «А у вас есть книжки по электронике?». Ни «здрасьте», ни «до свидания». Дайте книжку, и все.
Не помню, честно говоря, как люди на меня реагировали. Может, смеялись. Может, смотрели с уважением. Но книжки, как правило, давали. И я пропадал с ними весь вечер где-то в углу, на кресле, или в отдельной комнате. Для понимания, речь идет о моих 5–7 годах.
Потихоньку у меня собралась неплохая такая полочка книг по радиоэлектронике. Хорошо помню, например, объемный справочник по ралиолампам, производившимся в Советском союзе. И какой-то самоучитель по электронике. К слову, полноценным радиолюбителем я так и не стал. Периодически я паяю, собираю разные штуки, но это далеко не главное мое увлечение. Всё испортила, как я понимаю, книжка по Бейсику, которая однажды попала мне в руки.
Она меня не просто заинтересовала. Это было… я не знаю. Я зачитал ее буквально до дыр. И это притом, что дома не было компьютера и полноценно применить свои знания и нигде не мог.
Одна из любимых детских книг
Зато классе в 5-м я пробрался в кабинет информатики. Там стояли, как сейчас помню, обыкновенные для тех лет (конец 1990-х) компьютеры БК-0010Ш из комплекса КУВТ. Когда преподаватель отвернулся, я улучил момент и быстренько напечатал программку, которая должна была в цикле пищать бипером. Тогда не сработало — где-то я допустил ошибку. Но преподаватель знатно удивился. Даже ребят постарше компьютеры интересовали только с игровыми целями. А тут — пусть и косячная, но программа. Но из кабинета все равно выгнали. смеется Это было де-факто мое первое знакомство с настоящей, не книжной, вычислительной техникой.
Еще через год-два мама принесла домой с работы списанный 286-й. И это была любовь. На нем я стал уже всерьез постигать чудеса программирования. Сначала писал простенькие батники, которые при запуске выводили на экран что-то типа «Осторожно, загружается вирус…». Детский сад, штаны на лямках. Но было очень весело.
Меня очень прикалывал сам факт, что можно что-то такое написать, а оно потом будет выполняться, работать так, как я запланировал. Потихоньку я изучил возможности командной строки MS-DOS. В какой-то момент узнал про QBasic, и понеслось. Там уже можно было как следует развернуться — не какие-то echo и pause, а прямо полноценные программы писать. Рисовать кружочки, линии. Игрушки примитивные делать. Поскольку я пропадал за компьютером буквально сутками, мой интерес стал очевиден и родителям.
Лет в 15 через какие-то личные связи им удалось пристроить меня в детский компьютерный лагерь в Переславле-Залесском. Он назывался «Международный детский компьютерный центр». Смена длилась 3 недели — можно было записаться на разные кружки, «направления» и ходить, заниматься тем, что интересно. Там я освоил HTML, еще под NetScape«ом, познакомился с Turbo Pascal и очень по нему зафанател. Наверное, потому что еще не знал про существование C.
Так или иначе, после возвращения из лагеря я первым делом побежал к «пиратам» — покупать свой диск с Turbo Pascal. Потом пришлось у друзей переписывать содержимое диска на дискеты — у моего 286-го не было CD-привода.
Где-то с этого момента, пожалуй, можно говорить о том, что я начал становиться программистом. Начал писать более глубокие алгоритмы — отчасти благодаря книжкам, отчасти из-за своих экспериментов.
— Вот здесь поподробнее. Как ты воспринимал программирование? Обычно у школьников это как происходит: пришел домой, поел, посмотрел мультики. В лучшем случае сделал уроки и засел играть на компе. Ты, получается, вместо развлечений писал код?
— Почему «вместо»? Это для меня всегда было — и сейчас остается — развлечением. Я пропадал за компом круглыми сутками, все свое свободное время. Мне в каком-то смысле повезло, родители не отгоняли меня «поиграть на улице». А уроки… Я делал вид, что я их делаю, учился вполне хорошо. Если проблемы и были, то точно не из-за компьютера.
Через какое-то время, уже после лагеря, я купил у друга модем 14400. Весьма медленный, заметьте. С него я много сидел на BBS«ках. Качал какой-то DOS«овский софт, примеры программулин. Разбирался, изучал, как они устроены. Было безумно интересно.
Кстати, совсем забыл об этом упомянуть. Еще в раннем детстве, задолго до появления дома компьютера, мама принесла мне с работы несколько книг по устройству различных микросхем. Среди прочего там была книжка по архитектуре x86. Она дико меня заинтересовала, настолько, что я просто брал и выписывал себе в тетрадку классификатор инструкций, еще что-то подобное. А когда комп наконец появился, я почему-то даже не соотнес, что сокровенные знания, записанные в тетради, имеют к нему какое-то отношение.
А между тем, игрушки, которые я сам писал под DOS на Turbo Pascal, ужасно тормозили. И я все никак не мог понять, почему: есть же другие игры, гораздо более навороченные. И они почему-то не тормозят. Примерно в этот момент я нашел свою старую тетрадку и понял — вот оно. Это тот самый путь, который позволит мне писать что-то действительно быстрое. А поскольку мой бедный несчастный детский мозг уже был в свое время травмирован литературой по ЭВМ, новые-старые знания дались мне достаточно легко.
Фактически, я с самого детства был повернут на вычислительной технике, на компьютерах. Голова в принципе работала не так как у многих ровесников. Не знаю, хорошо это или плохо. смеется
Чуть позже у меня появился и полноценный винчестер, а затем и другие, уже более современные компьютеры (а то может сложиться впечатление, что я 20 лет просидел за 286-м). Я познакомился с Visual Studio, языком C…
Все это время я постоянно искал возможности чему-то научиться. Искал интересные исходники, читал, как опытные люди строят логику своих программ.
А дальше — все вполне предсказуемо. Я закончил школу, поступил в МИРЭА на программиста и успешно выпустился оттуда. И, можно сказать, вошел во взрослую кодерскую жизнь.
Сейчас я работаю в крупной финской компании, которая занимается разработкой мобильных игр. Четыре ее проекта входят в мировой топ. В общем, как видите, смеется, разработку я не забросил.
— С учетом твоего бэкграунда — насколько он отразился на твоей работе? Наверняка далеко не все твои знакомые или коллеги прошли такой путь — от книжек по советским лампам и до наших дней.
— А как он мог отразиться? На работе я использую обычный, современный софт. Популярные IDE — та же Visual Studio, Android Studio. Но некоторые привычки действительно остались. Например, я везде, и на работе, и дома, пользуюсь т.н. ортодоксальными файл-менеджерами. Под Windows это FAR Manager. Под Linux — Midnight Commander. У меня уже все рефлексы, все действия заточены под работу в них. Не приходится отвлекаться и переучиваться. Помню, как впервые увидел DOS Navigator. Это было нечто охрененное (можете меня в статье так и процитировать!), даже на фоне Norton и Volkov.
FAR Manager
У коллег я вижу FAR нечасто — мало кто с ним работает. Но в целом разработчики — люди толерантные. Им без разницы, чем ты пользуешься, пока ты их не заставляешь пользоваться тем же самым. А в остальном… наверное, самая сильная такая симпатия — это Visual Studio. Я ею пользуюсь еще с 6-й версии, знаю все хоткеи, все основные функции.
В целом я предпочитаю работать без GUI. Просто привык — я ведь фактически вырос в консоли. Для меня это максимально привычный и удобный интерефейс. Так, например, у GIT — и это важный момент — чертовски хорошо развит именно консольный инструментарий.
Что касается остального сетапа…здесь, думаю, как у всех. У меня стандартно 3 монитора, на каждом что-то открыто в отдельных окошках. Потому что часто приходится открывать референсы, документацию, файл-менеджер. Еще что-то такое — и места вечно не хватает.
— А ты задумывался над тем, чтобы написать свою IDE? Может, под какие-то конкретные задачи…
— Конечно, задумывался. Правда, не в ключе основной работы — это история, скорее, касается моего ретро-хобби. Мне приходилось участвовать в ретро-конкурсах, посвященных геймдеву. А старые платформы — это всегда куча легаси-софта, разные инструменты под разные задачи. И мне захотелось собрать собственную IDE, чтобы собрать всё в одном месте. Чтобы все было под рукой. Естественно, она разрабатывалась по принципу «нужно сделать как можно быстрее, а лучше — вообще вчера», поэтому в ней много своих нюансов. Со временем я планирую ее улучшить, доработать.
Плюс мне и по основной работе, и в рамках увлечений, часто приходится писать свои собственные инструменты. Часто делаю разные сервисные скрипты на Python. Не знаю, насколько здесь имеет смысл рассказывать о моем опыте в ретро-разработке. Все-таки, это совсем другая тема, тоже очень объемная и интересная.
— У тебя возникали проблемы в работе с более «молодыми» коллегами?
— Как правило, нет. Адекватность человека от возраста не зависит. Что касается стека…в той же парной работе, когда я знаю, что коллеге неудобно будет пользоваться моим инструментарием, я могу без проблем пересесть на то, что привычно ему. Я нормально разбираюсь в обычных, современных инструментах и без проблем перейти на них, если этого требует ситуация. Гораздо больше проблем доставляют люди, которые или навязывают свой софт по каким-то религиозным причинам, или мнят себя экспертами 80 уровня, при этом не зная каких-то элементарных вещей. Но, опять же, это проблема к возрасту отношения не имеет.
— В заключение — что ты посоветуешь читателям, которые либо совсем недавно открыли для себя разработку, или только хотят «войти в айти»?
— Сейчас из каждого утюга твердят про вход в айти — мол, «пройди наш курс и стань новым визионером, Стивом Джобсом». И многие идут туда — за легкими деньгами, вопреки всем своим жизненным ценностям и установкам. Учатся из-под палки. Потом плохо работают из-под палки. Я глубоко убежден, что, если у тебя нет склонности, страсти к программированию, в этой профессии тебе делать нечего. То есть самое главное — хотеть писать программы. Хотеть разбираться в компьютерах. Без этого 100% ничего не получится.
Второй важный момент — это готовность пройти весь путь, от подмастерья к мастеру. И это всегда длинный путь. Никто не становится Стивом Возняком на ровном месте, прочитав 10 книг. Даже 100 книг. Некоторые вещи приходят только с опытом.
В течение некоторого времени я обучал людей в одной крупной онлайн-школе. Как правило, те, кто приходил за легкими знаниями, чтобы на следующий день устроиться на работу с шестизначной зарплатой, отсеивались первыми. Лучше всего учатся те, кто пришел за новой информацией, за новым багажом. Пытливые умы.
А люди, которые являются с апломбом «вот я плачу вам деньги, сделайте меня экспертом», как правило, остаются на том же уровне, с которым они пришли. Важно уметь расширять свой кругозор, учиться — не потому, что злой дядя с плеткой тебя заставил. И не потому, что кредит за обучение сам себя не отдаст. Это должно идти изнутри — желание, страсть, целеустремленность. Самый выигрышный способ — найти человека, который сможет направить тебя в обучении. Эдакого ментора. И постепенно наращивать объем знаний. И если программирование — это «твое», то, скорее всего, всё получится.
А как вы попали в ИТ? Возможно, однажды в детстве родители купили вам ZX Spectrum, который перевернул вашу жизнь? Или вы всю жизнь хотели делать игры, а в итоге стали крутым программистом? Поделитесь своей историей в комментариях!