[Перевод] Каково это — быть разработчиком, когда тебе сорок

Примечание от переводчика:

Этот пост был написан и опубликован на Medium разработчиком приложений Адрианом Космачевским из Швейцарии. Кроме подготовки перевода его публикации, я также пригласил и самого автора, Адриана (akosma), на Хабр, для того, чтобы он смог лично ответить на любые вопросы участников сообщества, если таковые возникнут. Думаю, для общего удобства при общении в комментариях с ним стоит использовать английский (и, при желании, дублировать на русском).



Привет всем, я — сорокадвухлетний программист-самоучка, а это моя история.

Пару недель назад я наткнулся на твит, в котором была картинка, прикрепленная ниже, и он заставил меня задуматься о моей карьере.

image

Эти размышления привели меня туда, откуда все начиналось.

Я дебютировал в роли разработчика программного обеспечения в 10 часов утра 6 октября 1997 года, в городе Оливос, к северу от Буэнос-Айреса, в Аргентине. Был понедельник. Не так давно я праздновал свой 24-й день рождения.

Мир в 1997 году


Тогда он был немного другим. На веб-сайтах не было предупреждений об использовании cookie. Новаторскими в сети были сайты вида Excite.com, а моим любимым поисковиком был AltaVista.

Мой электронный ящик имел вид kosmacze@sc2a.unige.ch и был расположен на личном веб-сайте, который размещался по адресу http://sc2a.unige.ch/~kosmacze. Тогда мы еще оплакивали принцессу Диану, а Стив Джобс только-только вернулся на роль CEO и убедил Microsoft «вбросить» в Apple Computer 150 миллионов долларов. Digital Equipment Corporation подала в суд на Dell, останки Че Гевары вернули на Кубу, только начался четвертый (!) сезон «Друзей». Был убит Джанни Версаче, скончались Мать Тереза, Рой Лихтенштейн и Жанна Кальман. Люди зависали за Final Fantasy 7 на PlayStation, будто бы были наркоманами, Би-Би-2 начал вещание телепузиков, а Кэмерон только собирался показать миру свой «Титаник».
image
Excite в 1997 году, взято из Internet Archive

Смартфонами того времени были коммуникаторы Nokia 9000 c 8 Мб памяти, 24 МГц процессором i386, работавшие под операционной системой GEOS. Умные часы того времени — это CASIO G-SHOCK DW-9100BJ. Да, на них не было много приложений, но и время жизни батареи на одном заряде намного больше.

Тогда IBM Deep Blue впервые обыграл Гарри Каспарова в шахматы.

Хакер, известный как _eci, опубликовал код на С для Windows 3.1, 95 и NT, который назвал «WinNuke». С его помощью проводилась атака на TCP-порт 139 (NetBIOS) с последующим появлением «синего экрана смерти».

Кстати, в этот год родились Малала Юсуфзай, Хлоя Грейс Морец и Кайли Дженнер.

Действия многих фильмов происходили именно в 1997 году, например: «Побег из Нью-Йорка», «Хищник 2», «Загадочная история Бенджамина Баттона», «Гарри Поттер и Принц-полукровка», «Крестный отец 3» и, конечно же, «Терминатор 2: Судный день». Именно в 1997 году, 29 августа в 2:14 ночи, согласно ленте, Скайнет обрел самосознание и начал термоядерную войну. К счастью, этого не произошло. Но в тот же год, 15 сентября, был зарегистрирован домен Google.com. Тогда же СМИ стали нагнетать истерию вокруг миллениума, что заставило понервничать немало людей. (Короче, сложный был год. прим.)

Мой первый опыт в качестве разработчика


Моя первая работа заключалась в написании ASP-страниц в различных редакторах, начиная c Microsoft FrontPage, HoTMetaL Pro и EditPlus, для обеспечения кроссбраузерности между Netscape Navigator и Internet Explorer 4, а также в написании хранимых процедур в SQL Server 6.5 для коммерческого сайта с японским, русским, испанским и английским интерфейсами. Все делалось без какой-либо поддержки UTF-8, напрямую через софтверный стек.

Итоги моей работы обрабатывались сервером на Pentium II, который стоял где-то в США, который, ко всему прочему, имел на борту потрясный для того времени хард на 2 гигабайта и 256 мегабайт оперативной памяти. Этот сервер под управлением Windows NT 4 с SQL Server 6.5 и IIS 2.0 в одиночку обслуживал около десяти тысяч посетителей в сутки.

