Сегодня в нашей виртуальной студии один из самых известных дотнетчиков — Джеффри Рихтер.

В данный момент он — Partner Software Architect в Microsoft, работающий по направлению Distributed Cloud Apps & Storage. Иначе говоря, человек, который знает об Azure Storage всё.

F.A.Q.

Слишком много текста. О чём это всё?
Чтобы вам было веселей читать, для этой статьи мы придумали более интересную вёрстку. Слева будут говорящие головы, а справа — текст. Если вам уныло листать до интересующей части, то в оглавлении есть анкерные ссылки. В ролях:


Евгений phillennium Трифонов (нетехнические вопросы)
  • Советы разработчикам по созданию компании
  • Комбинирование разных видов деятельности
  • Что читать, что изучать, как писать


Олег olegchir Чирухин (технические вопросы)
  • Зачем Рихтер изучает JS, Golang и Python
  • Стоит ли продолжать писать на C++
  • Эволюция и будущее разработки на платформе Windows, .NET и вообще
  • Захватит ли JavaScript мир, нужна ли типобезопасность
  • Немного о пользе облачных провайдеров
  • Что лучше иметь — личный самолет или личный вертолёт
  • Как всё успевать



Почему эта статья попала в хаб JavaScript?
Только для тех, кому интересно мнение архитектора Azure относительно JS и его позиция в холиваре о типобезопасности. Этот холивар перетекает у нас из интервью в интервью, и конца ему не видно.


Почему эта статья попала в хаб С++?
Изначально Рихтер писал книги про C++. Только для тех, кому интересно мнение архитектора Azure относительно будущего и применимости C++


Джефф стал известен еще в начале 90-х, когда написал книгу о том, как программировать Windows 3.1. Его книга «Programming Applications for Microsoft Windows» стала классикой, позже выпускалась как «Windows via C/C++» и выдержала несколько изданий.

С появлением .NET он написал «CLR via C#» — тоже получилась классика, тоже несколько изданий. В то время он был одним из основателей компании Wintellect и, формально не будучи частью Microsoft, оказался более свободен в оценках. Чем и заработал репутацию крупного независимого эксперта по Windows. Это человек-легенда уровня Чарльза Петцольда и Дона Бокса.





О жизни: инженер, писатель, предприниматель


У нас много разных вопросов к вам, и я начну с несколько менее относящихся к технической части. Правильно ли я понял, что вы одновременно работаете в Microsoft и Wintellect?




Я был владельцем Wintellect в течение восемнадцати лет и вплоть до прошлой недели. Три года назад я пришёл в команду Azure в Microsoft, и с тех пор я не работаю в Wintellect. Каких-либо существенных связей с Wintellect у меня не осталось.




Понял вас. Но я всё же хотел бы задать вам несколько вопросов относительно вашего опыта как создателя Wintellect. На наших конференциях собирается много программистов, которые хорошо знакомы с процессом разработки ПО, и некоторые из них, скорее всего, подумывают о том, чтобы создать свою компанию, но при этом с предпринимательской стороной дела они не знакомы. У вас же есть знания и в той, и в другой области, поэтому было бы интересно услышать ваш совет людям, собирающимся основать свою компанию.




Вы однозначно не будете тратить всё своё время на разработку, и будете узнавать много нового о других сферах: о бизнесе, управлении деньгами, экономике, финансах, найме и увольнении. Вам нужно будет постоянно принимать довольно много решений и много взаимодействовать с людьми: с клиентами, партнёрами. Вам нужно будет находить варианты, устраивающие все стороны. Несмотря на всё это, в Wintellect мне удавалось проводить достаточно времени за разработкой, поскольку у нас работали люди, занимавшиеся в основном бизнесом. Тем не менее, мне также приходилось участвовать в предпринимательской стороне дела, и я это делал с радостью, поскольку это был интересный новый опыт. Тот факт, что мне не нужно было думать о битах и байтах круглые сутки, сделал меня, на мой взгляд, более цельной личностью. Я ни о чём не сожалею.




