Отъявленный программист: лайфхакинг из первых рук - Игорь Савчук
Шрифт:
Интервал:
Закладка:
Что удивительно, агенты по недвижимости не вызывают ненависти. Заходишь на craigslist, смотришь объявления, звонишь и попадаешь на владельца или его представителя, а не на частного маклера, готового за 200 баксов найти похожую квартиру. В специально оговоренное время заинтересованные приходят на смотрины, тут же можно подать application. Стоимость application — 30–45 долларов. В случае подтверждения платишь депозит (1–2 месяца ренты, правило хорошего тона — по возврату депозита приплачивать проценты, которые бы набежали на этот депозит в банке), оплачиваешь первый месяц — и въезжаешь. Обычно квартиры без мебели, но с оборудованными кухнями.
Еще приятная особенность — апартаменты часто объединены в коммьюнити, я как раз в таком и живу. В стоимость аренды включен доступ к общественному тренажерному залу, небольшому открытому бассейну, площадке для барбекю. Довольно полезным ништяком является то, что «на ресепшене» могут принять посылку в рабочее время, это удобней, чем доставлять в офис. Еще про впечатления от США: лично мне не нравится рельсовость, накатанность жизни в целом. Материальная обеспеченность отнимает желание стремиться к большему. В Bay Area стремлений и амбиций побольше, конечно, но тем не менее.
Также из неприятных для меня вещей в США — это компании, чья бизнес-модель построена на эксплуатировании законов. Так, о патентных троллях знают все. А вот вы слышали о юридических фирмах, которые ищут жертв неудачно прописанных медикаментов?
Так и идет реклама по местному телевизору: «Если вам прописали X, а у вас были такие-такие побочные симптомы, звоните нам, вам полагается денежная награда». И реклама по соответствующим запросам в том же Google стоит безумно дорого, то есть у этих сволочей хватает прибыли, чтобы еще и рекламу давать. Этот мир явно требует серьезной оптимизации.
Может, в последнем и выражается звериная сущность американских юристов — этаких санитаров леса в обществе и государстве, ревниво стоящих на страже этой самой нерушимой законности, стабильности и порядка, что и порождает в качестве того же побочного эффекта рельсовость и накатанность жизни?
Юристов действительно много.
В этом плане пару раз замечал интересное — при переезде в США/ Европу бывшие жители СНГ прекращают качать фильмы с торрентов. Но не потому, что никто так не делает и это воровство, а просто боятся, что их попалят. И с интересом расспрашивают друг друга, не было ли с торрентами проблем?
Так что все это пиратство и презрение к копирайтам от безнаказанности. Когда в следующий раз будете качать фильм/музыку с торрентов, хотя бы себя не обманывайте, что это потому, что «все качают».
Ну и, конечно, влияет то, что легально купить фильм проще, чем скачать с торрентов.
Давай теперь поговорим более плотно про ИТ. Бытует мнение, что у Google есть любимые языки программирования (ЯП), то есть объективно востребованные скиллы внутри самой компании. Как пример, твой любимый Python часто называют очень популярным в рамках внутренних проектов Google. Можно ли очертить круг наиболее интересного для этого поискового гиганта на программистском рынке?
Любимые языки в Google — это те, которые позволяют выпускать продукты и запускать сервисы. В основном это мейнстримовые языки вроде Java, C++, Python, JavaScript. Они не просто так мейнстримовые — это действительно лучшее, что есть сейчас среди ЯП. Но, вообще говоря, используемый язык — это побочный скилл. На интервью по языкам вас могут спросить разве что о том, как вы относитесь к той или иной особенности ЯП, что бы вы хотели исправить. То есть это скорее вопрос по системному дизайну, чем по языку.
Иначе говоря, язык программирования — это как разговорный язык. Чтобы работать в Google, нужно более-менее изъясняться на английском, потому что на этом языке говорит вся компания. Поэтому нужно уметь свободно писать код на каком-то из мейнстримовых языков программирования. Впрочем, этому учат в любом инженерном вузе, а попасть в штат Google без высшего образования довольно трудно.
Спектр же применяемых технологий настолько широк, что очертить определенный круг никак не получится. Ведь компания не только пишет поисковик, но и занимается исследованиями в области искусственного интеллекта и машинного обучения, производит автомобили и воздушные шары, разрабатывает Android OS и Chrome OS. Поэтому Google пытается нанимать инженеров широкого профиля (generalists).
Сужаю и персонализирую первоначальный вопрос: какие технологии сегодня поражают тебя и какие языки программирования будут рулить на массовом рынке в ближайшие пять лет? Если можно, сделай прогноз, что сейчас наиболее перспективно и востребовано на кухне топ-разработчиков.
Я люблю функциональные языки программирования, и мне радостно видеть, что они постепенно приобретают все больший вес в области обработки данных. Но это не означает, что мейнстримовые языки куда-то исчезнут и на их место придут другие.
Знаете, почему и через десять лет мы будем писать на С++, а не на каком-нибудь другом языке? Потому что современные компиляторы С++ оптимизируют так, что просто диву даешься. Например, посмотрите: я попытался обмануть компилятор так, чтобы он не оптимизировал пробрасывание временного значения в функцию bar. [http://bit.ly/1fsb7sU] Что из этого вышло — сами видите.
Возможно, Go и Dart удастся немного потеснить Python и JavaScript, но не более того.
Предвидеть же, какие технические направления будут горячими через пять лет, я не берусь. Впрочем, всем карьеристам еще не поздно вскочить на поезд Artificial Intelligence и Machine Learning, они вряд ли скоро пропадут с горизонта.
Действительно, ничего революционного в твоем списке языков и технологий нет. Тем не менее знакомые девелоперы часто брюзжат слюной, что технологии создания программных продуктов не прогрессируют с 60-х. В чем суть этого скепсиса?
Давайте лучше поговорим о философии программирования, которая тоже не меняется с середины прошлого века, — это будет более общим случаем предложенной темы.
Итак, программированием правит утилитаризм. «Premature optimization is a root of all evil» — говорит нам старина Кнут, и мы вспоминаем о производительности только тогда, когда уже поздно. Пятидесятикратное падение производительности? Да пофиг, будем писать на Python в 3 строки! Четыре гига «оперативы» ушло в никуда? Еще раз пофиг, зато мой pure functional язык позволяет мне выражать мысли монадами!
Недавно коллеги обсуждали невероятные тормоза LibreOffice при прокрутке документа с SVG. И это на современных персональных компьютерах текущего года. Мне особенно больно это слышать, потому что я почти 4 года проработал над офисным продуктом, который изначально затачивался под мобильные устройства. Это Excel, который работает на мобильном 20-мегагерцовом процессоре. Word, занимающий памяти меньше, чем документ, который вы открываете. Но пришло время айфонов и айпадов, и я лично наблюдал, как деградировал наш продукт, когда снимались определенные ограничения. На первом iPad можно было легко откушать до 64 метров памяти без риска быть убитым, это было роскошью, и приложение летало. К появлению iPad Retina приложение уже хотело под 300 метров в определенных случаях, а на первом iPad тормозило. Аналогичная деградация наблюдалась в Android-версии. Изначальный лимит в 16 Мбайт для поддержки слабых андроидофонов был вскоре забыт, основная разработка велась под Android-планшеты, которые могли поспорить в производительности со слабенькими персоналками. К чему это привело, вы все сможете посмотреть в Android 4.4 KitKat, в ванильной поставке которого должен быть тот самый офис.
Мой вывод — виновата философия программирования, которая сделала создание программных продуктов чисто утилитарным действием. Программирование сегодня — это как написание картин для того, чтобы дырку в стене прикрыть. Модернизация «алгебры» этого процесса приведет лишь к тому, что качество картины будет выше с точки зрения ее возможностей лучше висеть на стене и прикрывать дырку. А вот что делать, чтобы программирование стало искусством, а не ремеслом? Возможно, такая возможность уже безнадежно утеряна.
Давай, глядя с вершины всех этих зияющих проблем отрасли, попытаемся дать дельные советы начинающим программистам. Ты — состоявшийся программист. Оглядываясь назад, анализируя свои поступки и мотивы, можешь ли ты сам себе объяснить, в чемсекрет или формула успеха на этой стезе? Очень многие молодые люди стремятся стать айтишниками, но далеко не у всех в итоге получается что-то путное. Глядя изнутри индустрии, что можно выделить главное в характере, профессии и обстоятельствах, которые способствует успеху именно в ИТ? Какие общие советы ты бы дал начинающим программистам?