История о 40 годах программирования и ощущении себя ребенком в магазине игрушек.

Моя история программирования начинается

Я люблю кодить. Я начал программировать на Бейсике, когда мне было 11 лет. Я из счастливого поколения, которое первыми получили доступ к персональным компьютерам в своих домах. Впервые я начал изучать Бейсик на Epson HX-20. Некоторые считают Epson HX-20 первым в мире портативным компьютером. Я до сих пор жалею, что продал этот замечательный образец компьютерной истории, когда учился в колледже.

Я часами читал руководства, прилагаемые к компьютеру, и написал свою первую программу, которая рассчитывала недельную оплату с учетом сверхурочных. Вскоре я начал экспериментировать и с возможностями графического программирования компьютера. Именно тогда я открыл для себя радость программирования. Я был на крючке.

Рассказываю свою историю

Сейчас мне 51 год, и после 40 лет написания кода на более чем 20 различных языках программирования я рад сообщить, что я все еще на крючке.

Последние двадцать лет я рассказываю истории о своей карьере и любви к программированию детям в возрасте от 15 до 100 лет. Я всегда подчеркиваю, что буду «продолжать программировать до тех пор, пока кто-нибудь не оторвет мои холодные мертвые пальцы от клавиатуры». Это может звучать немного болезненно, но ясно передает суть. Программирование — моя страсть, и мне повезло, что мне платят за то, что я люблю. За последние 20 лет я понял, что помимо того, что сам пишу код, я люблю учить этому других.

В хороших историях есть герои

Лучший способ предсказать будущее — это изобрести его.

-Алан Кей, 1971 г.

На изображении выше ноутбук XO, который я купил во время программы Один ноутбук на ребенка: дай один, получи один в 2007 году. На экране запущена программа Squeak Etoys. Алан Кей считается разработчиком Etoys, созданного на Squeak Smalltalk.

Мне посчастливилось встретить Алана Кея, когда я работал в Goldman Sachs. Его пригласили на Переговоры в GS Panel, когда я был сотрудником. Мне нравится, что я могу смотреть это выступление и переживать этот опыт в любое время. Если вы не знаете, кто такой Алан Кей, или просто не видели этого выступления раньше, вы можете увидеть и услышать, как Алан рассказывает часть своей истории по ссылке выше. Алан Кей был достаточно любезен, чтобы подписать мой ноутбук XO, когда я встретился с ним в тот же день, когда это выступление — 26 февраля 2015 года.

В хороших историях часто есть герои. Алан Кей — один из моих компьютерных героев. Я понятия не имел, кто такой Алан Кей, когда мне было 11 лет. Я не знал, кто такой Алан Кей, пока мне не исполнилось двадцать пять. По какой-то причине мне суждено было узнать, навсегда измениться и в конце концов встретить своего героя.

1980-е

С середины до конца 80-х я изучил несколько языков программирования, включая BASIC, FORTRAN, COBOL, Pascal, Logo, Prolog, Dbase III+ и Clipper '87. Я изучил Dbase III+ в середине 1980-х, а затем сразу после окончания школы устроился консультантом на полставки в Clipper Summer’87. Это помогло мне оплатить обучение в университете Rutgers Newark/NJIT.

1990-е

После окончания школы я устроился корпоративным программистом в отдел рейтингов и андеррайтинга Blue Cross Blue Shield of New Jersey (BCBSNJ). Я начал программировать в Clipper 5.x, а позже учился и программировал в версии Clipper для Windows, которая называлась 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 года я посетил 5-недельную программу практического погружения в объектно-ориентированное программирование с помощью Smalltalk. Программа была первой частью Университета объектных технологий IBM. Я провел 5 недель в Атланте, штат Джорджия, изучая объектно-ориентированное программирование и проектирование с помощью IBM VisualAge Smalltalk. Занятия длились по 6–8 часов каждый день, и нас обучали замечательные отраслевые эксперты в области объектно-ориентированного проектирования и Smalltalk, такие как Ghica van Emde Boas. Оставшиеся 4–6 часов я потратил на программирование и изучение VisualAge Smalltalk в лаборатории. Я также прочитал свою первую книгу Объектно-ориентированный дизайн, написанную Ребеккой Вирфс-Брок во время 5-недельной программы. Ребекка Вирфс-Брок — еще одна из моих героинь программирования. Я считаю, что мне повезло иметь подписанные экземпляры обеих ее книг по объектно-ориентированному дизайну.