Столкнулись ли вы с какими-либо неожиданными трудностями? Или, наоборот, оказались ли какие-либо вещи проще, чем вы ожидали?




Наш путь однозначно был весьма неровным: иногда бизнес шёл хорошо, приходили новые клиенты. В другие периоды всё было несколько иначе. Когда мы сделали видеоподписку WintellectNOW, запустить её и добиться прибыльности оказалось значительно сложнее, чем мы думали. В итоге это получилось, и сейчас она достаточно успешна, но это заняло примерно на год больше, чем мы рассчитывали. Помимо этого, неожиданности случаются с работниками: некоторые замечательны, другие приносят компании вред, и эти вещи часто выясняются лишь позже — в повседневной работе они незаметны. В целом, наши ожидания часто обманывались и в хорошую, и в плохую сторону.




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




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




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




Определённо помогает. Из всех занятий написание книг поглощает больше всего времени и нервов, заставляет уделять внимание языку, грамматике, организации материала, поиску правильных демонстраций. Это очень трудно, и написание каждой книги занимает, как правило, много месяцев. Но когда эта работа проделана, сделать слайды уже значительно проще, поскольку демонстрации уже есть, и надо просто дать выжимку материала. Далее, понимание внутреннего устройства различных систем позволяет мне давать правильные советы и выбирать нужную технологию для решения проблем при работе консультантом или в Microsoft в команде Azure Storage. В целом, все эти виды деятельности очень сильно помогают друг другу.




Изменил ли ваш опыт написания книг то, как вы читаете книги? Уделяете ли вы больше внимания книгам из-за этого?




Думаю, что изменил, и, мне кажется, я также уделяю больше внимания презентациям других докладчиков. Я смотрю, есть ли у докладчика навык подачи материала, насколько он знаком с материалом, повторяет ли он уже сказанное другими или действительно глубоко осмысляет проблему. На те же вещи я обращаю внимание и в книгах: хорошо ли написана книга, присутствует там ли глубокое техническое понимание вопроса, даются ли там прямые рекомендации или описывается внутреннее устройство системы. В своих книгах я стараюсь описать работу системы, отметить положительные и отрицательные стороны, показать способы откладки возможных проблем, описать требования к производительности. Мне кажется, что мои книги считаются относительно успешными благодаря тому, что я даю много контекста для каждой технологии, а не просто указываю: сделай так, сделай иначе. Я продолжаю изучать новые технологии, поэтому я читаю техническую литературу, смотрю видео с YouTube и из других источников, посещаю доклады. Мне недостаточно просто узнать, что некоторая технология работает так-то и так-то, мне необходимо как можно глубже вникнуть в неё, понять, в каких случаях она хороша, а в каких — нет, какие у неё есть подвохи.




Коль скоро вы следите за книгами и докладами других авторов, можете ли порекомендовать чьи-либо работы или видео?




В последнее время я изучаю Go и Python в связи с моей работой в Microsoft, для этой цели я читаю логи команды Go и спецификацию этого языка. Меня всегда удивляло, что разработчики не читают спецификацию языка, на котором они пишут — ведь в ней полностью изложено, как язык должен работать. Вместо этого люди читают книги. Я рекомендую всегда читать спецификацию. В остальном же я обычно смотрю видеозаписи выступлений на конференциях о различных технологиях. Здесь что-либо посоветовать сложно — некоторые докладчики лучше, другие хуже.




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




Мне нравятся докладчики, которые вдаются в детали вопроса. Меня всегда интересуют доклады об управлении памятью. Из-за управления памятью обычно возникает много проблем с производительностью, что для меня весьма важно. Любой доклад о работе сборщика мусора в языке, на котором я пишу, будет мне интересен: например, используется ли в нём сжатие или нет и тому подобное. В особенности хорошо, когда доклад говорит о вещах, информация о которых малодоступна — работа сборщика мусора обычно не описывается даже в спецификации. Есть паттерны, которые делают сборку мусора более эффективной. Всё это меня интересует.





Технологии и матчасть