Моим первым профессиональным языком программирования был мутант под названием VBScript и еще немного Javascript на клиентской стороне. Все это было сдобрено большим количеством «Если Netscape сделали это, то сделай по-другому», потому что тогда я не имел ни малейшего представления о том, как правильно использовать Javascript.

Кстати, в 2016 мы все еще едва понимаем, как вообще делать что-либо на Javascript.

О юнит-тестах вообще никто не слышал. Agile Manifesto еще не был написан. Непрерывная интеграция — лишь мечта, а XML было очередным модным словечком. Наша QA-стратегия заключалась в перезагрузке сервера раз в неделю, потому что иначе он абсолютно рандомно падал. Мы разработали собственный COM+ компонент в Visual J++ для синтаксического анализа JPEG-файлов, загруженных на сервер. Но как только стали появляться кодированные JPEG-2000 файлы, наша разработка с треском провалилась.

Мы не использовали систему управления версиями, даже CVS, RCS или, упаси Бог, SourceSafe. Саб-версий еще не существовало, а наша оценка по «Joel Test» была минус 25.

6776 дней


Последние 6776 дней я выпивал по чашке кофе каждое утро и писал код с помощью таких вещей как VBScript, Javascript, Linux, SQL, HTML, Makefiles, Node.js, CSS, XML, .NET, YAML, Podfiles, JSON, Markdown, PHP, Windows, Doxygen, C#, Visual Basic, Visual Basic.NET, Java, Socket.io, Ruby, Python, shell scripts, C++, Objective-C, а также юнит-тесты, пакетные файлы и, в последнее время, использовал Swift.

За последние 6776 дней произошло многое, но самое главное, я женился. Я ушел с шести рабочих мест и дважды был уволен, начинал и сворачивал собственный бизнес, получил степень магистра. Я опубликовал несколько open source-проектов и по одному из них даже написала статью сама Эрика Садун из Ars Technica. Меня показывали в швейцарских и боливийских телевизионных шоу, я наблюдал за выступлениями Билла Гейтса и Стива Джобса в Сиэтле и Сан-Франциско, участвовал и организовывал конференции на четырех разных континентах, написал и опубликовал две книги. Дважды выгорал («I burned out twice» ориг.) и много чего еще произошло, как замечательного, так и ужасного.

Я часто задумываюсь о том, чтобы уйти из программирования, но так или иначе, через некоторое время я начинаю ощущать «зов кода». Мне нравится писать приложения, системы и программное обеспечение. Чтобы избежать профессионального выгорания, мне пришлось разработать собственную стратегию. В этом посте я поделюсь своими секретами, так что вы тоже сможете достичь славного сорокалетнего возраста и, являясь опытным разработчиком, продолжать работать.

Советы для тех, кто в душе молод


Ниже я перечислю некоторые простые советы, которые помогут вам в сорок лет остаться счастливым разработчиком программного обеспечения.

Не реагируйте на хайп


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

А теперь, о чем «хайпили»:

  • В 1997 году это были CORBA и RUP.
  • В 2000 году это были SOAP и XML.
  • В 2003 году это была Model Driven Architecture и Software Factories.
  • В 2006 году это был Semantic Web и OLPC.
  • В 2009 году это была дополненная реальность.
  • В 2012 году это была Big Data.
  • В 2015 году… Виртуальная реальность? Боты? (Язык Go? прим.)


Не поддавайтесь хайпу, пусть он вас не тревожит. Продолжайте работать, продолжайте изучать то, что изучали, и двигайтесь дальше. Обратите внимание на что-то новое, только если вы искренне чем-то подобным интересуетесь, если чувствуете, что это может принести вам пользу в средне- и долгосрочной перспективе.

Причина заключается в том, что, как говорили римляне, Nil novi sub luna («Ничто не ново под Луной»). Большинство из того, что вы видите и что изучаете, в той или иной степени уже десятилетия существует в информатике, а суть скрывается под грудами маркетинга, книг, блогозаписей и вопросов на stackoverflow. Каждая новая архитектура — это просто переосмысление и адаптация более ранних идей, которые витали в воздухе десятки лет, к современным реалиям.

Выбирай свою «Галактику» мудро


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