Smalltalk укрепил мою любовь к программированию. Это красивый язык и захватывающая среда обучения. Мне нужно было поделиться этими новыми знаниями с миром.

Вернувшись к работе, я попытался найти проект, который мог бы построить с помощью IBM VisualAge Smalltalk. Тем временем я продолжал создавать приложения с помощью CA-Visual Objects. Теперь я смог применить свои новые навыки объектно-ориентированного программирования и проектирования на этом объектно-ориентированном языке. Я был полон энергии и хотел поделиться этой энергией с другими. Поэтому я рекомендовал отправить больше разработчиков, с которыми я работал, на 5-недельную программу погружения в Smalltalk. Примерно через год я начал работать над проектом по созданию системы регистрации Medicare с использованием IBM VisualAge Smalltalk вместе с двумя другими разработчиками, которые участвовали в программе погружения в Smalltalk. Мы привлекли для работы с нами опытных наставников из IBM Rapid Solutions Group. Мы использовали и изучили структуру сохраняемости, которую они построили в проекте. Это был отличный опыт обучения.

Затем я перепроектировал и повторно внедрил все корпоративные рейтинговые системы и системы андеррайтинга, которые я ранее написал в Clipper, только теперь с использованием IBM VisualAge Smalltalk. В ходе этой работы, длившейся около трех лет, мы наняли эксперта-консультанта по Distributed Smalltalk. Он был наставником для меня и другого коллеги и многому нас научил, как думать о построении и тестировании распределенных систем. Он также рассказал нам об истории программирования и Smalltalk. Именно тогда я узнал от него, кто такие Алан Кей и Дэн Ингаллс. Дэн Ингаллс — еще один из моих героев-программистов, написавший потрясающую статью под названием Принципы проектирования, лежащие в основе Smalltalk.

Y2K+

В 2000 году я решил оставить свою прекрасную жизнь программиста на языке Smalltalk и перейти к кодированию на Visual Basic и других популярных для предприятий языках, таких как Java, потому что именно на этом сосредоточилась индустрия. Мой бывший наставник по Distributed Smalltalk посоветовал мне изучить Java и стать в ней экспертом, что я и сделал. Я был рад возможности будущего, но несчастен из-за того, что мне пришлось писать код на Visual Basic и Java. Я обменял летающую машину времени DeLorean на велосипед Schwinn и грузовик Ford. Велосипед выглядел новым и блестящим, но в основном был бесполезен ни для чего, кроме тривиальных приложений. Грузовик мог поднимать много тяжестей, но требовал много бензина (усилия разработчика).

Я присоединился к Goldman Sachs (GS) в 2001 году. Я начинал как архитектор приложений, был повышен до вице-президента, провел год, живя в Лондоне, стал техническим директором по технологиям контроллеров, был повышен до технического сотрудника, создал удивительно талантливую команду Core Platform. , создал растущее присутствие GS на GitHub и был назначен управляющим директором. Это около тринадцати лет в приговоре. Я программировал на Java более 15 лет, работая в GS, и создал библиотеку коллекций на Java, исходный код которой был открыт как GS Collections в 2012 году, а к концу 2015 года он стал называться Eclipse Collections.

Почему я создал Коллекции Eclipse? После пяти лет программирования на Java я устал повторять одни и те же шаблоны кодирования снова и снова. Я узнал многое из того, чего не хватало в Java, потому что я видел так много расширенных функций при программировании на Smalltalk. В то время мне было сложно объяснить разработчикам, чего им не хватало в Java. Поэтому я решил реализовать некоторые функции, которых мне не хватало в Smalltalk, на Java. На протяжении многих лет я обучал многих Java-разработчиков Smalltalk, ООП, OOAD, лямбда-выражениям, TDD и рефакторингу. Это все, чему я научился в Smalltalk в 1990-х.

Радость программирования

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