Давайте немного влезу в разговор со своими скучными техническими вопросами. Джеффри, вы же из Microsoft. Зачем вам Go и Python, если есть чудесный C#?




В Microsoft я работаю в команде, занимающейся SDK и инструментами для Azure Storage. Мы разрабатываем SDK для Azure Storage на множестве различных языков — Go, .NET, Python, Java, NodeJS, PHP, Ruby, C, C++. Мы изменяем структуру наших SDK, и первая реализация была выполнена на Go. Это было критическое изменение, и мы не были уверены, как на него отреагируют наши клиенты. У нас на тот момент не было Go SDK, поэтому первый SDK был написан на Go, чтобы у наших клиентов что-нибудь не сломалось. Но, получив положительные отклики, мы перешли на Java, поскольку у нас были важные клиенты, которым была нужна асинхронная библиотека Java. В связи с этим я начал изучать RxJava и, в целом, больше работать с Java. Естественно, здесь мне сильно помог мой опыт с C#. Сейчас мы занимаемся NodeJS, поэтому в данный момент я изучаю его и TypeScript. Кроме того, мы начали портировать новый SDK на .NET — здесь для меня было меньше нового, поскольку я с ним уже знаком. Следующий на очереди у нас Python, поэтому я также изучаю его. В этом заключается работа нашей команды — мы пишем SDK для всех этих языков, поэтому моя деятельность не ограничивается одним языком.




Хорошо, понял. На Amazon можно найти огромное количество ваших книг. Самая старая книга, что я нашёл там, «Windows via C/C++», датирована 2007 годом. Но вы ведь приобрели известность как автор книг еще в 90-х. Как же так?




На самом деле, у меня есть книга, изданная ещё раньше, но она совсем старая, я не уверен, что она есть на Amazon. Она была написана для Windows 3.0, т.е. речь идёт о 1990 или 1991 годе. Но её купило совсем немного людей, и про неё её мало кто знает.




Как и про Windows 3.0.




Да, это было давно.




Затем вы перешли на C# и стали писать книги про него, верно? Какое, на ваш взгляд, будущее у С++? Оно вообще есть? Стоит ли нам продолжать тянуть на себе багаж C++, или лучше переходить на Rust, Go или что-либо подобное?




Я не думаю, что у нас когда-либо останется только один язык, который победит все остальные. Сила языков программирования в том, что каждый из них особенно хорошо выполняет определённый вид работы. Я примерно каждый месяц проверяю индексы популярности различных языков, и на сегодняшний день С и С++ остаются очень широкораспространёнными. Поскольку у нашей команды Azure в Microsoft много клиентов, которые пользуются С и С++, мы от этих языков уходить не собираемся. Более того, благодаря IOT, в последнее время наблюдается рост интереса к этим языкам. Речь идёт о небольших устройствах вроде термостата, контролирующего температуру в вашей квартире. У них мало памяти и слабые процессоры, и, помимо ассемблера, лучше всего для них подходят С и С++. Так что я думаю, что эти языки будут продолжать использоваться ещё очень долго. Коль скоро мы заговорили о Rust — у меня есть некоторый опыт с ним, и, на мой взгляд, в нём очень много весьма интересных идей. Это может быть своего рода безопасный С/С++. На мой взгляд, он весьма перспективен. Тем не менее, он показался мне довольно незрелым. Наша команда ещё не занималась им, но мы продолжаем за ним следить, и в будущем ситуация может поменяться.




Я правильно понимаю, что у вас есть SDK для С и С++?




Да, у нас есть C++ SDK для Azure Storage. У некоторых других команд тоже есть C/C++ SDK, но не у всех, и они ещё не решили, будут ли они создавать их в будущем.




Как эволюционировала отрасль разработки Windows? Как я понимаю, вы там повидали всё на свете. Первое, что помню я сам — это Delphi. Потом набрал популярность С#, и пока что я не вижу никаких признаков падения С#/.NET, Java и тому подобного. Являются ли они, на ваш взгляд, последней ступенью эволюции императивного программирования? Какова вероятность того, что в ближайший год или десять лет появится нечто совершенно новое? Скажем, язык с поддержкой нейросетей?