Примерами галактик можно назвать .NET, Cocoa, Node.js, PHP, Emacs, SAP и так далее. Каждая из них обладает собственными евангелистами, разработчиками, блогерами, подкастами, книгами, обучающими курсами и консультативными сервисами и площадками, а также проблемами вхождения в них. Галактики основываются на том, что ИХ технология является ответом на все вопросы (навевает мысли о числе 42 прим.). Таким образом, каждая галактика в основе своей содержит ошибку.

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

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

В моём случае я провел десять лет в галактике Microsoft и следующие девять — в галактике Apple. Я осмелюсь заявить, что главной причиной «смены лагеря» для меня стал Стив Балмер. Я устал от негативного отношения людей из галактики Microsoft к open source ПО.

С другой стороны, я считаю галактику Apple отличным местом, где полно художников, музыкантов и писателей, которые, случайно или намеренно, создают программное обеспечение так же, как и я.

Я посещал конференции в галактике Microsoft, например, TechEd 2003 в Барселоне, или различные Tech-talks в Буэнос-Айресе, Женеве или Лондоне. Я даже выступал спикером на Microsoft DevDays в Женеве в 2006 году. Общее отношение разработчиков к галактике Microsoft сложно назвать дружелюбным, а причиной тому тайны, NDA и громоздкие IT-процессы.

Галактика Apple же для меня, еще в 2006, наоборот, была совершенно иной; она была полна творческих людей, таких как музыканты, художники и артисты. Они писали ПО со страстью и будут продолжать в том же духе. Это было разительное отличие, и многие из нас до сих пор остались в этой «галактике», которая нас объединила.

Ну, а потом вышел первый iPhone, а все остальное вы и так знаете.

Так что советую вам выбирать мудро, чтобы потом наслаждаться своим выбором столько, сколько пожелаете. Но всегда стоит держать при себе «телескоп», чтобы при необходимости совершить гиперпрыжок в соседнюю галактику.

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


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

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

The mobile phone evolution @ValaAfshar pic.twitter.com/ShP206GiYL

 — JM Alvarez-Pallete (@jmalvpal) 26 ноября 2015 г.


Пример эволюции идеи прим.

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


Также стоит научиться ценить те вещи, что прошли испытание временем: LISP, TeX, Unix, Bash, C, cacao, Emacs, Vim, Python, ARM, GNU Make, Man-pages. Это пример некоторых вещей, отпраздновавших свой юбилей, и которые стоило бы сберечь и обучиться им.

I felt like saying this. pic.twitter.com/mHJ1rENoX1

 — Hisham (@hisham_hm) 13 декабря 2015 г.


Продолжайте учиться


Изучать. Все, что душе угодно. Хотите узнать поближе Fortran? Действуйте. Считаете Erlang интересным? Отлично. Возможно, COBOL — это следующий серьезный этап вашей карьеры? Фантастика. Нужно узнать больше о функциональном программировании на Reactive? Добро пожаловать. Дизайн? Само собой. UX? Просто обязаны. Поэзия? Почему бы и нет.

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

Совет 1: изучайте по крайней мере один новый язык программирования каждый год. И это придумал не я, это сделала книга «Прагматичный программист». И знаете, это работает. Один язык программирования каждый год. Просто, да? Постарайтесь создавать что-то большее, чем типичное «Hello, World». Я обычно делаю простенький калькулятор, чтобы узнать возможности новой для себя технологии. Это помогает понять синтаксис языка, позволяет ознакомиться с API, IDE и так далее.

Совет 2: читайте шесть книг по программированию каждый год. У меня есть список из шести must-read книг, которыми я буду занят в этом году. А вот мой «лист» за прошлый год:


Ладно, тут семь книг.

Шесть книг в год — вроде, многовато, но, по сути, это одна книга в два месяца. И большинство книг, упомянутых мной в этой публикации, не требуют слишком много времени для прочтения. Они превосходно написаны, веселые и простые для понимания.

Также посмотрите на это с другой точки зрения: если вам сейчас 20, то к 30 годам вы прочтете более 60 книг по программированию и более 120 книг, когда достигнете моего возраста. И вы попробуете себя в более чем 20 языках программирования. Задумайтесь об этом на секунду. Некоторые из упомянутых мной томов были написаны еще в семидесятых, другие — в восьмидесятых, некоторые — в девяностых годах и, наконец, большинство из них — в нулевых. Они представляют собой лучшую литературу, что я встречал в нашей отрасли.

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

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

If I could go back in time and tell the younger me exactly one and only one thing, it would be «learn UNIX»

 — Jeff Atwood (@codinghorror) 4 февраля 2016 г.

