Программирование, машинное обучение, и жизнь
“За что вы любите программирование?”. Этот вопрос я задавал вчера друзьям-киборгам, а потом снова и снова задавал его себе. Я помню, что с самого детства мне нравились инструменты, которыми можно делать всякие забавные штуки. Как-то мама принесла с работы калькулятор, с такими красными циферками, который работал от сети. Как я к нему рвался! Вычислял суммы, произведения, брал квадратные корни!!! Магия цифр завораживала: если 1111 умножить на 1111, получалось 1234321; дробь 1/3 выглядела забавно с бесконечным числом троек; квадратные корни имели очень забавный вид (нерациональные числа).
Потом для меня начал открываться мир компьютеров - сначала это была цветастая книжка про то, как мальчик залез в компьютер и начал по нему путешествовать. О, как мне хотелось хотя бы потрогать настоящий компьютер, не говоря уже о том, чтобы что-то на нем поделать. Это был класс шестой (1992 год) и компьютеров ни у кого из знакомых не было, начинали только появляться игровые приставки Dendy. В самом начале девятого класса мы с друзьями наконец-то нашли место с двумя компьютерными классами. Сначала за компьютерами сидели по трое, потом кто-то отсеялся и мы уже сидели по двое, а через какое-то время мы перешли в следующий программистский поток и там уже у каждого был свой компьютер.
Отчетливо помню первую встречу с компьютером. Yamaha MSX, зелено-черный экран, клавиатура и системный горизонтальный блок (с двумя слотами под дисководы и чем-то еще). Буквы, которые появлялись при нажатии на клавиши, завораживали. Интерактивность радовала неимоверно. Чуть-чуть освоившись с MSX-Basic, мы начали писать игры - в языке были простенькие спрайты и мы всяко их двигали, стреляли, забавлялись. Занятия были раз в неделю, поэтому неделю пишешь код в тетрадку, а потом приходишь и проверяешь как же работает то, что ты придумал. Тогда я любил программирование за то, что можно было собирать разные прикольные системы и смотреть как они работают, было очень интересно собирать что-то живое.
В 10-11 классах у меня лично был провал в компьютерах - я более-менее серьезно занялся химией, год за годом выигрывая городские олимпиады, а мои друзья вовсю программировали в бизнес-колледже, куда они поступили (я решил туда не идти). Только в конце 11-го класса в нашу школу завезли старые-престарые корветы (зато целый класс) и мы урок или два попрограммировали на них всякое.
В институте на первом же практическом занятии по информатике меня ждала сенсация - PC 486 DX 100 + MS DOS + NC + Win 3.11. И Quick Basic, в котором не нужно было проставлять номера строк!!! И снова понеслась - мы начали жить в кабинете информатики, подобрали пароль к сети, подружились со старшекурсниками, программировали, играли по сети в Descent. Тогда компьютер поражал своей новизной, интерактивностью, тем, что это совсем другой новый мир, в котором можно играть и почти что можно было жить. Программирования было не очень много - различные численные методы, всякое моделирование, ранние эксперименты с 3d-графикой.
Потом мой друг Костя Кузнецов купил себе компьютер и я впервые увидел Windows 95, поиграл в Age of Empires, послушал Winamp. Домой пришел с огромными глазами и сердцу моему не было покоя. Это было лето между первым и вторым курсом универститета, и уже в октябре родители согласились купить компьютер. AMD 266 MMX (разгонялся до 300 с лишним), 32 Mb памяти, 3-х гиговый винт, CD-ROM, 14-дюймовый Samsung SyncMaster 400b. Я очень четко помню этот день, 26 октября 1998 года. На следующий день я проснулся и сел изучать Microsoft Access - потому что он был самым первым по алфавиту в пакете MS Office. Потом HTML, потом Pascal (почему то многие писали именно на нем), после Бейсика было непривычно разбираться с его типами. Потом начал писать на Паскале программу Notebook (записная книжка), начал разбираться как убрать мигающий курсор и открыл для себя ассемблер, после него залез в C++, порадовался что нашел уже более-менее серьезный язык и потом уже писал в основном на нем. Каким-то серьезным усилием далось программирование под Win32, научился писать на MFC, сделал несколько оконных приложений (особо помню программу TimeJob, которая засекала сколько времени в день я работаю за компьютером), написал пару игрушек на DirectX 7. Интереснее всего было писать новые программы, смотреть как они работают, использовать их в своей жизни.
Потом закончился институт, я совсем недолго (10 дней) поработал преподавателем в компьютерном центре и уволился - работа не радовала. Подвернулся заказ - отсканировать и восстановить старые карты Павлодарской области, потом сделать из них атлас. Мы купили сканер, я написал несколько простеньких макросов для фотошопа и за пару недель сделал заготовку для атласа. Потом мы начали ездить по типографиям, в результате меня приняли на работу в одну из типографий, чтобы я завершил работу над атласом и произвел его допечатную подготовку. 4 месяца я работал дизайнером комьютерной графики, на последнем месяце начал писать систему складского учета для типографии, а потом уволился - начал работать удаленным программистом (слово фрилансер тогда еще редко употреблялось) на Новосибирск. Я программировал и мне за это даже платили! Что может быть прекраснее???
Это было начало 2003 года и как я ни пытался найти в городе работу программистом - никак не мог найти. Всем нужны были толковые айтишники, которые и компы купят, и сеть настроят, и картридж заправят. Я не унывал, вступил в Фидо (2:5088/4.7), фидошники пригласили меня на первую большую компьютерную работу - айтишником в Казкоммерцбанк, который был знаменит тем, что смог собрать самых интересных админов и программистов того времени. Хоть я и работал там эникейщиком, я много программировал, даже когда меня не просили. Автоматизировал все свои задачи, потом бухгалтерия узнала что у меня есть программа по автоматизированной загрузке и печати отчетов и моя программа начала печатать и их отчеты. Я программировал потому, что мне было интересно избавляться от рутины, и потому что это было бегство из серой реальности в более совершенный и перспективный мир.
В начале 2005 года я наконец-то разобрался с военкоматом и решил переехать в Алматы. В головном банке была вакансия программиста, я прошел собеседование и начал там работать. Программирование целыми днями, работа в офигенном коллективе, поездки в горы и в соседнюю Киргизию, лыжи, Медео. Тогда я начал больше учиться менеджменту - потому что хотелось огранизовать процесс разработки более оптимально, чтобы можно было работать так, как пишет Спольски. У меня появился свой отдел, я стал программировать меньше, а руководить больше. В то время я делал то, что делал потому что хотел сделать процесс разработки софта менее кустарным, более современным, более профессиональным, несовершенство мира цепляло мой взор.
В 2007-м году я приехал жить и работать в Москву. Тут уже были друзья - программисты и менеджеры, у меня был хороший послужной список руководителя программистов. Мы собрались в офисе и начали делать разные прототипы, один из которых стал Рисоваськой. Полтора года упорной работы, много опыта, много достижений. Почему я взялся за это - потому что хотел сделать мир более веселым и открытым местом, потому что хотел работать с самыми интересными людьми, хотел, чтобы жизнь и работа были неотделимы.
Открылось много истин (которые теперь кажутся прописными и очевидными). Одной из них была истина, что действительно революционные и прорывные проекты делаются небольшими командами супер-профессионалов-энтузиастов. И вот в этом году (1 апреля!) я прочитал книгу по Python, потом выполнил туториал Django, перешел сначала на Ubuntu, а потом на Mac OS X. И вот уже четвертый проект я пишу на Python, в Unix-среде, со всеми лучшими принципами веба в целом и REST в частности, с прекрасными людьми. Я программирую сейчас потому что нашел новые прекрасные инструменты, такие же чудесные и манящие, как и Yamaha MSX с черно-зеленым экраном много лет назад. Еще потому, что мне очень нравится писать новый код, потому что интересно было разобраться что же изобрел весь остальной мир, пока я сидел сначала в мире корпораций, а потом занимался управлением.
И вот сейчас вдосталь нарадовался новым инструментам, как-то разобрался с тем, что изобрел весь остальной мир. Начинается новый период моей жизни, в котором будет какой-то новый оттенок смысла. Что это будет - я не знаю :)))
Спрашивал вчера ребят - что именно они любят в программировании и удивлялся как многое совпадало и многое отличалось, как очевидно было, что все мы занимаемся программированием по разным причинам, что находимся на разных витках своей жизни. И было видно кое-где - “Ага, да-да, я эту штуку проходил, помню-помню!!!”. А где-то просто удивляешься - насколько у других людей всё по-другому, и насколько важно программистам разговаривать друг с другом!
comments powered by Disqus