В преддверии HolyJS мы обсудили проблемы стартапов, географические отличия разработки и влияние open source на отрасль с Джорджем Мандисом (George Mandis). В свое время он уже доказал на практике, что для разработчика на самом деле не важны политические границы и географические координаты, на протяжении нескольких лет работая из разных стран мира. А сегодня решил поделиться с нами своими наблюдениями.
— Мы хотели бы задать несколько вопросов о вашем опыте работы со стартапами: сталкивались ли вы с неудачами, которые вдохновили на дальнейшую работу?
George Mandis: Хотя в течение 11 лет я был независимым разработчиком, меня не затронули многочисленные традиционные проблемы стартапов. Меня приглашали, как внешнего специалиста.
Не буду перечислять проблемы поименно, но лично мне кажутся неудачными многие аспекты «стартап-культуры». Поскольку сам факт вливания больших объемов денег не делает работу автоматически, так же, как он не делает индустрию в целом важной или изменяющей мир.
Что касается вдохновляющих успехов — в свое время у меня был проект, который считаю личным успехом: я построил социальный сервис полностью с нуля, написав собственную библиотеку аутентификации. Были и другие вещи, которые я абсолютно не должен был делать. С точки зрения карьеры эти начинания были амбициозны и не своевременны (очень и очень рано). Но задачи были решены и все это так и не сломалось (удивительно!).
В процессе я получил огромное количество знаний. Это было в период до iPad, немногим после iPhone, но когда разработка еще вращалась вокруг Internet Explorer 6.0. Я бы не повторил это снова. Но я горжусь результатом.
— Как с точки зрения независимого разработчика отличаются жизнь стартап и стандартная корпоративная среда (enterprise-сегмент)?
George Mandis: В enterprise-сегменте больше денег и уверенности, но стартапы почти всегда звучат сексуальнее — особенно когда вы молоды. В enterprise я не беспокоюсь об оплате, не получаю предложений по выплате акциями, и если я хорошо поработаю, могу ожидать повторного заказа.
Работа со стартапами скорее похожа на игру, но я думаю, можно выбрать правильные проекты, чтобы это не всегда было так. После нескольких напряженных проектов ранее я придумал выражение: «Будьте осторожны, ступая на первый этаж мечты других людей». Оставаться на всю ночь и отлаживать свои собственные проекты — это одно. Делать это для другого человека, независимо от того, сколько он мне платит, — это другое. Побывав пару раз в такой ситуации, я стал более внимателен к тому, в каких стартапах участвовать, и научился выявлять такие «головные боли» на ранней стадии.
Я работал на профессиональную спортивную команду в течение полутора лет, и у этой работы было много общего со стартапом. У нас была небольшая команда разработчиков, множество различных проектов, которые формулировались по мере создания, и удивительно ограниченный бюджет. Частые изменения курса и внутренняя организация оказались одними из самых больших проблем. И теперь этот опыт побуждает меня ожидать большего от стартапа. Вещи не всегда такие, какими вам кажутся!
— Каковы различия между странами, в которых вы работали (с точки зрения технических и социальных условий)?
George Mandis: Я провел годы, работая и путешествуя по миру. В общей сложности жил в 18 разных странах. Это полностью изменило меня, и я все время вспоминаю об этом.
Во время путешествий я часто обращался к местным разработчикам, отчасти чтобы понять, каково там работать, а также чтобы завязать общение на новом месте. В итоге у меня сложились определенные представления.
Некоторые вещи одинаковы. Стремление к подключению и сети, кажется, были везде, куда я приезжал, и особенно восторженно и оптимистично они воспринимались среди разработчиков. Во-вторых, я говорил людям, что делаю визитки из дерева, и разговор сразу переходил на бизнес-идеи. Испания, Турция, Кения, Сербия, Таиланд, Япония — так было во всех этих местах. В один незабываемый момент я постучал в неправильную дверь в поисках офиса веб-разработки. С помощью моего ломаного испанского мы смогли устранить путаницу, но я ушел с визиткой, адресом электронной почты и серьезным предложением «оставаться на связи».
А вот работа, как мне показалось, отличается и даже несколько ограничена в некоторых местах. В Турции, например, я встречал много замечательных, дружелюбных разработчиков самых разных специализаций. Их навыки и технический бекграунд были разнообразными, но большая часть, похоже, работала на Türk Telekom, что меня немного удивило. Возможно, это нормально, а может просто так совпало в команде, которую я нашел.
Я обнаружил салон разработки и дизайна в Найроби! По разным причинам эта попытка встретиться с другими разработчиками была одной из самых примечательных. Они сосредоточились на веб-сайтах для малого бизнеса, но также работали на американские компании — отправляли электронные письма, которые, честно говоря, попадают в США посреди ночи и, вероятно, удаляются утром без прочтения.
Они работали посменно, чтобы пересекаться с рабочим временем в США. Значительная часть их бизнеса была связана с текстовыми сообщениями и M-PESA, очень популярным в Восточной Африке. Было увлекательно узнать о подобных вещах и своими глазами увидеть все в действии.
Еще одно отличие: иногда поиск чистой воды — более сложная проблема, чем доступ в интернет.
Работа в часовом поясе на 10 часов раньше большинства моих клиентов в США оказалась для меня идеальной и способствовала лучшему балансу работы и жизни: я мог работать утром и вечером, когда рабочие часы пересекались, и проводить дневное время, изучая новое место.
— Запомнилась ли какая-то специфика: интернет-соединение, действия регулятора, часовые пояса и т.д.?
George Mandis: В некоторых странах мне не удалось получить доступ к определенным сайтам. К одним блокировкам я был готов и имел запасные пути, как в Китае. Но другие меня удивили. Неожиданно в Южной Америке мне заблокировали доступ к нескольким хостинговым компаниям. Правда, это не так сложно было исправить: VPN и прокси — друг разработчика!
Во время визита я узнал кое-что интересное об интернете в Северной Корее… но я никогда не пытался работать оттуда. Честно говоря, это было бы невозможно. Ситуация с Wi-Fi в аэропортах отличается по всему миру.
Я также был удивлен тем, что в некоторых странах интернет измеряется. Это было в Исландии. Я жил в доме с 4 или 5 другими людьми, и в один прекрасный день интернет замедлился. В конце месяца он возобновился. Это случилось на следующий день, но я к такому не привык. В США немобильные тарифные планы почти никогда не ограничены по объему данных, и я никогда об этом не думаю.
— Был ли какой-нибудь странный опыт?
George Mandis: Ха-ха! Всегда есть странный опыт! Некоторые договоренности были нарушены. Получение оплаты в Биткоин было не столько странным, сколько новым и забавным.
— Не могли бы вы сказать пару слов о ваших коммерческих проектах, за которые вы получаете деньги? Было бы здорово, если бы вы рассказали об используемых технологиях и причинах, по которым вы их выбрали.
George Mandis: У меня нет отдельных коммерческих проектов, которые приносят деньги. Это все разработка, консалтинг и — в последнее время — обучение.
Я думаю, что за всю карьеру JavaScript дал мне наибольшую отдачу в пересчете на вложенные усилия, но вряд ли это знание полезно другим!
У меня есть несколько внутренних инструментов на Python и Ruby, которые я использую для управления своим временем, проектами и выставлением счетов. Большинство моих новых, более забавных вещей, построены с помощью Express. У меня все еще есть хорошая работа через агентства с WordPress и за последние пару лет я унаследовал несколько проектов на PHP. Я пытаюсь найти хороший проект для React.js, но этого пока не произошло.
Вы должны выбирать стеки технологий на основе сочетания собственных представлений о пользе, врожденной привлекательности / легкости для понимания и интересах сообщества. Вероятно, последнее имеет больше влияния на то, что кто-либо из нас использует, чем мы хотели бы думать.
Я действительно утверждаю, что для 90% того, что мы делаем, язык не имеет такого значения, как мы считаем. Различные способы
— Open source — это современный тренд и даже модное слово. Что вы думаете об OSS? Некоторые говорят, что OSS будет править миром через 10 лет. Корпорации инвестируют сюда огромные средства. Означает ли это, что мы все будем фрилансерами, которые пишут открытый код?
George Mandis: Он уже правит миром! Может быть все просто выглядит не так, как люди себе это представляли.
Веб буквально не может работать без open source, поэтому мне трудно рассматривать его как модное словечко или современный тренд. Безусловно, наше отношение к open-source и сама его концепция изменились. Существует различие в пред- и пост-GitHub восприятии того, что для некоторых людей означает open-source, которое я не могу описать, но могу видеть. Также для меня есть большая разница между GNU и Free Software Foundation, которые используют OSS как своего рода философию, а разработчики участвуют в инициативах OSS, инициированных корпорациями, используя это как шаг в карьере.
Некоторые OSS представляют собой инструмент расширения возможностей или повышения общественного блага. Хороший пример — SecureDrop. В других случаях я чувствую, что корпорации пытаются получить бесплатный труд для внутреннего инструмента. Схема может работать нормально, пока проект продолжает соответствовать потребностям корпораций, но как только фокус сместится, компания покинет проект в поисках более зеленых лугов. Проект может быть заморожен. Честно говоря, я не очень доверяю Facebook в этом плане (это корпорация, о которой я думаю в первую очередь, когда говорю о подобном недоверии). Возможно, в этом и заключается одна из существенных причин моего медленного принятия React.js!
Строго говоря, большинство проектов с открытым исходным кодом, о которых мы говорим, представляют собой инструменты и фреймворки для создания других вещей. Почти все мы используем эти вещи, даже если не содействуем активно их развитию. Я делал крошечный вклад только тогда, когда спотыкался о пограничные условия и ошибки или мне требовалось разработать адаптер или плагин, чтобы он общался со службой, которая в настоящее время не поддерживается.
Так что если вопрос в том, будем ли мы все работать исключительно для создания инструментов, я думаю — нет. Работа над инструментами хороша, но настоящая работа — использование этих инструментов для создания вещей для не разработчиков. Вот где вы сталкиваетесь с реальными пограничными условиями, ошибками и проблемами, которые нужно решить.
Небольшое замечание: мой самый большой вклад в ОС полностью фриволен: konami-js. Я горжусь этим.
— Сегодня распространенная практика для разработчиков — найти теплое место в крупной компании, чтобы получать зарплату в 100 тыс. долларов в год. Как вы думаете, все изменится, когда OSS распространится повсеместно?
George Mandis: Как я уже сказал, я думаю, что OSS уже достаточно распространено. OSS значительно выравнивает игровое поле во многих областях. К слову о проекте, который я уже упоминал — я считаю невероятным, что издание, подобное New Yorker, может запустить SecureDrop и обеспечить безопасное место для анонимных советов. Если бы площадка была проприетарной и скрытной, мы почти наверняка увидели бы меньше организаций, способных предложить такую услугу.
Поэтому я думаю, что игровое поле будет по-прежнему выравниваться. Технологии, которые 10 или 15 лет назад были недостижимыми для небольших организаций из-за стоимости или других ограничений, станут дешевле и доступнее. Платформы для публикации, безопасность, распознавание голоса и образов, искусственный интеллект и глубокое обучение — все эти вещи сегодня я могу перетащить в свой проект, и это замечательно!
С обратной стороны этого оптимизма: инструменты являются open-source, но конечный продукт часто таковым не является. Крупные корпорации с очень разными интересами и потребностями диктуют направление развития и популярность этих инструментов.
А с точки зрения наемного работника я вообще не уверен, что есть разница между открытым и закрытым ПО (но это очень США-центрированный взгляд на вещи).
— И последний вопрос: жизненный цикл современного JS-фреймворка довольно короткий (несколько лет). Сейчас React, Redux, Angular, Vue и т.д. управляют JS-миром. Как долго они будут жить? И что будет дальше?
George Mandis: Если жизненный цикл инструмента короткий, я бы сказал, что это не жизненный цикл, а тренд (хотя я понимаю, что с некоторыми своими ответами я похож на старикана).
Люди любят переизобретать колеса. Я на самом деле думаю, что это хорошо — для обучения — но становится сложно, когда очередные новые колеса рекламируются как направление, в котором все должно идти. Самое смешное, что все это мы уже видели раньше. Я помню Google Web Toolkit и SproutCore, и Cappucino, и другие фреймворки, призванные помочь нам в создании лучших веб-приложений.
Инструменты заново изобретаются с нуля, но концепции, как правило, только корректируются. Я думаю, это важно помнить.
Лучший совет, который я могу дать: научитесь изучать вещи, в идеале — быстро. Достаточно знать, как выявить «суть» чего-то и куда нужно смотреть позже, чтобы уточнить некоторые особенности. Если можете, отождествляйте себя с разработчиком, который знает интегральные концепции программирования на любом языке или фреймворке, или с тем, кто знает основной язык, но я бы предостерег от того, чтобы слишком сильно ограничивать себя инструментами.
На мой взгляд, это немного похоже на подрядчика, который специализируется на использовании только определенного молотка. Вы бы наняли его для работы на своей кухне? Не нашли бы вы немного странным, что он ограничивает себя подобным образом? Возможно. Но в конечном итоге вы хотите специалиста, который создает вещи и понимает, как они построены.
Если кратко: не путайте навыки с инструментами. Я вижу много людей, которые так делают, и когда технологии сдвигаются, они чувствуют, что остались позади.
Некоторое время назад я взял машину Lyft (аналог Uber) и завел с водителем разговор о работе. Водитель сказал мне, что тоже занимался веб-разработкой. Я спросил, что это за работа, и он ответил: «Много PHP и MySQL для финансовых учреждений… Но все задания PHP и MySQL иссякли! Очень жаль."
Этот стек не супер-сексуальный и не передовой, но основные понятия и возможность писать объектно-ориентированный код, который взаимодействует с базой данных SQL, должны быть очень переносимым набором навыков! Т.е. иногда люди слишком сильно идентифицируют язык / рамки / инструмент.
Итак, изучите базовые концепции, изучите основной язык в основе фреймворка. Обновляйте свои знания по общим алгоритмам программирования, но опасайтесь слишком сильно идентифицировать себя с «Разработчиком React» или «Angular разработчиком». Сейчас в этой сфере есть много рабочих мест, и такая ситуация может сохраняться в течение длительного времени. Но если вы продолжите этот путь… Когда-нибудь все это устареет.
Эй, есть ли еще программисты COBOL и магазины Cold Fusion?
George Mandis интересует самыми разнообразными задачами. Его более практический доклад о применении JS для работы с малыми компьютерами (Raspberry, Arduino и т.п.) — Make More Than Music with Tiny Computers, JavaScript and MIDI — запланирован на первый день HolyJS в Санкт-Петербурге.
Автор: ARG89