Обучайте других


После того как вы изучили что-то новое — научите других. Это очень важно.

Это не значит, что вы должны организовать целый учебный процесс, снять помещение и приглашать на свои курсы людей, чтобы они слушали ваш бред, нет. «Обучать других» — значит, к примеру, давать развернутые ответы на сложные и серьезные вопросы на stackoverflow (это было бы просто отлично). «Обучать других» — значит начать писать книгу, публиковать подкасты о вашей любимой технологии, вести блог, писать об этом в СМИ. Отправиться через полмира на другой континент, чтобы организовать кружок программирования на Raspberry Pi или банально помочь джуну или другому младшему разработчику, став его наставником (однако, не стоит этого делать, если вам еще нет 30 лет).

Наставничество сделает вас скромнее, потому что продемонстрирует, как же мало вы на самом деле знаете и насколько ограничены ваши знания. Обучать — это лучший способ учиться. Только путем постоянной проверки собственных знаний вы учитесь правильно. Это вырабатывает в вас уважение к другим разработчикам и технологиям, ведь каждому языку, вне зависимости от того, является он мейнстримным или полузабытым, есть собственное место в Дао программирования. И только обучая других вы сможете почувствовать это.

Через обучение вы сможете изменить мир к лучшему. Еще в 2012 году я получил от одной женщины письмо, в котором был указан один из моих тренировочных курсов. Раньше она была разработчиком под Adobe Flash, помните же ActionScript и все такое? Короче, после двенадцати безоблачных лет непрерывной работы в качестве внештатного разработчика Flash она оказалась на улице. В одиночестве и с ребенком на руках, которого нужно было кормить. В своем письме она рассказала мне, что училась по моим курсам и наслаждалась процессом, а также что вынесла для себя много полезного и смогла после обучения устроиться на работу в качестве мобильного веб-разработчика. Она написала мне, чтобы сказать спасибо. Я не могу с уверенностью сказать, что я кардинально изменил мир, но я могу менять его по чуть-чуть, как я надеюсь, в лучшую сторону. Мысль об этом сделала каждый урок, который я давал кому-либо с тех пор, более значимым и полезным для меня.

Рабочие места — отстой


Every day, with every action and choice, you’re either a teacher and an inspiration, or a lesson and a reminder.

 — Cat Swart (@Jexx) 25 мая 2015 г.


Не ждите, что какая-нибудь софтверная корпорация предложит вам место, где вы сделаете карьеру. Возможно, это могло бы произойти где-нибудь в США, но я никогда не видел, чтобы подобное происходило в Европе. Это означает, что ваша карьера и успех зависят только от вас. Никто не скажет вам: «О, ну в следующем году вы сможете стать тимлидом, потом менеджером, ну, а после техническим директором…»

Ни. За. Что. Все, на самом деле, обстоит с точностью до наоборот: вы были, есть и будете разработчиком программного обеспечения. То есть, по сути, относительно дорогим «фабричным» рабочим, задачей которого является обеспечение своему менеджменту счастливой жизни где-нибудь в офшорной зоне вне зависимости от того, чего хочет он, рабочий, сам.

Не беритесь за работу исключительно ради денег. Создание программного обеспечения поставлено на поток, в котором вы должны оправдать вашу абсурдно высокую зарплату за безумное количество рабочих часов и неоправданные ожидания. И, по крайней мере в случае Швейцарии, у вас нет профсоюза, который подставит вам плечо, если дела пойдут плохо. Да и то не все профсоюзы шевелятся, если ситуация не получила огласку в СМИ.

Но есть вариант еще хуже: на большинстве ваших рабочих мест вы будете подвержены гонениям, особенно, если вы женщина, член ЛГБТ-сообщества или не являетесь представителем какой-то конкретной этнической группы. Я видел, как разработчикам угрожали непродлением рабочей визы для того, чтобы они работали быстрее. Я видел гнобление женщин и геев их же коллегами.

Некоторые наши отрасли совершенно отвратительны. Вам не нужно читать этот текст на Medium (или на Хабре, прим.), чтобы столкнуться с этой реальностью. Вы можете испытать это даже в Швейцарии. Например, во многих здешних (швейцарских, прим.) банках невыносимые условия труда. Финансовые учреждения хотят, чтобы вы кодили по 15 часов в день, даже если это прямо нарушает законодательство. Фармацевтические компании хотят получить от вас код, который бы позволил подделать результаты испытаний препаратов и помог бы обойти правила. Стартапы хотят буквально вашу шкуру, чтобы вы работали по 18 часов без всякой компенсации, а вас в ответ кормили бы чем-то вроде «Это потому, что мы даем вам опционы на наши акции» или «Потому, что мы все в одной команде».