Я человек уже почтенного возраста, в особенности по сравнению с вами, и видел в нашей отрасли весьма многое. Я занимаюсь программированием где-то 45 лет. Существенное изменение за эти годы заключается в том, что операционная система стала менее важна. Я в основном занимался сервисами программного обеспечения для бэкенда и инструментами для командной строки. Раньше я значительно больше работал с GUI, и мои первые книги были посвящены именно этому: приложениям GUI с меню, listbox-ами, combobox-ами, обработкой событий от мыши, клавиш и так далее. В определённый момент у меня перестало хватать на это нервов, поскольку в этой области постоянно встреваешь в крайне ожесточённые споры о том, следует ли в некотором случае использовать listbox или combobox, должна ли ширина быть 100 или 1000 пикселей, каким должен быть цвет. У меня эти дискуссии вызывали отвращение, поэтому в итоге я перестал этим заниматься. Что касается языков, то, я думаю, у нас по-прежнему будет множество различных вариантов. Языки умирают очень долго, даже сегодня можно встретить людей, пишущих на Cobol, Fortran или крайне малоизвестных языках. Новые языки всё время будут возникать — в последнее время некоторую известность приобрела Julia, несколько дольше существует Clojure. Эти новые языки привлекают существенное внимание на некоторое время, после чего некоторые становятся успешными, а другие нет. С# прошёл впечатляющий путь, ему 15 лет, и он по-прежнему крайне распространён. На мой взгляд, команда .NET из Microsoft во многом вдохнула в него новую жизнь благодаря тому, что они создали .NET Core, который теперь работает на Linux. Если вы пишете на C#, ваши навыки применимы в огромном количестве различных сценариев. Я думаю, что интерес к С# не будет ослабевать ещё много лет.



Минутка рекламы. Джефф скоро приедет на конференцию DotNext 2018 Moscow с докладом «Building responsive and scalable applications», в котором будет рассказывать об использовании асинхронного IO для построения сильно масштабируемых систем (как на сервере, так и на клиенте). Вживую в Россию он прилетает, мягко говоря, не каждый день — это отличный способ не только послушать доклад, но и обсудить актуальные проблемы лицом к лицу в дискуссионной зоне.


Не хочешь ли ты теперь написать «GNU/Linux Runtime via C#»?




Да, хочу. На мой взгляд, для разработчиков сервисов GNU/Linux по многим причинам лучше подходит, чем Windows — за исключением некоторых случаев. Я считаю, что С# — прекрасный язык. Я недавно познакомился с Java: из соображений корректности могу только сказать, что после неё я стал значительно больше ценить С#. Мне очень нравятся типы-значения (value types) в С#. Мы недавно работали с отображением файла в память в Java, и не могли закрыть его напрямую, приходилось ждать сборки мусора. Некоторые решения в Java мне кажутся совершенно бессмысленными. На мой взгляд, С# и .NET сделаны значительно лучше.




Года через три у нас, у джавистов, появятся типы-значения.




Да, я знаю, и у вас есть какие-то дженерики…




«Какие-то» — на мой взгляд, очень точное описание.




Ну да, ваши дженерики немного странноватые. Но Java — безумно популярный язык, и люди его весьма продуктивно используют. Он, безусловно, очень важен. Но, на мой взгляд, в .NET некоторые аспекты выполнены лучше. Даже если вы добавите типы-значения, нам по-прежнему нужно будет предоставлять поддержку более старых версий Java. Так что реализовать эти новые возможности нельзя будет еще несколько лет. Но это и хорошо: все языки развиваются, в них появляются новые возможности. Java, .NET, C# — все они будут жить ещё очень долго, в особенности с учётом некоторых последних изменений, таких, как .NET Core. Так что, на мой взгляд, C# для GNU/Linux — это замечательное сочетание для людей, пишущих сервисы.