Я очень увлечен коллекциями Eclipse, но не потому, что меня особенно интересовали структуры коллекций. Это потому, что с помощью коллекций Eclipse я могу научить разработчика Java получать настоящее удовольствие от программирования на языке программирования Java. Я встречал так много разработчиков Java за эти годы, которые либо стали менеджерами, либо вообще бросили программирование, потому что язык, казалось, выбил из них любовь к программированию.

Так быть не должно. Первые несколько лет я ненавидел программирование на Java, но никогда не терял любви к программированию. Я определенно скучал по программированию в Smalltalk и Clipper, потому что с ними было намного веселее и продуктивнее работать. Я провел несколько лет, работая над запросом спецификации Java (JSR) 335 Expert Group (EG) с такими отраслевыми экспертами, как Брайан Гетц, Дуг Ли, Дэн Хейдинга, Реми Форакс, Сэм Пуллара, Тим Пайерлс, Боб Ли, Кевин Буррильон, Андрей Бреслав, Влад Захаров и некоторые другие. Мы все хотели улучшить язык Java, представив лямбда-выражения, чтобы сделать программирование на нем более увлекательным и продуктивным. Сейчас я могу оглянуться назад и сказать, что помог JSR 335 EG «изобрести будущее» для Java. Теперь программирование на Java стало намного веселее и гораздо менее утомительно для работы со времен Java 8. Но все еще есть так много разработчиков, которым еще только предстоит испытать радость. Помощь доступна!

Я все еще люблю Smalltalk, и я уверен, что всегда буду любить. Теперь я научился любить программирование и на Java. Я мог бы сдаться и выбрать другой язык для программирования или перейти в совершенно другую профессию. Я верил, что программирование — это весело, и много работал с талантливыми экспертами из сообщества, чтобы сделать Java более увлекательной не только для себя, но и для миллионов других Java-разработчиков.

Делиться — значит заботиться

Делай то что любишь. Любите то, что вы делаете. Платите за это, если и пока можете. Платите вперед. Разделите радость программирования с другими. Мотивировать и вдохновлять будущие поколения на достижение всего, на что они способны. Тогда, возможно, вы поймете и оцените Радость программирования так же, как и я.

Недавно я выступил с докладом в Питтсбургской группе пользователей Java под названием «Smalltalk или Java? Почему бы не Оба!». В следующем блоге есть ссылка на запись YouTube. Вы можете увидеть, как я вживую программирую в среде Smalltalk IDE, чего я не делал уже очень давно. Это отличный пример того, как я делюсь своей радостью программирования на Smalltalk и Java с другими. Если вы найдете время, чтобы посмотреть его, спасибо! Я надеюсь, вам понравится это!



Будущее

После 40 лет программирования я решил писать намного чаще. Моя личная миссия — поделиться всем, что я помню о Java, Eclipse Collections и Smalltalk. Сейчас я пишу 1-2 блога в месяц на Medium. К августу этого года я буду публично вести блог в течение последних пяти лет. Я хочу внести свой вклад в то, чтобы сделать будущее лучше и сохранить радость программирования для будущих поколений.

Семь лет назад я получил замечательный подарок от одного из моих компьютерных героев — Алана Кея. Ноутбук XO, который он подписал для меня, — это то, чем я всегда буду дорожить. В то время Алан не мог этого знать, так как только что познакомился со мной, но то, что он написал на ноутбуке, показалось мне пророчеством. Он написал: «Будущее будет лучше. «В то время, когда он это писал, моя жена через месяц готовилась лечь в больницу для пересадки стволовых клеток в борьбе с ОМЛ. Мне нужно было поверить в то, что он написал. Этот подписанный ноутбук буквально довел меня до слез, когда я принес его домой и поделился этой историей с женой. Алан разделял дар оптимизма.

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

Одна из радостей, которые я узнал о программировании на Java и которой я не испытал в Smalltalk, — это радость от работы с большим, совместным и поддерживающим сообществом. Сообщество Java абсолютно невероятно. Это дар, который продолжает давать. Для меня большая честь быть частью этого динамичного сообщества. Вместе мы продолжим делать будущее лучше для всего сообщества Java. Радость программирования продолжается.

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



Я являюсь руководителем и ответственным за проект OSS Eclipse Collections в Eclipse Foundation. Eclipse Collections открыт для пожертвований. Если вам нравится библиотека, сообщите нам об этом, пометив ее звездочкой на GitHub.