Не имеет значения, кто вы и что можете написать в своем резюме, например, как Зак Холман, который создал GitHub с нуля: вы можете быть уволены за любую мелочь.

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

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

Всякий раз, когда HR-менеджер говорит вам, что «Вы должны сделать это (даже если это не согласуется с вашей моральной системой координат), потому что мы платим вам зарплату», стоит помнить, что правильным является следующий ответ: «Вы платите мне в обмен на мои мозги, и я отказываюсь выполнять этот приказ».

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

Помните: то, что вы понимаете, о чем идет речь, еще не означает того, что вы должны автоматически с этим соглашаться.

Ослушаться руководителя, сказать ему «Пошел н****, я не буду этого делать» и сменить место работы. Существуют фантастические рабочие места, их немного, но они есть. Я был достаточно удачлив для того, чтобы поработать на одном из таких. Не позволяйте плохой работе убить в вас энтузиазм, это того не стоит. Стоит ослушаться и двигаться дальше.

Или еще лучше — стать независимым.

Myth: Open offices result in massive collaboration.

Reality: 2 people loudly collaborate; 30 must wear headphones to get any work done.

 — Jochen Wolters (@jochenWolters) 7 апреля 2016 г.


Знай свои сильные стороны


Вы, верно, слышали фразу «Этот инженер-программист стоит десятерых». Миф, не так ли? Вот в чем дело: это не миф, но работает совершенно иначе, чем вы себе это представляете.

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

Продолжайте двигаться вперед, как акула двигается для того, чтобы выжить, потому что ваши навыки являются чрезвычайно ценными. Оглашайте свою зарплату, даже пишите в своем блоге об этом, чтобы другие знали, сколько стоит ваша работа. Компании желают, чтобы вы заткнулись и молчали в тряпочку, поэтому женщинам платят 70% от зарплат мужчин. Так что говорите об этом! Я зарабатываю 135 тысяч франков в год (примерно 138 800 долларов по курсу ЦБ РФ, прим.). Это моя текущая зарплата. А как насчет тебя? Чем больше мы говорим о своих зарплатах, тем меньше неравенство. Любой человек с моим опытом должен получать за свою работу те же деньги вне зависимости от расы, пола, возраста или любимой футбольной команды. Казалось бы, все, конец истории. Но нет, еще не все.

A customer walks into a bar. He asks for a beer made out of wine. The project manager agrees. Both question the bartender’s competence.

 — Daniel Méndez (@mendezfe) 22 марта 2015 г.


Спусти лифт вниз


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

Эта ваша обязанность — спустить лифт для других.

Примите это сознательное решение и будьте в курсе влияния ваших действий. Не краснейте и не стесняйтесь менять свое мнение. Признавайте свои ошибки и говорите «Я сожалею», когда ситуация того требует. Слушайте и не отчаивайтесь. Будьте самодостаточны и уважайте себя.

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

image

Desirable developer skills:

1 Ability to ignore new tools and technologies
2 Taste for simplicity
3 Good code deletion skills
4 Humility

 — David Winterbottom (@codeinthehole) 3 декабря 2014 г.


LLVM


Все и каждый сейчас бредят Свифтом, но на самом деле я бы стал больше внимания уделять LLVM (также пост про LLVM на Хабре).

Я думаю, что LLVM на сегодняшний день является одним из наиболее важных проектов в плане долгосрочного влияния. Блоки Objective-C, Rust и Swift (два самых любимых и наиболее сильно типизированных и компилированных языка программирования по версии опроса разработчиков на stackoverflow за 2016 год), Dropbox Pyston, Clang Static Analyser, ARC, Google Souper, Emscripten, LLVMSharp, Microsoft LLILC, Rubymotion, cheerp, watchOS apps, Android NDK, Metal — все эти вещи были рождены или брали начало от LLVM. Есть компиляторы с использованием LLVM в качестве движка для всех наиболее важных современных языков. .NET CLR в конечном итоге стал его поддерживать, Mono уже использует. Facebook пытался интегрировать LLVM с HHVM и WebKit, но недавно перешли с LLVM на новый B3 JIT компилятор JavaScript.