Но для взаимодействия с бэкендом нужен UI. Когда-то у нас были только текстовые консоли, а потом появился UI, и это сделало софт значительно более функциональным. А сегодня есть Electron и другие основанные на JavaScript движки, и на них любой школьник может написать интерфейс. Не опасаетесь ли вы, что в будущем вообще всё будет писаться на JavaScript?




Нет, я так не думаю. Во-первых, это вопрос производительности: в JavaScript она не может сравниться с C, C++, Go, или даже C# и Java. Далее, я не могу представить себе написание масштабного проекта без типобезопасности на фазе компиляции. Когда я попал в мир типобезопасных языков, то влюбился в него с первого взгляда. JavaScript сам по себе не предоставляет типобезопасности, поэтому я не стал бы использовать его в крупном проекте. А вот TypeScript стал бы, и наш новый SDK мы пишем на TypeScript. Он представляет из себя значительный шаг вперёд по сравнению с обычным JavaScript. Но я не думаю, что весь мир когда-либо станет использовать только один язык для какой-либо одной цели. В этом попросту нет смысла. Даже если мы говорим об IOT, то среда для запуска JavaScript требует достаточно много ресурсов, и многие устройства их попросту не могут предоставить.




Хорошо, с JavaScript проблем нет. А где они есть? В чём заключаются главные проблемы для вас лично и для отрасли в целом?




Я не уверен, что они связаны с языками или операционными системами. Операционные системы на данный момент, в сущности, стали обычными бытовыми вещами. Они используются для отправки электронных сообщений и выхода в интернет. Для большинства людей не имеет большого значения, используют ли они Windows, Mac или Linux. Языки, которые мы сегодня используем — уже достаточно мощные. Большинство языков, по сути, просто перемещают данные из точки А в точку B. У вас есть коллекция, вы её просматриваете, фильтруете содержимое — такого рода действия может выполнять каждый язык. Далее, нам необходимо, чтобы машины коммуницировали друг с другом. Здесь стандартом является TCP, широко используется HTTP, но есть и другие протоколы. Все эти технологии замечательно работают, тем не менее производительность можно улучшать и дальше. На мой взгляд, наиболее серьёзные трудности сегодня связаны с созданием сервисов. Разработчики развёртывают сервисы в облачных средах, и им необходимо, чтобы эти среды обладали гибкостью и возможностью масштабировать приложения. Я уже упоминал наш сайт с подпиской на видео, который стал успешным значительно позже, чем мы ожидали. Когда мы его писали, мы не знали, будет ли у нас десять клиентов, сотня, тысяча или миллион. Поэтому я с самого начала проектировал его, рассчитывая на масштабирование, что заставило на первых этапах много работать над архитектурой и продумывать паттерны использования, а также возможные будущие изменения в системе. В общем, я считаю, что наибольшие сложности сегодня связаны с созданием масштабируемых, гибких и надёжных облачных сервисов. Именно этим мы занимается в Microsoft в команде Azure, и, судя по нашим разговорам с клиентами, именно это создаёт больше всего трудностей.




И Azure предлагает решение для этих проблем? Или нет?




Да я не сказал бы. Никакой облачный провайдер не является решением для этих трудностей. Провайдер только предоставляет инфраструктуру, железо, на котором будет работать ваш код. Он также может предоставлять некоторые сервисы, как, например, Azure Storage (команда, в которой я работаю) или CosmosDB, или сервисы-конкуренты от Amazon — всё это может существенно упростить вам жизнь. Может помочь управлять состоянием, предоставлять надежную базу данных. Но так или иначе многие проблемы вам необходимо будет решать самим. Например, если у нас запущено десять экземпляров первой версии приложения, как обновить их до второй версии, не останавливая их работу и продолжая обрабатывать запросы? Для этого существует несколько различных паттернов. Azure может помочь реализовать некоторые из них, но не все. И нам нужно самим правильно написать код, чтобы первая и вторая версии приложения были запущены параллельно и могли коммуницировать друг с другом, пока не произойдет переход на вторую версию. Облачные провайдеры упрощают некоторые из этих задач, но для их клиентов по-прежнему остаётся много работы, которую необходимо выполнить самостоятельно, чтобы обеспечить требуемую гибкость.




