[Перевод] Восторг от программирования
История о 40 годах кодинга и человеке, который до сих пор, садясь за работу, чувствует себя ребенком в магазине игрушек.
eToys запущена на моем ноутбуке, подписанном Аланом Кеем 26 февраля 2015 года: «Будущее будет лучше»
Моя история программирования: как всё начиналось
Я обожаю кодинг. Писать на BASIC я начал еще в 11 лет. Дело в том, что я принадлежу к удачливому поколению — именно мы одними из первых начали пользоваться ПК не выходя из дома. Первый опыт с BASIC я получил на компьютере Epson HX-20. А это, на минуточку, один из первых портативных компьютеров в мире! До сих пор я жалею, что продал этот замечательный образчик компьютерной истории, когда учился в колледже.
Epson HX-20, https://commons.wikimedia.org
Часами напролёт я изучал мануалы, которые прилагались к компьютеру, и написал свою первую программу — она вычисляла недельную зарплату сотрудника с учетом сверхурочных. А через некоторое время я начал робкие эксперименты с графическими возможностями ПК. Именно тогда я впервые испытал восторг от программирования. И меня зацепило — раз и навсегда.
Моя история
Сейчас мне 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
Мне посчастливилось познакомиться с Аланом Кеем, когда я работал в 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.
В середине 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 в лаборатории. Кроме того, в эти пять недель я прочитал свою первую книгу по объектно-ориентированному проектированию, написанную Ребеккой Вирфс-Брок. Ребекка Вирфс-Брок — еще один из моих «героев» от мира программирования. Я считаю себя счастливым обладателем подписанных копий обеих ее книг по ООП.
Smalltalk закрепил мою любовь к программированию. Это прекрасный язык и потрясающая среда для обучения. Мне нужно было поделиться этими вновь обретенными знаниями с миром.
Вернувшись на работу, я решил во что бы то ни стало найти проект, который я мог бы построить, используя IBM VisualAge Smalltalk. А пока что продолжил создавать приложения на CA-Visual Objects. Теперь я мог применить новые навыки программирования и проектирования на этом объектно-ориентированном языке. Я был заряжен энергией и хотел поделиться этой энергией с другими. Поэтому я агитировал за отправку на пятинедельную программу погружения в Smalltalk как можно больше своих коллег. Примерно через год вместе с двумя другими разработчиками, которые прошли программу погружения в Smalltalk, я начал работать над проектом по созданию системы Medicare Enrollment. В помощь нам удалось привлечь экспертов-наставников из группы IBM Rapid Solutions. Это был огромный и познавательный опыт.
Затем я занялся перепроектированием и повторной реализацией всех систем корпоративного рейтинга и андеррайтинга, которые я ранее написал на Clipper, только теперь с использованием IBM VisualAge Smalltalk. Во время этой работы, которая длилась около трех лет, мы наняли эксперта-консультанта по Distributed Smalltalk. Именно от него я узнал, кто такие Алан Кей и Дэн Ингаллс. Дэн Ингаллс — еще один из моих программистов-героев, который написал потрясающую книгу под названием Design Principles Behind Smalltalk.
Дэн Ингаллс, Википедия
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. Восторг от программирования обязан продолжаться!