Ilya konovalov

Начало

О программировании я узнал в далеком детстве из книжек "А я был в компьютерном городе" и "Энциклопедия профессора Фортрана". Читать и писать я в то время умел, а компьютеры еще не особо попадались. Поэтому когда папа раздобыл где-то ZX Spectrum и к нему монитор (на котором была кривая цветопередача и большая часть из 16 цветов были разными оттенками красного), то я сразу начал пытаться писать программы. В основном перепечатывал их из школьного учебника по информатике. Еще там были игры (в Политехническом музее продавались кассеты с играми), которые с одной стороны не дотягивали до уровня Денди, но с другой стороны Денди были у всех, а Спектрум только у меня. И все-таки тогда же я на Бейсике начал что-то программировать сам. В основном методом проб и ошибок, опираясь на примеры из учебника.

А потом был первый компьютер. И там были всякие батники и QBasic. Пользоваться всем этим хозяйством мне казалось совсем естественным. Я был принципиально против оконного интерфейса, потому что я мог все делать в консоли или Volkov Commander. Был момент, когда я ходил в кружок, где были маки и ЛогоМиры - и я сидел и прописывал траекторию движения колеса от взорвавшейся машины.

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

Продолжение

Потом был институт, и на первом курсе были Паскаль (на котором я писал программы переводя с Бэйсика), Java, самостоятельно изучал Perl по книжке с верблюдом и официальной документации. С третьего курса понадобился C, я уже успел и его попробовать, поэтому как-то в нем ориентировался. Я просто брал разные книжки и учебные материалы и читал их. Однажды утром я решил узнать, что такое сокеты и как ими пользоваться, взял учебник по Java и минут за 10 что-то прочитал и этого хватило.

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

Еще в течение всей учебы я неоднократно отказывался от предложений согруппников за деньги помочь им с заданиями. Мне было неинтересно получить деньги и сделать за них. Мне было интереснее показать им, что они сами могут с этими заданиями справиться. Если что-то не работает, мне интересно разобраться - почему не работает. Потом интересно объяснить, чтобы поняли. Могу даже починить. Как только все получилось - уже неинтересно.

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

Вопросы

Какой совет дашь новичкам, который редко встречается или считается необычным, спорным?

Если не знаешь или не уверен - просто возьми и попробуй. Каждый раз, когда я вдруг задумываюсь над тем, как ведет себя какая-то конструкция, я просто иду в /tmp и делаю минимальный пример. Играю с ним до тех пор, пока не буду удовлетворен результатом. Возможно покажу кому-то в качестве подтверждения идеи.

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

Привыкай читать на английском. Документация на английском должна восприниматься как документация, а не как текст на английском языке.

Как ты сохраняешь свои навыки актуальными? Как постоянно растешь и становишься лучше как разработчик?

У меня десятки задумок и незаконченных проектов. Если есть свободное время, я работаю над ними. Или начинаю работать над другими, которые в данный момент интереснее. При этом я стараюсь не использовать то, что я уже и так знаю, а, по возможности, пробовать что-то такое, о чем читал, но еще не пробовал. Недавно пробовал писать на Lisp. Есть планы попробовать Go, Rust, Smalltalk и Eve. И в очередной раз Haskell.

Топ-3 книжек для новичка?

Working Effectively with Legacy Code - обязательно. Прямо сейчас лежит у меня на столе. Читать ее не обязательно, скорее использовать как справочный материал. По конкретным языкам программирования и инструментам.... Всегда всем рекомендую Git Magic. Для C - Керниган и Ритчи (лежит на столе на работе). По sed хороший учебник Sed Grymoire. Остальное обычно гуглится - сайт со стандартами POSIX, документация по Make.

Топ-3 сайта/рассылки/источника инфы, на которые должен быть подписан каждый разработчик?

Понятия не имею. Мне прилетают какие-то рассылки из блога 8thlight, но это не совсем критично. Туда же Coding Horror (Джеф Атвуд) и Martin Fowler. По-моему гораздо больше пользы я получаю из чтения The Daily WTF.

Фото рабочего стола


Наконец-то решил заняться самообразованием?

Тогда начни с нашего бесплатного путеводителя по миру веб-разработки. Внутри куча полезных советов и материалов для самостоятельного изучения.

Заполучить книгу Cover huge ru