Давайте теперь поговорим о людях. На сайте Wintellect есть эпиграф, большой такой заголовище: «We don't just build software. We build developers.». Можете поделиться, как создавать современных разработчиков?




В Wintellect есть три основных направления бизнеса. Мы консультируем другие компании, просматриваем их архитектуры и обучаем их разработчиков. У нас есть специальные занятия, на которых рассказывается, как работает управление памятью в Windows, сборка мусора в .NET. В целом, у нас подход похожий на тот, который я использую в своей книге: мы демонстрируем некоторую технологию, показываем, на что она способна. И таким образом мы улучшаем навыки других разработчиков. В нашей команде в Microsoft мы нанимаем довольно много людей, только что закончивших колледж. Их опыт работы — год или два, мой — десятилетия. Каждый четверг в час дня я делаю часовое занятие для молодых разработчиков из нашей команды. Мы выбираем определённую тему и обсуждаем её. Прошлая тема была сборка мусора, до этого мы говорили о тредах, асинхронных операциях ввода/вывода и их преимуществах. Я пытаюсь развить их как разработчиков, рассказывая об истории программирования, о том, какие вещи более важны, а какие менее и так далее. Благодаря этому, я надеюсь, их код будет более высокого качества, что улучшит качество обслуживания наших клиентов. Я периодически повторяю фразу: что на входе, то и на выходе («you get out what you put in»). Если на входе я трачу больше усилий, обучая наших сотрудников, то на выходе я получаю более высокое качество работы, что в целом улучшает положение компании. Таким образом, я существенно заинтересован в будущем этих людей.




Вы сказали, что находите время лично обсуждать с вашими сотрудниками сборку мусора, управление памятью и тому подобные вещи. В дополнение к этому вы — основатель компании, известный автор, докладчик, хакер низкоуровневых систем и корпоративный разработчик. Как вы успеваете всё это делать? Да ещё и одновременно? Обычно хакеры мирового уровня и люди, выступающие на публике, обладают психологическими характеристиками, находящимися на разных концах спектра. Это различие на уровне психологии, на уровне работы коры головного мозга. Есть ли у вас какие-то специальные трюки? Или может быть, вы мутант из «Людей Икс»? Почему спрашиваю: я тоже пытаюсь одновременно и программировать, и писать статьи, и читать доклады — и всё это дико сложно.




Спасибо за добрые слова. Но надо сказать, что далеко не всё это у меня одинаково хорошо получается — что-то лучше, что-то хуже. Что-то — намного хуже. И я не занимаюсь всем этим одновременно. Если меня и отличает что-либо от других людей, то это высокий уровень самодисциплины. Это в особенности касается написания книг. Я просыпаюсь утром, одеваюсь, иду в свой офис, часами сижу один в комнате и печатаю без конца, проверяю различные сценарии и так далее. Потом я обедаю, возвращаюсь в эту комнату и снова работаю, никак не общаясь с другими людьми. Когда работаешь в команде, кто-то всегда продолжает работать над проектом, когда у тебя перерыв. А когда ты пишешь книгу, вся ответственность на тебе одном. Наличие самодисциплины позволяет мне этим заниматься. Возможно, это наиболее важное качество, отличающее меня от некоторых других знакомых мне людей.




Значит, у вас очень жёсткий график, в котором расписано, чем вы занимаетесь в каждый определённый час дня?




Да, я ставлю себе цели. Например, с утра я говорю себе: сегодня мне нужно закончить седьмую главу. После чего я сажусь и работаю над ней. Иногда по разным причинам этого достичь не удаётся. В этом случае на следующее утро я себе говорю: ну сегодня-то мне точно нужно закончить седьмую главу. В конечном итоге это удаётся сделать, но в процессе я постоянно понукаю себя, ставя себе цели, постоянно ограничиваю себя по времени. Если же выполнить её не удаётся, я пожимаю плечами и ставлю себе новую цель на следующий день. Благодаря этому я очень упорен в работе.




