habrahabr

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

  • воскресенье, 1 мая 2016 г. в 03:17:19
https://habrahabr.ru/post/282674/
  • Программирование


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

Этот пост был написан и опубликован на 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. Subversion еще не существовал, а наша оценка по «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, к любому языку программирования. Узнайте их происхождение и то, как они стали тем, чем являются сейчас. То же самое касается и операционных систем, сетевых технологий, аппаратного обеспечения, да чего угодно. Идите и узнайте, как люди придумали это, какими идеями руководствовались и как много времени потребовалось для того, чтобы их детище достигло зрелости. Потому что рождение хорошего программного обеспечения требует десятилетий, знаете ли.