LLVM кросс-платформенный, кросс-CPU-архитектурный, кросс-языковой, кросс-компилируемый, бесплатный и свободный, как птица.

Узнайте все, что можете, о LVMM — это сейчас та галактика, где творятся настоящие инновации, которые лягут в основу следующих двадцати лет развития.

@owensd Java is 20 years old, C# is 15 — I think it is better to see Swift as a response to that sort of managed language (the next step?)

 — Chris Lattner (@clattner_llvm) 18 февраля 2015 г.


Верь своей интуиции


Я нутром чуял, что .NET должен стать чем-то великим, когда наблюдал за его релизом в июне 2000 года. Я нутром чуял, что iPhone станет чем-то великим, когда я наблюдал его релиз в 2007 году.

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

Доверяйте своей интуиции и тоже сможете стать счастливыми.

Follow your heart
Follw yur heart
Fllw yr hart
Fw y art
Fart

 — Daniel Kibblesmith (@kibblesmith) 17 ноября 2014 г.


API — это Короли


Великие API порождают великие приложения. И если API «сосет», то и приложение будет «сосать», вне зависимости от того, насколько красивый у него дизайн.

Помните, что «молчаливый лучше болтливого» (chunky is better than chatty ориг.) и клиенты также должны быть немыми; спихивайте столько, сколько сможете, на API. Не выдумывайте собственные протоколы безопасности.

Добавьте серверных технологий и убедитесь в надежности узла.

Всё остальное можно отставить в сторону и использовать Socket.io, ZeroMQ, RabbitMQ, Erlang, XMPP и проверить, как определенное действие в приложении отрабатывает в режиме реального времени, причем это касается не только чат-приложений. И забыть об этом вопросе навсегда.

Ах, да, можно еще начать строить автоматизацию вокруг API, но это я просто так говорю.

Преодоление трудностей


Проще — значит лучше. Всегда. Помните принцип KISS (keep it simple, stupid — буквально — «Делай это проще, тупица» или более вежливый вариант англ. keep it short and simple — «Делай короче и проще»). И я имею в виду не только пользовательские интерфейсы, а весь проект целиком, вплоть до самых глубинных уровней вашего кода.

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

image

«Ok, let’s make a rails app»
«Oh, I need rails first»
«Oh, I need rbenv first»
«Oh I need brew»
«Oh I need xcode tools»
… rage.

 — Matthew Jewell (@mattisfrommars) 22 января 2015 г.

Вывод


Самое главное — помнить, что ваш возраст не имеет значения.

Один из моих сыновей как-то сказал мне: «Не может быть, папа. Математики написали свои лучшие работы к сорока годам. Но вам уже за восемьдесят. Не может быть, чтобы у вас были хорошие идеи.»

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

Михаэль Атья, математик, обладатель ордена Поля,
лауреат премии Абеля, цитата из статьи Wired.


Пока ваше сердце говорит вам, что вы способны на кодинг и создание чего-то нового, вы будете молоды, молоды навсегда.

Может быть, в 2035 году, ровно через 19 лет с этого момента, кто-то выступит с докладом на конференции, посвященной разработке программного обеспечения, и начнет свою речь примерно так:

«Привет, мне сорок два, и это моя история».

Надеюсь, это будет один из вас. Вы будете представлять некоторые факты о далеком 2016, например, что в этот год умерли Дэвид Боуи, Умберто Эко, Гато Барбьери и Йонах Кройф. Или будете вспоминать как время, когда SQL Server был доступен для Linux, или как год, когда Google Alpha Go одержал победу над Ли Седолем в игре в Го. Или вспомните об утечке панамских документов, или что в этот год Google пробовал использовать Swift в Android, или как год, в котором у людей еще была такая бесполезная вещь, как частная жизнь.

Мы будем всего в трех оборотах вокруг солнца от проблемы 2038 года и многие будут действительно нервничать из-за этого.

Конечно, я не знаю, что произойдет спустя 19 лет, но я могу назвать три вещи, которые наверняка произойдут:

  • Кто-то задаст вопрос на stackoverflow о том, как фильтровать адреса электронной почты с использованием регулярных выражений.
  • Кто-то выпустит новый фреймворк для Javascript.
  • Кто-то будет строить что-то клевое на вершине LLVM.


А может быть, и вы будете вспоминать эту публикацию с улыбкой на лице.

Большое спасибо за внимание.

© Habrahabr.ru