Последний вопрос. Насколько я знаю, у вас есть права пилота?




Да, для вертолёта и для самолёта.




То есть у вас где-то в аэропорту стоит условно «свой» самолёт, который можно взять и полетать?




Да. Но я больше не летаю. Много лет назад, непосредственно после колледжа, когда я ещё был холост и у меня не было детей, я экспериментировал и пробовал много различных хобби. Один мой знакомый предложил вместе попробовать научиться летать на самолете. Я согласился, мы отправились в аэропорт и нашли инструктора. Попробовав, я решил, что это прекраснейшее развлечение, стал посещать занятия регулярно и в итоге получил права. Вместе с моим знакомым мы приходили в аэропорт, садились в самолёт, летали какое-то время и приземлялись в том же месте, с которого взлетели. Но в самолёте невозможно остановиться и как следует что-либо рассмотреть. А в вертолёте это сделать можно. Поэтому я решил получить права на вертолёт. Вообще говоря, на вертолёте летать значительно интереснее, чем на самолёте. Не обижайтесь, но если вы не согласны с этим — вы не правы. Потом ситуация изменилась, потому что это дорогое хобби, которое требует много времени и постоянной тренировки. Если не пользоваться навыком, он быстро ржавеет. Когда я женился и у меня появились дети, стал также важен тот факт, что в полёте всегда есть определённый риск. Затем был основан Wintellect, и я ушёл в бизнес. Иногда, чтобы в жизни появилось что-то новое, старому нужно уйти. Такова жизнь, и это хорошо.




Последний-последний вопрос. Есть какое-нибудь пожелание для наших читателей на Хабре?




Я был влюблён в нашу отрасль последние 45 лет, я не могу представить себе какого-либо другого занятия для себя. Технология постоянно изменяется, всё время есть что-то новое, чему нужно учиться. Это прекрасный выбор карьеры. Я постоянно встречаю здесь замечательных людей, и я рад считать их своими друзьями. Даже это интервью принесло мне массу положительных эмоций несмотря на то, что мы с вами только познакомились. Оглядываясь на прожитую мной жизнь, я не могу представить себе какого-либо другого пути. Я думаю, мы живём в замечательное время, и делаем прекрасное дело. Моё пожелание — наслаждайтесь этим! Скорее всего, это надолго.

