История о 40 годах кодинга и человеке, который до сих пор, садясь за работу, чувствует себя ребенком в магазине игрушек.
![eToys запущена на моем ноутбуке, подписанном Аланом Кеем 26 февраля 2015 года: «Будущее будет лучше» eToys запущена на моем ноутбуке, подписанном Аланом Кеем 26 февраля 2015 года: «Будущее будет лучше»](https://habrastorage.org/getpro/habr/upload_files/5f9/c78/f5b/5f9c78f5b2e908f665a6963c88ccab10.png)
Моя история программирования: как всё начиналось
Я обожаю кодинг. Писать на BASIC я начал еще в 11 лет. Дело в том, что я принадлежу к удачливому поколению — именно мы одними из первых начали пользоваться ПК не выходя из дома. Первый опыт с BASIC я получил на компьютере Epson HX-20. А это, на минуточку, один из первых портативных компьютеров в мире! До сих пор я жалею, что продал этот замечательный образчик компьютерной истории, когда учился в колледже.
![Epson HX-20, https://commons.wikimedia.org Epson HX-20, https://commons.wikimedia.org](https://habrastorage.org/getpro/habr/upload_files/1ef/bf9/976/1efbf99765320eb8409b1c222e58ffd5.png)
Часами напролёт я изучал мануалы, которые прилагались к компьютеру, и написал свою первую программу — она вычисляла недельную зарплату сотрудника с учетом сверхурочных. А через некоторое время я начал робкие эксперименты с графическими возможностями ПК. Именно тогда я впервые испытал восторг от программирования. И меня зацепило — раз и навсегда.
Моя история
Сейчас мне 51 год, и спустя 40 лет практики на более чем 20 различных языках я рад признаться, что до сих пор сижу на этом «крючке».
Последние лет двадцать я с удовольствием рассказываю детям от 15 до 100 лет о моей карьере и любви к программированию. И неизменно подчеркиваю, что «буду продолжать кодить до тех пор, пока кто-то не оторвет мои холодные мертвые пальцы от клавиатуры». Наверное, это звучит немного... нездорово, зато четко передает суть. Программирование — это моя страсть, и мне повезло, что мне платят за то, что я занимаюсь любимым делом. К тому же за эти 20 лет я осознал, что, помимо написания кода, я чертовски люблю учить людей программировать.
У хороших историй есть герои
Лучший способ предсказать будущее — это придумать его. © Алан Кей, 1971 год.
На фото выше — ноутбук XO, который я купил во время благотворительной акции One Laptop Per Child Give One Get One в 2007 году. Программа, запущенная на экране, — Squeak eToys. А Алан Кэй — автор проекта eToys, построенного на базе Squeak Smalltalk.
![Алан Кей, https://www.colorado.edu Алан Кей, https://www.colorado.edu](https://habrastorage.org/getpro/habr/upload_files/ef1/8b0/80e/ef18b080eae262dfd31c163207584e01.png)
Мне посчастливилось познакомиться с Аланом Кеем, когда я работал в Goldman Sachs, — его пригласили выступить на Talks at GS Panel. Очень здорово, что я могу в любой момент посмотреть запись его выступления и заново пережить те же чувства. Если вы не знаете, кто такой Алан Кей, или просто не видели это выступление, то по ссылке выше вы можете посмотреть, как Алан рассказывает часть своей истории. Алан Кей был так добр, что подписал мой ноутбук XO как раз в день этого выступления — 26 февраля 2015 года.
В хороших историях зачастую есть «Герои». Алан Кей — один из моих компьютерных героев. В 11 лет я понятия не имел, кто это такой. Более того, я познакомился с его работами уже после колледжа, когда мне было далеко за 20. Иногда я думаю, что мне было суждено найти своего героя, измениться под впечатлением от его личности — и в конце концов познакомиться с ним в реальности.
1980-е
В середине-конце 80-х я освоил кучу языков программирования, таких как BASIC, FORTRAN, COBOL, Pascal, Logo, Prolog, Dbase III+ и Clipper '87. Я самостоятельно изучил Dbase III+ и сразу после окончания школы на полставки устроился консультантом по Clipper Summer '87. Это помогло мне подкопить денег и оплатить обучение в университете Rutgers Newark/NJIT.
1990-е
Окончив университет, я устроился на должность программиста в отдел рейтингов и андеррайтинга компании Blue Cross Blue Shield of New Jersey (BCBSNJ). Я начал программировать в Clipper 5.x, а позднее освоил Windows-версию Clipper, которая называлась CA-Visual Objects. Мне довелось поработать в DOS, Windows 3.1, OS/2, а затем и в Windows 95/NT.
![](https://habrastorage.org/getpro/habr/upload_files/de4/21b/b3a/de421bb3ac087976f6ffd4353d7f84d8.png)
В середине 90-х годов BCBSNJ передала свой ИТ-отдел на аутсорсинг компании Integrated System Solutions Corporation (ISSC), которая позже превратилась в IBM Global Services. Я в одночасье стал сотрудником IBM. Сначала это немного пугало, но оказалось, что это отличная карьерная возможность. Работа в IBM привела меня на путь изучения самого важного языка программирования в моей карьере. Именно на этом пути я открыл для себя, кто такой Алан Кей, и узнал, какое влияние он оказал на современные вычисления.
В октябре 1994 года я посетил пятинедельную программу практического погружения в объектно-ориентированное программирование на Smalltalk. С этой программы начинался курс Университета объектных технологий IBM. Пять недель я провел в Атланте, изучая ООП и паттерны проектирования с помощью VisualAge Smalltalk от IBM. Занятия проходили каждый день и длились по 6-8 часов, а преподавали нам потрясающие отраслевые эксперты в области ООП и Smalltalk, такие как Гика ван Эмде Боас. Остальные 4-6 часов, остававшиеся в сутках, я тратил на кодинг и изучение VisualAge Smalltalk в лаборатории. Кроме того, в эти пять недель я прочитал свою первую книгу по объектно-ориентированному проектированию, написанную Ребеккой Вирфс-Брок. Ребекка Вирфс-Брок — еще один из моих «героев» от мира программирования. Я считаю себя счастливым обладателем подписанных копий обеих ее книг по ООП.
![](https://habrastorage.org/getpro/habr/upload_files/f30/887/845/f30887845411d3f946f82a34eecc097d.png)
Smalltalk закрепил мою любовь к программированию. Это прекрасный язык и потрясающая среда для обучения. Мне нужно было поделиться этими вновь обретенными знаниями с миром.
Вернувшись на работу, я решил во что бы то ни стало найти проект, который я мог бы построить, используя IBM VisualAge Smalltalk. А пока что продолжил создавать приложения на CA-Visual Objects. Теперь я мог применить новые навыки программирования и проектирования на этом объектно-ориентированном языке. Я был заряжен энергией и хотел поделиться этой энергией с другими. Поэтому я агитировал за отправку на пятинедельную программу погружения в Smalltalk как можно больше своих коллег. Примерно через год вместе с двумя другими разработчиками, которые прошли программу погружения в Smalltalk, я начал работать над проектом по созданию системы Medicare Enrollment. В помощь нам удалось привлечь экспертов-наставников из группы IBM Rapid Solutions. Это был огромный и познавательный опыт.
Затем я занялся перепроектированием и повторной реализацией всех систем корпоративного рейтинга и андеррайтинга, которые я ранее написал на Clipper, только теперь с использованием IBM VisualAge Smalltalk. Во время этой работы, которая длилась около трех лет, мы наняли эксперта-консультанта по Distributed Smalltalk. Именно от него я узнал, кто такие Алан Кей и Дэн Ингаллс. Дэн Ингаллс — еще один из моих программистов-героев, который написал потрясающую книгу под названием Design Principles Behind Smalltalk.
![Дэн Ингаллс, Википедия Дэн Ингаллс, Википедия](https://habrastorage.org/getpro/habr/upload_files/df9/9bd/3a0/df99bd3a04b0a49b6c2f28fc31a915cd.png)
2000-е и наши дни
В 2000 году я решил оставить свой прекрасный путь разработчика на Smalltalk и переключиться на Visual Basic и более популярные в корпоративном секторе языки, такие как Java. Мой бывший наставник по Distributed Smalltalk посоветовал мне взяться за изучение Java и как можно скорее стать в нем экспертом — так я и поступил. Меня радовала открывающаяся перспектива, но было жаль прощаться с прошлым и уходить на Visual Basic и Java. Я променял летающую машину времени DeLorean на велосипед Schwinn и грузовик Ford. Велосипед выглядел новым и блестящим, но по большей части бесполезным для чего-либо, кроме тривиальных приложений. Грузовик позволял делать много тяжелой работы, но требовал немало бензина (сил разработчика).
В Goldman Sachs (GS) я пришел в 2001 году. Я начал с должности архитектора приложений, был повышен до CTO, год прожил в Лондоне, стал техническим директором по технологии контроллеров, был повышен до Tech Fellow, создал удивительно талантливую команду Core Platform Team, обеспечил развитие присутствия GS на GitHub и был повышен до управляющего директора. Подумать только, целых 13 лет моей жизни уместились всего в одном предложении! В GS я больше 15 лет программировал на Java и создал библиотеку, которая в 2012 году была опубликована под названием GS Collections, а в конце 2015 года стала Eclipse Collections.
Почему я написал Eclipse Collections? После пяти лет программирования на Java я устал повторять одни и те же шаблоны программирования снова и снова. Я понимал, чего не хватало в Java, потому что в эпоху работы со Smalltalk встретил немало крутых, продвинутых решений. В то время мне было сложно объяснить разработчикам, чего именно они лишены в Java. Поэтому я решил написать собственную реализацию некоторых функций, которых после Smalltalk мне остро не хватало в Java. За эти годы я обучил многих Java-разработчиков Smalltalk, ООП, OOAD, Lambdas, TDD, рефакторингу. Все это были вещи, которые я освоил на Smalltalk еще в 1990-х годах.
Восторг от программирования
Самый важный урок, который я стремился преподать разработчикам на протяжении многих лет, заключается в том, что программирование — это весело. Если ты программируешь и не получаешь удовольствия, то, возможно, ты всё делаешь неправильно. Это может быть не твоя вина. В таком случае попроси о помощи. Наш потенциал раскрывается на полную мощность только тогда, когда мы пишем код в удовольствие. Это творчество, постоянная игра с самим собой. Чтобы решать сложные современные проблемы, важно научиться творческому подходу к своей работе.
Я очень увлечен Eclipse Collections, но вовсе не потому, что меня когда-либо интересовали подобные фреймворки. Дело в том, что с помощью Eclipse Collections я могу научить Java-разработчика получать настоящее удовольствие от программирования на этом языке. За прошедшие годы я встречал очень много Java-разработчиков, которые либо переходили в менеджеры, либо вообще бросали программирование, потому что язык, казалось, отшибал у них любовь к разработке.
Но это совершенно неправильный, ненормальный путь! Да, я и сам ненавидел писать на Java первые несколько лет, но я никогда не терял своей любви к программированию в целом. Мне не хватало любимых Smalltalk и Clipper, потому что с ними я мог работать гораздо продуктивнее и веселее! Несколько лет я работал в Java Specification Request (JSR) 335 Expert Group (EG) с такими экспертами отрасли, как Брайан Гетц, Даг Лиа, Дэн Хайдинга, Реми Форакс, Сэм Пуллара, Тим Пейерлс, Боб Ли, Кевин Буррильон, Андрей Бреслав, Влад Захаров и некоторыми другими людьми. Мы все хотели улучшить язык Java, внедрив в него лямбды, чтобы программирование на нем приносило гораздо больше пользы и удовольствия. Сейчас я могу оглянуться назад и сказать, что помог JSR 335 EG «изобрести будущее» для Java. Работа на Java с версии 8 стала гораздо интереснее и эффективнее. Но на свете еще так много безрадостных разработчиков. Возможно, они просто не знают, как себе помочь!
Я все еще люблю Smalltalk, и я уверен, что всегда буду любить. Теперь я научился любить программирование еще и на Java. Можно смело выбросить полотенце и выбрать новый язык или даже уйти в совершенно другую профессию. Секрет в том, что я заставил себя поверить в то, что программирование — это весело, а затем не покладая рук работал со множеством экспертов, чтобы сделать Java более веселым не только для себя, но и для миллионов других разработчиков.
Делиться — значит заботиться
Делай то, что ты любишь. Люби то, что ты делаешь. Получай за это деньги, если можешь — и пока можешь. Плати за это вперед. Делись своей радостью от программирования с другими. Мотивируй и вдохновляй будущие поколения на достижение высот, которые они способны покорить. Придерживайтесь этих простых принципов и, возможно, вы сможете осознать и оценить по достоинству, как это здорово: постоянно испытывать восторг от программирования. У меня получилось.
Недавно я выступил на Pittsburgh Java User Group. Моя речь называлась «Smalltalk или Java? Почему бы не то и другое!». На YouTube есть запись этого выступления. При желании вы можете посмотреть, как я вживую пишу код в Smalltalk IDE, чего я не делал уже очень давно. Это отличный пример того, как я делюсь своей радостью от программирования на Smalltalk и Java с другими людьми. Если у вас найдется время посмотреть его — заранее благодарен! Надеюсь, вам понравится!
После сорока лет кодинга я решил писать гораздо чаще. Я выполняю личную миссию: поделиться с людьми как можно большим количеством информации о Java, Eclipse Collections и Smalltalk. Сейчас в месяц я пишу 1-2 поста на Medium. В августе исполнится 5 лет с того момента, как я впервые публично взялся за перо. Я хочу внести свой вклад в то, чтобы сделать будущее лучше и сохранить радость программирования для будущих поколений.
Семь лет назад я получил замечательный подарок от одного из моих компьютерных героев — Алана Кея. Ноутбук XO, который он подписал для меня, — это то, чем я всегда буду дорожить. Алан тогда не мог знать, ведь он только что встретил меня, насколько пророческим оказался его автограф. Он написал: «Будущее будет лучше» Когда он это написал, моя жена готовилась к поездке в больницу для проведения трансплантации стволовых клеток. У меня не было иного выхода — только всей душой поверить в то, что Алан написал мне. Этот подписанный ноутбук буквально довел меня до слез, когда я принес его домой и рассказал жене эту историю. Алан преподнес нам в дар свой бесконечный оптимизм.
Да, в любой момент времени твоя работа или личная жизнь могут показаться тебе полным кошмаром. Оптимист во мне поверил в пророчество Алана, хотя реальность вокруг меня отнюдь не располагала к радости. Будущее будет лучше, но только если мы будем очень усердно работать, чтобы сделать его таким. Если мы будем работать вместе, сотрудничать и делиться друг с другом, мы сможем создать это самое «лучшее будущее».
Одна из радостей, которую я познал в программировании на Java и которую не успел испытать в Smalltalk, — это радость от работы с большим и дружным сообществом. Сообщество Java просто невероятно. Я рад быть частью этого яркого сообщества. Вместе мы продолжим делать будущее лучше — для всех, кто работает с Java. Восторг от программирования обязан продолжаться!
Комментарии (26)
IvanSTV
01.07.2022 09:22+15если в 1982 году получить в подарок компьютер, то не стоит удивляться. что чувак испытывал восторг от программирования. Моему восторгу, получи я его хотя бы в 1989, тоже не было бы предела. Хотел бы я посмотреть, как бы он с 11 лет восторженно программировал, родившись в семье мексиканца, собирающего томаты в Кентукки. :)
Но вообще текст показывает вполне типичный путь "совсем" старшего поколения программеров на Западе. В 90-х уже было по-разному, но для тех, кто начинал в 80-х, все как по кальке. Обеспеченные родители, собственный компьютер, раннее знакомство с программированием, университет, активно развива.ющиеся разработчики ПО, гребущие молодые кадры как не в себя, потому что кадров мало.. В таких условиях посади котенка за клавиатуру - и тот восторг от программирования испытает.
Writer4
01.07.2022 16:23+7Плюс рынок был пустой. Те, кто тогда начинали, были не винтиками в огромных корпорациях, а фактически сразу архитекторами. Такое сейчас уже невозможно, только через стартапы если, да и это все таки немного другое.
SpiderEkb
02.07.2022 10:50+4Это да. Понятия FSD/BRD тогда не существовало. Приходили люди и просили "сделайте нам красиво". И делали. С нуля. От архитектуры и до конечного продукта.
Зачастую без документации, без всего. Помню один из первых своих "проектов". Контора купила где-то по случаю (с рук) алфавитно-цифровое настенное табло. Ни документации, ничего. Только само табло и демо программку к нему. Ну и сказали - сделай нам нормальную программу чтобы большие тексты прокручивать.
Ну сделал. Но пришлось демострашку ковырять, смотреть что она куда посылает и т.п. Реинжениринг протокола (благо, оказался достаточно примитивным).
С базами тоже работал. Но как-то ни dBase, ни FoxPro, ни Clipper сильно не впечатлили. А вот Clarion - да. С его генератором экранных форм и кода под созданный формат БД. Еще с библиотекой Paradox Engine поработать пришлось.
Но больше всего, помню, впечатлила dbVista (ныне Raima Data Manager - RDM). Сетевая модель БД с наборами, адресами записи в БД, DDL (язык описания данных)...
Веселое время было. Постоянно что-то новое узнавали, погружались во все это...
maxstar
01.07.2022 10:07+1Ловлю себя на мысли, что сравнение с ребенком в магазине игрушек - это прям про меня! Действительно - компьютеры дают воозможность качественно поменять свою жузнь, а уж что вы будете делать с этой возможностью - изучасть новые языки программирования, тупить в фейсбуке или играть - зависит только от вас!
DikSoft
01.07.2022 11:41+4Удивительно поймана и передана эмоциональная составляющая истории. Точно так же был восторг от Dbase III+ , FoxBase, Clipper 5.0 - 5.2. Было ощущение, радости от возможностей. Были потом и тяжёлые языки.
Уже лет 15 как не программист, но похожие позитивные моменты сейчас дарит периодически ... PowerShell !Хороший перевод, и редкий нынче не выдуманный оптимистичный текст. Спасибо.
Writer4
01.07.2022 16:05+1Clipper - да. В те далёкие времена там уже были код-блоки, которые потом переизобрели как лямбды. Но конечно, отдав в СА - язык угробили. А мог бы вырасти в хороший язык для бизнес-приложений.
DikSoft
01.07.2022 16:07+1Согласен. Там ещё и препроцессор был великолепный.
CA Clipper похоронили, увы.
paranoid_sonata
01.07.2022 12:02+5" написал свою первую программу — она вычисляла недельную зарплату сотрудника с учетом сверхурочных " Как же это романтично и увлекательно должно быть.
Writer4
01.07.2022 16:18+3Почему нет? Это сейчас тоска, а например тогда, в 90-е когда в страну пошли РС, всякая бухгалтерия и учёт это фактически то, с чего все начиналось. Не знаю насчёт романтики, но увлекательно было точно.
Red_Nose
03.07.2022 00:48+1Тю, давай на счетах "нарисуешь" свою романтику. Ладно, можешь на программируемом калькуляторе. Но там питона нет :) А вот "мало мозгов" - есть. И "поместиться" в них очень даже "романтично".
Угу, раньше на хюндай сонату запчасти - г.но вопрос, а сейчас - "романтично"
saipr
01.07.2022 20:15+7Моя история
Сейчас мне 51 год, и спустя 40 лет практики на более чем 20 различных языках я рад признаться, что до сих пор сижу на этом «крючке».Меняем "51 год" на 69, "40 лет" на 50, "на более чем 20 различных языках" не считал, боюсь сбится со счёта — и окажется, что это и моя история:
Вот здесь можно заглянуть, например, в 1987 году.
acordell
02.07.2022 11:17+3Я, наверное, какой-то неправильный программист, но наибольший восторг у меня вызывало написание программ на языке ассемблера. Особенно под мейнфреймы. Очень интересные ощущения, когда видишь, что вообще в состоянии сделать программулинка длиной всего в несколько сотен байт. Обладая при этом практически наивысшей эффективностью и производительностью. Но сейчас так почти никто уже не пишет...
Сейчас написал "Hello world!" на каком-нибудь C# и получил исполняемый модуль в 150kb. Мелочь по современным меркам. Ну.... да, IL, метаданные, переносимость.... Но, блин, 153,6 тысяч(!) байт... Сидишь и думаешь, ну что за г... Скучаю по былым временам.
Red_Nose
03.07.2022 00:53+1Пфффф, попробуйте "Hello world!" на браинфак :)
А про ассемблер, мейнфреймы и стоящий буй нонешним падаванам хрен расскажешь :(
werevolff
02.07.2022 17:10+1По-моему, важно иногда испытывать боль от программирования, ощущать сжатые сроки, вовлечëнность в Бизнес. К сожалению, опыт американских разрабов на дотациях отличается от русского. Пока ты ощущаешь боль, ты жив. Ты творишь, наслаждаешься. Растëшь.
Red_Nose
03.07.2022 01:04А-фи-геть !! " американских разрабов" испытывают боль, а не удовлетворение и самоуважение ?
Это у рогозинских айтишников реально боль - тама босс оперирует трын-травой весьма профффесионально. Пиндосы - слабаки, а еще деньги считать умеют, не, ну точно слабаки :)
werevolff
03.07.2022 04:09+1У вас какие-то слишком токсичные и агрессивные националистические высказывания, не содержащие, кстати, каких-либо адекватных опровержений сказанному мной.
dyadyaSerezha
02.07.2022 17:39+4Не, молодец какой - полжизни проработал начальником или большим начальником, делал прямо на работе свой пет проект про коллекции, а не маленькие дополнения в огромных корпоративных проектах - и доволен! Почему-то меня это не удивляет.
dkuzminov
03.07.2022 01:59Если бы все было так хорошо, то почему в программировании такой большой процент профессиональных выгораний? "Если ты программируешь и не получаешь удовольствия, то, возможно, ты всё делаешь неправильно" -- золотые слова, но на практике получается, что, если ты зарабатываешь программированием деньги, то ты ВЫНУЖДЕН делать это НЕПРАВИЛЬНО. И да, программисты -- люди очень эмоционально вовлеченные в то, чем они занимаются. Потому, сталкиваясь с реальностью, мы либо отказываемся от работы в большинстве корпораций, либо ищем забвение в пет-проектах, либо умудряемся заставить себя наступить на горло собственной песни и за деньги ваять как попросят, либо выгораем.
vassabi
03.07.2022 15:04мне кажется, что это проблема недобросовестного менеджмента, а не из-за программистов (типа "сами виноваты") и не изза професии ("а вот был бы бухгалтер - такого бы не случилось").
dkuzminov
03.07.2022 20:15Причины данного явления -- это уже отдельная тема. Но факт в том, что выгорание в среде программистов -- явление повсеместное (по некоторым оценкам 70% сотрудников Google признались в его наличии). Поэтому статьи в духе "я всю свою долгую жизнь только и делал, что программировал, и всегда испытывал только восторг" -- наивны, если не считать программированием только то, чем мы занимаемся после работы.
maxwolf
Чувак, конечно, молодец, однако "no Real Programmer would ever use a computer whose operating system is called SmallTalk, and would certainly not talk to the computer with a mouse."