Игорь Савчук - Отъявленный программист: лайфхакинг из первых рук
В самом начале 2015 года Китай объявил настоящую сетевую вой ну против тех сервисов VPN, которые смогли адаптироваться к Великому Китайскому фаерволу. Проблемы возникли со многим известными платными сервисами, например «отвалились клиенты» у StrongVPN, TunnelBear, Astrill и Golden Frog. Представители этих сервисов официально подтвердили перебои в обслуживании их пользователей в Китае. Также в компании Astrill дополнительно сообщили, что Китай начал блокировку в режиме реального времени работы VPN и на мобильных устройствах Apple, чего раньше не наблюдалось. Представитель Golden Frog сказал в интервью изданию TechCrunch, что новый тип атаки на их VPN-сервисы стал «более изощренным по сравнению со всем тем, что мы видели в прошлом». На данный момент специалисты крупных VPN-провайдеров разбираются в деталях примененной Китаем фильтрации, пытаясь нащупать ее слабые места. Кроме того, Государственная канцелярия по делам интернет-информации Китая сообщила, что с 1 марта 2015 года в стране вводятся новые правила регулирования Интернета. Согласно обнародованному ведомством документу, все китайские пользователи сети Интернет должны будут удалить свои старые аккаунты на форумах, в блогах и мессенджерах и завести новые с указанием своих настоящих имени и фамилии. Отныне в Китае любой анонимный аккаунт сам по себе является преступлением безотносительно к тому, что там написано. Отслеживаться и караться будут не только те, кто создает и ведет такие аккаунты, но также и те, кто их посещает и читает. Тем временем Google инвестирует 1 миллиард долларов в компанию Space Exploration Technologies Corp., которая займется созданием глобального космического интернет-провайдера с помощью нескольких сотен спутников. О начале работы над этим амбициозным проектом официально заявил его автор Элон Маск, генеральный директор компаний SpaceX и Tesla Motors. Google занимается разработкой системы глобального спутникового Интернета с 2014 года. В конце 2013 года компания наняла ветерана спутниковой индустрии Грега Уайлера для руководства этим проектом. Но летом Уайлер покинул компанию и в настоящее время занимается разработкой собственной спутниковой интернет-системы, инвестировать в которую намерены Qualcomm и Virgin Group. У двух научных групп фундаментально отличаются подходы в способах передачи сигнала на Землю: пока Китай верит в неизбежность пришествия коммунизма, Уайлер делает ставку на радиочастоты, а Маск — на оптико-лазерную технологию. Чье видение окажется в итоге более реальным, покажет время, которого до каких-то первых результатов по оценке обоих предпринимателей осталось около 5–7 лет (то есть нужно подождать примерно до 2020 года). Оба проекта убеждены, что запуск системы глобального спутникового Интернета даст возможность навсегда решить проблемы не только доступа к сети в самых труднодоступных и экономически отсталых регионах планеты, но и положит конец попыткам цензуры и контроля Интернета на уровне его национальных сегментов, сделав информацию свободной для всех.
ГЛАВА 5. Джастин Франкель — альфа-гик из Аризоны
Джастин Франкель — известный американский программист и музыкант. В молодости пытался получить высшее образование в области программирования в университете штата Юта, но был отчислен из-за проблем с учебой. Автор первой программной реализации пиринговой сети. Самые известные его программы — WinAmp, gnutella, SHOUTcast, REAPER. Интервью взято в 2012 году.
WinAmp — наиболее известная и коммерчески успешная программа нашего сегодняшнего героя. В 1999 году компания America Online купила у него эту программу, а вместе с ней и его фирму Nullsoft, которая развивала и поддерживала ее. За эту сделку Джастин Франкель (Justin Frankel) получил тогда около 100 миллионов долларов плюс руководящую должность с приличным окладом в штате AOL (первую и последнюю наемную работу в своей жизни). На тот момент Джастину было всего 20 лет — неплохое начало для карьеры обычного программиста. И хотя он уже давно не участвует в создании WinAmp, Джастин попрежнему очень активно продолжает коммерческую разработку софта (его новая компания Cockos! хоть и не приносит ему былых миллионов, зато полностью самоокупается и позволяет платить зарплату нескольким разработчикам). По замечанию самого Джастина, продажа Nullsoft разделила его жизнь на два периода — до и после. Сегодня, в годовщину продажи Nullsoft, мы решили взять большое интервью у основателя таких культовых программ, как WinAmp, SHOUTcast и пиринговой сети Gnutella, чтобы узнать из первых уст историю этих известных продуктов, а также понять, чего сейчас у Джастина больше в жизни — программирования или все-таки музыки, которой он занимается не менее серьезно, чем программированием.
Продажная шкураПрежде чем мы поговорим о вашей богатой истории, можете сейчас вспомнить, с чего все начиналось? Как вы пришли в программирование? Какие были мотивы? Я начинал программировать на компьютере Atari 800XL, который достался мне от моего старшего брата. Сколько я себя помню, мне всегда было очень интересно программировать. Для меня программирование — это источник хорошего настроения, в более общем смысле — возможность развиваться и работать над собой, возможность проявить себя и свои вкусы. Бизнес-составляющая для меня была всегда в стороне от этого чувства; возможность заработать своим любимым занятием — просто дополнительный приятный бонус. Джастин, очень логичный вопрос: что чувствует человек, когда его выгоняют из собственного бизнеса? Не то чтобы это уникальная история, но все же какие чувства вы тогда испытывали, когда вас поставили перед фактом: с сегодняшнего дня WinAmp не имеет к вам никакого отношения? Ну, во-первых, мне очень хорошо финансово компенсировали эту потерю, во-вторых, это не было какое-то мое сознательное решение, так как первоначально мы договаривались, что, несмотря на продажу, я буду продолжать работу над проектом. Поэтому я не чувствую никакой вины, что я «предал» свой проект, — так сложились обстоятельства. Тем более я успел вложить в WinAmp практически все, что собирался там сделать, поэтому уходя не чувствовал себя слишком подавленным. В связи с этим вы писали в своем блоге: «Для меня программирование — это форма чистого самовыражения. Компания же (имеется в виду AOL) подавляет наиболее эффективные средства самовыражения из тех, что у меня есть. Это неприемлемо для меня как для личности, поэтому я должен уйти». Итак, программирование — это для вас искусство или все-таки обычная работа? Я думаю, что это смесь всего сразу. Представляю себе технологию любой разработки из трех разноуровневых плоскостей: на высшей — мы рождаем концепцию программы, формируем ее индивидуальность, это чистой воды креативность и искусство. На следующем уровне — разработка программы, ее написание, проработка алгоритмов и деталей ее работы, здесь уже задействована смесь из рабочих навыков и креативности. Низший уровень — отладка и шлифовка программы, и для меня это рутина, монотонная техническая работа, лишенная творческой искры. Поэтому, как и в обычной жизни, при разработке мы последовательно проходим все эти уровни, но секрет успеха всего цикла, по моему мнению, сокрыт именно в первом уровне — концепции. Суммируя, можно сказать, что без креативности ты посредственный программист? В каком-то смысле да. Ты обречен постоянно работать лишь на низшей плоскости в этой модели. И это всегда наемная позиция, обратите внимание. Поэтому в нашем сложном мире программист программисту рознь. Джастин, извините, я и в самом деле не понимаю, вас очень многие знают в индустрии, и вы сами говорили о больших возможностях и предложениях, то есть вы могли устроиться во многие крупные корпорации и работать там наемным программистом и ни о чем не париться — так к чему все эти нервы и риски с собственными проектами? Потому что это дает совсем другие ощущения. Я работал однажды в America Online (смеется), и вы сами знаете, чем это закончилось. Я понял для себя, что мне очень важно оставаться самим собой и делать в этой жизни то, что я считаю правильным. Работая на корпорацию весь день напролет, ты осуществляешь чьи-то чужие планы, не живешь своей мечтой, неизбежно подавляешь свою креативную составляющую. Очень сожалею, что мне не дано выразить словами, насколько это большая разница. (Пауза.) Ну, примерно как если бы вы работали в садике няней и ухаживали за чужими детьми. Или, например, если бы вы выступали в качестве родителя и у вас был бы свой собственный и долгожданный ребенок. В принципе, в обоих случаях будет очень много общего чисто внешне, но все же… черт побери, но это же совершенные разные вещи, не так ли? Давайте коснемся и другой актуальной проблемы, через которую вы прошли лично: могут ли одиночки вроде вас противостоять корпорациям с большим коллективом разработчиков? Иначе говоря, возможно ли в наше время одиночкам-программистам написать что-то по-настоящему известное вроде вашего WinAmp? Я понимаю, что вы имеете в виду, но я думаю, что не так все просто. Я работал в очень большом коллективе разработчиков в свое время и думаю, что часто «больше» — не значит «лучше». Конечно, я могу сейчас рассуждать об этом лишь теоретически, но думаю, что у одиночек шансы все еще есть. Если вы посмотрите на Facebook, Microsoft, Google, Apple и т. д., вы увидите, что, несмотря на их гигантский штат, за ними стоят по-прежнему одиночки, которых вы знаете поименно. Кстати, я уже говорил раньше о своей трехуровневой модели разработки — по-прежнему, я повторюсь, но все решает удачная концепция. А для этого хватит и одного по-настоящему талантливого человека. Вот поэтому я уже давно не работаю в корпорациях! (Смеется.) Интересно, с учетом вашего перфекционизма в отношении программирования как вы лично считаете, нужно ли специализированное высшее математическое образование (или по компьютерным наукам), для того чтобы создавать высококлассные современные программы? Скажу вам прямо, я не считаю, что сегодня обязательно нужно иметь высшее образование по математике или в CS для разработки успешной программы. Я считаю, что любой может добиться очень многого, самостоятельно учась и пробуя. Тем более сейчас, когда есть такие большие возможности для получения любой информации, а также возможности для удаленной работы в команде с профессионалами очень высокого уровня (например, в многочисленных сетевых проектах Open Source). Поэтому для какого-то профессионального базиса достаточно упорства и аккуратности, я считаю. И наоборот, вижу, что у многих дипломированных выпускников часто не хватает элементарного упорства, чтобы добиться чего-то более-менее заметного. Поэтому не это главное сегодня. Вы уверены? К примеру, я могу нанять очень хороших и дорогих программистов в качестве послушных исполнителей прямо завтра, которые закончили самые престижные вузы и полностью готовы к осуществлению сложных проектов. И что, факт этого сам по себе хотя бы что-то гарантирует? Эти времена уже прошли. Сегодня важно… (после паузы шепотом) давайте закругляться с этим вопросом, потому что я снова начну повторяться про первый уровень своей модели. Ладно, о’кей, как вполне состоявшийся в сфере программирования человек поделитесь секретом своего успеха. Это некая индивидуальная удача или результат стахановского труда и личных, очень ярких и нестандартных способностей? Ответ зависит только от того, что вы подразумеваете под понятием «успех». Например, для меня, и я хорошо знаю это, важным условием для будущего успеха программы является возможность самому ежедневно очень плотно пользоваться этой программой. Если ты пишешь софт для других пользователей, а сам им не пользуешься, то, естественно, не знаешь его со всевозможных сторон в реальной жизни — тогда успех будет сложной задачей, в этом случае сложно добиться понастоящему глубокого уровня резонанса с потребностями твоего потенциального покупателя. Поэтому это очень важно, в конечном счете все стоящие программы мы пишем прежде всего для самих себя. Разве нет? Интересно, сегодня вы как-то принимаете участие в разработке WinAmp? Общаетесь ли вы с текущим лидером проекта WinAmp Беном «Benski» Эллисоном? Нет, вообще не в курсе, чем они там занимаются. С Беном как-то пару раз пересекались, кроме обмена обычным «привет», никак не общались. Уже пару лет как я полностью с головой ушел в свой новый проект REAPER. О’кей, перевернули страницу истории, WinAmp остался позади. Что можете сказать о вашей сегодняшней ведущей разработке REAPER? Чем она особенна среди подобных? И вообще, почему люди пишут новые программы, когда изначально существуют уже подобные аналоги? Проект REAPER начинался с того, что мне нужно было что-то, что позволяло бы достаточно эффективно и удобно записывать живое аудио, а затем иметь возможность сразу же подредактировать его хотя бы на каком-то базовом уровне возможностей. На тот момент у меня не было никакого подобного и по-настоящему удобного лично мне инструмента под рукой, и, как это часто случается (произносит по слогам): мне было проще написать это самому. Знакомая для любого программиста фраза, не правда ли? Именно так все и начинается. Но конечно, с тех пор программа очень сильно выросла и разрослась, возможно, это во многом субъективно, но я вижу ее основные отличия от многочисленных конкурентов в следующем: ? очень продвинутый уровень пользовательской кастомизации программы (возможность создания своих тем, меню, шаблонов, значений по умолчанию и т. д.); ? отсутствие защиты от копирования и взлома, полностью функциональная демоверсия, что для меня очень важно; ? очень гибкая и продуманная открытая архитектура для сторонних плагинов — любой желающий может расширить любую подсистему программы, добавив в нее новую функциональность, новый формат или сферу приложения; ? я также стараюсь очень часто обновлять программу, непрерывно работая над ней. По всему тому обилию программ, которые мне приходилось видеть и писать за свою жизнь, я берусь судить, что REAPER — понастоящему качественно спроектированная и реализованная программа.