Комментарии (26)


  1. Dywar
    04.09.2018 19:34
    +2

    Спасибо, почитаем внимательно :)


    1. olegchir Автор
      04.09.2018 20:21
      +1

      Я попытался как-то разбавить простыню текста картиночками и подобием структуры. Не факт, что это получилось. Если есть идеи, что можно улучшить в плане подачи материала — обязательно напишите.


      1. speshuric
        04.09.2018 22:29

        Ход интересный, но мне кажется, что в самом тексте хватило бы иконки размером с иконку 24*24, как у комментария. 96*96 отвлекает нехило так.


        1. sha4
          05.09.2018 04:12
          +1

          Да хватило бы и инициалов


        1. blaketsk
          05.09.2018 14:01
          +1

          у меня одного фотки 96х96 растянулись до 780х780?)


          1. olegchir Автор
            05.09.2018 14:01

            нет, у всех. Это была какая-то фигня с хабром.


        1. freecoder_xx
          05.09.2018 23:18
          +1

          Ну, на экране ноутбука в целом нормально смотрится и читается благодаря картинкам довольно легко.


      1. Tantrido
        04.09.2018 22:31

        Отлично получилось! Прочиталось всё и легко. Благодарю!


      1. Contuper
        05.09.2018 14:01
        +1

        Чтобы улучшить подачу, можно убрать разделители между вопросом и ответом. И приглушить вопрос.
        image


        1. olegchir Автор
          05.09.2018 14:12

          Отличная идея! Надо будет обкатать в следующем интервью. Например, только что сделал бомбическое интервью с Бреславом, и хотя он вроде бы и про Kotlin, но там столько яростного материала вроде рассуждений о полигамии, что стоит попробовать оформить это на Хабр. (Непонятно в какой хаб только).


      1. paco
        07.09.2018 10:22

        Мне понравилась идея с иконками. Так читать легче, нежели с инициалами.


  1. formatko
    04.09.2018 21:14
    +1

    Отличное интервью,


    1. olegchir Автор
      05.09.2018 14:17
      +1

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


      1. Liminiens
        07.09.2018 11:20

        На ум приходят Don Syme и Anders Hejlsberg :)


        1. dmitry_dvm
          07.09.2018 12:51

          Плюсую Андерса, вот уж шарящий мужик.


  1. Fengol
    04.09.2018 22:00
    +2

    Правдивую историю никто не расскажет, а именно в ней и заключены тонкости. А читать клише, которые и так всем, кто хочет делать что-то из перечисленного, известны, бессмысленно. Кроме того, истории крупных компаний, зависят только «от того время и того места». Иначе нефтяные компании, банки, алмазные биржи, amazon, google и прочее, открывались бы также часто, как и пиццерии.


    1. Siemargl
      04.09.2018 23:32
      +2

      Очевидно, что тонкостей, написанных тут прямым текстом, ты и не заметил.

      А их тут много. Только подретушированы политкорректностью.

      Да и «тонкость» весьма условная, с бревно-с…


    1. olegchir Автор
      05.09.2018 02:09
      +2

      Лично для меня очень актуален вопрос совмещения написания статей с разработкой кода и участием в бизнесовых активностях. Очень. Мне было важно услышать ответ человека, который с блеском решил эту проблему.

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

      Даже если ответ Рихтера и является клише (то есть, применением типового паттерна к типовой сиутации), уже само понимание «в такой ситуации — вот этот паттерн» уже ценная информация.

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


  1. Jeditobe
    05.09.2018 09:36
    +1

    О, книжка в соавторстве с Алексом Ионеску — разработчиком ReactOS


  1. maashaa
    05.09.2018 11:50
    +2

    «если вы не согласны с этим — вы не правы»


  1. Juma
    05.09.2018 13:13
    +1

    А есть это интревью на английском? Хотелось бы почитать некоторые фразы Рихтера в оригинале.


    1. olegchir Автор
      05.09.2018 14:03

      Нет, нету. Это был разговор голосом при очень фиговом качестве записи (интернет у них там в США временами бывает ни к чёрту). Кое-что приходилось разбирать под десятью фильтрами в аудиоредакторе. Поэтому сразу писали на русском.


  1. oleg_gavrilov
    05.09.2018 13:42
    +2

    Прошу прощения, но что за комплексы у интервьюверов по поводу Java? Каждое интервью так или иначе вертится вокруг «ой да вы же возитесь с тупым дотнетом, что вы можете знать о величественной Java?».

    «вы же из Microsoft. Зачем вам Go и Python, если есть чудесный C#?» — вот зачем эта старческая спесь?


    1. olegchir Автор
      05.09.2018 13:46
      +3

      Область нашей деятельности — динамические рантаймы. Туда входит и Java, и .NET. Логично, что мы разговариваем на актуальные темы — кто у себя чего запилил, как это внутри работает, какие недостатки, как решать. В нашей жабе стремные дженерики, этим никого не удивить, но мы их улучшаем. Рихтер не обязан корпеть над почтовыми рассылками экспериментальных проектов, а я — обязан, поэтому мне есть что ему рассказать про дженерики. Имхо то, что вы это восприняли вот так скорей говорит о вашей точке восприятия :)

      Про Go и Python у меня есть отдельное мнение, и да — это мнение в том, что языки очень сырые. Но разводить холивар об этом, имхо, стоит в отдельном топике, ибо к позиции Рихтера это не относится никак. Это моя личная позиция.


  1. nice17
    05.09.2018 13:48
    +1

    Мне удобнее читать без таких больших пропусков. Инициалы в начале строк или выделение вопросов жирным шрифтом лучше, чем фото


  1. w1ld
    07.09.2018 15:50

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