Откровенный взгляд молодого адвоката на дело Алексея К., большое интервью бывших топов Onliner.by и tut.by о кухне Байнета, горячие новости из мира функциональных языков программирования и Javascript, чёрные двери к работодателю в Кремниевой долине — в очередном выпуске ссылкообзора.
Читать далее
1. «Так будет со всеми, кто придет на нашу землю набить карманы»
dev.by подробно освещал суд над айтишником Алексеем К. в собственных репортажах, но недавно разблокированное издание KYKY посмотреть на сие действо (равно как и вообще на белорусское правосудие) голубыми глазами идеалистичного адвоката (это первоисточник). Эти мысли вслух ещё молодой женщины заставляют задуматься, почему местная пословица «от сумы да тюрьмы не зарекайся» не имеет симметричных аналогов, например, в англо-саксонской культуре.
В деле того же Алексея К. доказательством является полученная ненадлежащим путем неизвестно откуда распечатка счёта, и последующие осмотры следователем страниц, в которых следователь, вопреки понятию «осмотр» высказывает оценочные суждения о той или иной информации на интернет-страницах и доказательства ею каких-либо фактов.
Я слышала наверное почти от десятка адвокатов, что, когда они были молодыми, каждый раз после постановления несправедливого приговора, рыдали от беспомощности и несправедливости. Потом это прошло. Я не думаю, что они стали черствее или хуже, наверное, просто немного жестче как проявление бережности к себе в непреодолимой ситуации.
Или :
К сожалению, адвокаты гораздо чаще, чем мы, вынуждены сталкиваться с мелкой бесчеловечностью различных небольших должностей. Моральная катастрофа нашей страны во многом в том, что низшие государственные работники типа милиционеров в судах, секретарей, охранников, работающих за наши с вами налоги, многие из них — люди, лишенные минимальных нравственных, человеческих, эмпатических качеств.
Вчера в суде из зала не вышло еще человек двадцать, когда милиционер, которому не перед кем было там даже выслуживаться, начал выволакивать за руки жену Алексея, которая подошла к решетке, сказать несколько слов любимому, которого осудили на 6 лет. Что стоило ему молча дождаться пока выйдут все и предложить выйти ей, дав одну минуту близости через решетку с мужем? Вот эта бытовая ежедневная плоская безвкусная бесчеловечность к ближнему вчера больше всего выбила меня из колеи. Больше, чем опущенные глаза судьи, ни разу не поднятые в зал, или мятость и стушеванность прокурора (кстати, свежий продукт юрфака — год как закончил).
В конце поста сильное, годное обощение, которое за частоколом разрозненных фактов и случаев позволяет увидеть самое главное:
Есть такое понятие как «Паллиативная терапия — это подход к лечению, позволяющий улучшить качество жизни пациентов и их семей, столкнувшихся с проблемами неизлечимого заболевания, путем предотвращения и облегчения страданий благодаря раннему выявлению, тщательной оценке и лечению боли и других физических симптомов, а также оказанию психосоциальной и духовной поддержки пациенту и его близким». Мне кажется, можно сказать, что адвокаты в Беларуси вынуждены оказывать своим клиентам по уголовным делам паллиативную юридическую помощь.
Завершая обзор этого кричащего материала, имеет смысл напомнить о сущности местных тёрок. В свежем выступлении А. Г. Лукашенко призвал инвесторов «не быть жлобьём», лишний раз подчеркнув, что:
«Вспоминаю рыдания отдельных граждан по поводу некоторых посадок, как они пишут, в последнее время: „Ай, Лукашенко посадил“, — отметил президент. — Так будет со всеми, кто придет на нашу землю набить карманы и уничтожить трудовые коллективы».
2. Ехали медведи на видео-велосипедах
Следуя напутствию старшего поколения, некоторые молодые люди сразу отправляются «набить карманы» на не нашу землю (словно что-то предчувствуя). Особенно это касается молодых тунеядцев из провинций типа Бреста.
Вот типичный пример такого безобразия. Мы уже писали, что белорусский стартап Kino-mo получил свою порцию признания на конкурсе Pitch to Rich 2015. Основатель Virgin Group Ричард Брэнсон, присутствовавший на вручении наград, отметил, что технология Kino-mo «выглядит фантастически».
Накануне финала интернет-издание ЦП взяло интервью у основателя стартапа брестчанина Кирилла Чикеюка, где обсуждает, как его команда пришла к созданию голографических экранов, чего он ждёт от конкурса и кому нужны технологии типа видео-велосипедов.
Расскажите, пожалуйста, о самой технологии и о том, кому она нужна прямо сейчас и для чего.
С видео-велосипедами мы разработали финальную версию продукта, определились с моделью монетизации и скоро начинаем активно продвигать продукт на другие рынки. Модель монетизации — лицензирование рекламным агенства по всему миру. Лицензиат получает определенное количество устройств для видео-велосипедов и эксклюзивное право использования нашей технологии на определенной территории.
Лицензия предполагает определенную комиссию с продаж. Лицензии на использование уже купили в Японии, Мексике, Ирландии, Гватемале. Глобально мы планируем построить сеть лицензиатов по всему миру. В этом смысле мы позиционируем себя исключительно как технологическая компания, то есть мы только предоставляем технологию или продукт, а также оказываем техническую поддержку.
Несмотря на то, что видео-велосипеды уже работают, а также несмотря на восторженные отзывы и вау-эффект, мы всегда стремились построить более масштабируемый бизнес. Что-то, что потенциально может превратить Kino-mo в миллиардную компанию. 3D-дисплей, в потенциале, полностью отвечает такому критерию.
3. Мэтры Байнета — Онлайнер vs. tut.by
Негры-роботы из моего отдела парсинга новостей хоть и чуть запоздало, но таки засекли офигенное по своей экзистенциальной силе интервью о скрытых пружинах Байнета. Это «Честное интервью: Денис Блищ (ex-Onliner.by) и Кирилл Волошин».
От автора видео-интервью такая подводка:
На подготовку этого интервью ушло больше месяца. Изначально было желание разрезать его на кусочки и отдать заинтересованным изданиям. Тем более, что спрос на Блища и Волошина ещё (пока) существует. Но потом, мы с СМ (любимой компанией, которая делает видео) решили опубликовать интервью полностью. Из 1,5 часа живого времени мы удалили лишь повторы и некоторые высказывания, которые сами собеседники сочли, почему-то, не уместными. Вообще-то я против цензуры в любом виде и искренне предупреждаю своих собеседников, что резать интервью в будущем мы не будем. На этот раз сделали исключение (привет, Денис), чтобы маэстро Байнета выглядели так, как они этого хотят.
Всегда полезно и приятно послушать умных людей — 1 час болтовни о подноготной центральных порталов Байнета, планах на будущее и о жизни в интернете вообще.
4. Уголок юного джаваскриптера
Во всех популярных языках есть потоки (threads). В браузерном javascript для параллельной обработки используются worker-ы. Под катом рассказ о том, как ими пользоваться, какие ограничения есть в воркерах и об особенностях взаимодействия с ними в разных браузерах.
Семь удивительных «возможностей» Javascript:
За последние несколько месяцев я сделал несколько доработок для JSHint, в основном с целью изучить ES6 (я особенно горжусь тем, как переделано обнаружение областей видимости для переменных). Во время этого процесса я наткнулся на несколько вещей, которые меня удивили — в основном, в ES6, однако есть и кое-что про ES3, что я до этого никогда не использовал.
Критичный комментарий автору статьи:
Ммм… Я так понимаю, стрелять в ногу в одиночестве Вам надоело, и Вы решили набрать народ в клуб, заодно научив их отстреливать себе руки. Поддерживаю, зачотно!
— Артём Поликарпов (@artpolikarpov) June 5, 2015
5. Альтернатива callback-ам
Цитирую свежачок отсюда:
Давайте предположим, что нужно сделать рельсовое приложение, которое позволяет создавать ордер, в зависимости от входных данных ордера создавать один или несколько сервисов, резервировать какие-нибудь ресурсы под эти сервисы.
В ходе обработки ордер меняет свое состояние от нового до выполненного, при этом создаются несколько сервисов (в зависимости от данных) и они должны быть запущенны и работать к концу обработки заказа. Простой пример — вы оформляете себе симку для сотового. К этой симке «подключаются» сервисы голосовой связи, СМС-ок и ММС-ок, мобильного интернета (у которого свои тарифы), автоответчик, определитель номера и т. д. К окончанию обработки вашего договора (заказа) все эти сервисы должны быть запущены и работать. Далее вы можете заключить доп. договор и переключиться на др. тариф мобильного интернета и т. д. Это просто пример логики, на который я буду ссылаться для наглядности.
Абсолютное большинство программистов начнет делать такое приложение на колбэках или тригерах. Создан новый ордер — ставим ему состояние new — и вешаем колбэк который начинает создавать сервисы и т. д.Далее я постараюсь объяснить, почему это абсолютное зло.
Из комментов парируют:
Вы сейчас открыли для себя новый чудный мир акторов, паттернов потоковой обработки и так далее: -) Сразу скажу, что эта история полностью альтернативна Rails, и вам будет очень сложно увязать одно с другим.
Это объясняет миграцию разработчиков с Rails на Erlang, Clojure, Scala и так далее. Однако сами по себе языки не панацея, интересна сама модель акторов, на которой построен принцип работы Erlang-приложений и фреймворк Akka.
Вам совершенно верно упомянули Роба Мартина и паттерны. DHH, к сожалению, все это отмел как «устаревшее» и в результате разработчики плачут кровавыми слезами, однако, щедро оплачиваемыми. Но эта лафа скоро может закончиться, потому что модель акторов сейчас становится модной, а это значит, что рельсы могут сдать свои позиции.
I herd you like callbacks pic.twitter.com/bL85GAOn0b
— benatkin (@benatkin) May 21, 2015
6. От Haskell теперь надо бежать
К сведению желающих освоить Haskell — уже поздно. Национальная программа улучшения технического образования от правительства Индии начинает удалённые курсы обучения по Haskell. На государственном уровне решено: этот замечательный язык нужно двигать в серые индийские массы!
Регистрация там простая, можно даже сказать, что для всех — через Google Translator. Для всех кто хочет поржать, совмещая приятное с полезным, напоминаю: индийские государственные курсы обучения Haskell стартуют 15 июля, язык обучения — английский. Как говорится, теперь от Хаскеля нужно бежать, но помните: у индусов-кодеров руки хоть и кривые, но длинные.
Считаю, что для эзотерических языков и ФП вообще — это знаковое событие, поэтому продолжение разговора отдельным пунктом. Дурная привычка заразительна.
Премьер-министр Сингапура Ли Сяньлун решил выучить Хаскель http://t.co/dNsU9bNaaC
— Андрей Ситник (@andrey_sitnik) April 22, 2015
7. «Там были авгиевы конюшни на 5 строк»
Ну, и раз мы уже начали бухтеть про функциональное программирование и грядущее пришествие индусов в эту тему, накину-ка я из последних ссылок.
Прогер Иван резонно замечает:
«Looking for a senior scala functional programmer». И, как правило, тишина. Потому что, кажется, никто не понимает вот чего.
Функциональный программист пишет код, который в 100 раз надежнее и в 5 раз эффективнее, и пишет он это в 5 раз быстрее, чем «объектный». Но нанять его хотят по цене объектного.
Немало выдающихся программистов смиряются с судьбой, и идут, хорошо зная хаскель, в джавщики куда-нибудь в Гугл, и торчат там, иной раз по обстоятельствам (тогда понятно), иной раз просто по скромности. Ну и, соответственно, по вечерам занимаясь любимым делом, а днем пиная *** с идиотами, получая код ревью, где какая-нибудь шушера учит, как правильно писать по патернам.
Но как только дело доходит до смены работы, возникает вот эта фрустрация. Спрос (нынче) большой, а разницу между «опытным джавщиком» и интеллектуальным хаскельщиком-окамельщиком-скальщиком никто не видит. И вот менеджмент, и рекрутеры, пропускают это волшебное слово «объектный», и хотят купить алмаз по цене хрусталя, и иногда у них получается. А если не получается, то они думают, во-первых, ишь, плохая ниша, тут никого нету. На самом деле тут есть; предложите зарплату в два раза больше, и наймёте программиста, который сделает в 200 раз больше. Но, увы. Вся культура не позволяет. Культура вполне позволяет нанять на приличные деньги какого-нибудь менеджера, мастера эффективно молоть языком; но человека, который спасет контору в долговременном плане — увы.
Вот это всё — отличный повод для всех сторон потоптаться по святому.
Сколько нужно Хаскель разработчиков, чтобы заменить лампочку? Отличный пост про OO vs. FP http://t.co/T2xdXAlZjo
— Roman Busygin (@nskboy) February 2, 2015
Словно памятуя про начало государственного обучения индийцев Haskell, в комментариях Ивану пишут:
Я думаю, это заблуждение. Говнокод можно писать на любом языке с любой парадигмой. Вся разница на самом деле между хорошими (гениальными) программистами и серой массой. Пока технология Х является уделом энтузиастов, средний уровень тех, кто её знает, очень высок. Как только (если) Х становится мейнстримом, на неё приходит масса условных кумарпателов, которые будут долго и нудно писать на условном Хаскеле такие же глючные, корявые и запутанные программы, которые они до этого писали на Джаве, а еще раньше — на Фокс Про и Вижуал Бейсике.
Так, насчет априорной качественности «всего написанного на ФП» разобрали, теперь коммент насчет скорости разработки:
Времена, когда написание кода занимало большую часть рабочего времени давно прошли. Сейчас больше 50% времени нужно трепаться с менеджером, с другими программистами, сидеть на бесконечных коллах, втыкать в описание, пытаться понять, что вообще надо делать и т. д. Поэтому улучшение скорости написания кода на дедлайны влияние ни оказывает. Deadline-driven development
Продолжая разбирать на части исходный стейтмент чужеродного Ивана (в том смысле, что давно свалившего за бугор), присовокупляю следующее:
На нынешнем уровне развития математики, есть вообще лишь два варианта делать надежный код:
- Безумное количество тестов. В смысле не просто coverage 100%, а также каждая строка проверяется во всем диапазоне возможных входных значений.
- ДОКАЗУЕМОСТЬ верности кода — принципиально недостижима в общем случае для императивной парадигмы, но достигается на декларативном программировании и вроде бы в частности на функциональном программировании — то есть можно писать такой код, который будет принципиально верным.
Конкретно достигается это как раз тем, что можно сделать абсолютно оттестированные, извините, забыл как называются, вообщем куски кода, реализующие желаемую конструкцию (ну как, например классический цикл for.), а потом просто из этих «кубиков» можно написать настолько коротко и однозначно что невозможно будет сделать ошибку.Да, отдельный бонус, что функциональный стиль имеет очень большое преимущество перед императивным в выразительности кода — то есть видно глазами, что делает код.
После обильных излияний по поводу выгод-невыгод ФП не могу не привести старый пост, который позволяет посмотреть на все эти священные войны адептов мейнстрима и авангардной эзотерики через принципиально иную оптику:
В последнее время я стал достаточно плотно интересоваться маркетингом и бизнесом вообще и как-то дошёл до такого понятия как бизнес-стратегия. По большому счету, успешных бизнес-стратегий всего три:
- лидерство по издержкам (минимальная себестоимость и цены)
- дифференциация товаров («think different», «не такой как все», т. е. отличие по качеству, уровню обслуживания, технологическому превосходству или высокой ценности для покупателей)
- фокус — обслуживание узких рыночных ниш, вытесняющая специализация.
Другие стратегии, или различные комбинации перечисленных — НЕ РАБОТАЮТ. Т.е. нет смысла делать супер-продукт или нишевый продукт задёшево, или делать нишевый продукт супер-крутым. Если, конечно, у вас нет магических артефактов типа «+$10M от инвестора» или «+24 часа в сутках».
Оказалось, что с помощью вышеприведенного анализа бизнес-стратегии можно также понять и спрогнозировать степень успешности языков программирования. Поехали.
Проехать всем читателям предлагается вот по этой ссылке. Из комментариев к этой чудной статье догоняемся таким дополнением автора:
Для меня наиболее ценно здесь:
- Продукты с дифференциацией порождают споры. Кто-то их любит, кто-то ненавидит. Мне было непонятно, почему некоторые так отчаянно наезжают на Хаскелл, а теперь понятно, что это норма для таких продуктов.
- Не надо мешать стратегии — решил делать different, не надо пытаться упрощать язык для чайников; делаешь для чайников — не выпендривайся с фичами; делаешь нишевый — вот и делай нишевый (или делай уже другой продукт, а то нишу потеряешь).
- Об этом я упомянул вскользь — дешёвые продукты на самом деле делать тяжело (сложно выиграть ценовую войну с крупными корпорациями), но при этом их легко вытесняют более дешёвые продукты (текущий мейнстримный язык часто меняется). Так что нет смысла делать мейнстрим-язык (или надеяться, что какой-то язык станет мейнстримом) — там дерутся корпорации, да и недолго он будет мейнстримом.
Кстати, Хаскелл станет мейнстримом, когда мейнстримом станет ФП (благодаря стараниям корпораций) и сложность входа понизится (с другой стороны, к этому моменту возможно появится более удобный ФП язык).
8. Typing — сервис для тренировки написания кода
Typing — это веб-сервис, с помощью которого можно тренироваться в скорости написания своего кода на 16 языках программирования.
Сервис работает по принципу старых утилит вроде «Стамины». Вам даётся определённый кусок кода, и вы должны воспроизвести его, печатая на клавиатуре. Если символ введён неверно, нужно вернуться обратно бекспейсом и написать его правильно.
У Typing есть как платная, так и бесплатная версия. В бесплатной — ограничения количества языков и отсутствие статистики. В платной их нет, и она раздаётся по модели подписки за 9,99 доллара в месяц. Заплатив за использование сервиса, вы также сможете загружать в него свой код.
http://t.co/vGZU1MQ4hG is a typing tutor/trainer for #programmers, allow you to practice typing in real #code pic.twitter.com/ZQGDMEZLk2
— Sammy D (@slypix) June 25, 2015
9. Разница между разработчиком и программистом
Разбираемся в нюансах старой как мир дискуссии «Ты ж программист»:
У профессий программиста и разработчика много общего, да и в быту эти слова часто используют как синонимы, но разница, хоть и не всегда заметная, есть. Иначе почему вообще появились такие понятия как software developer, computer scientist и programmer?
В комментариях пытаются обобщить так:
Программисты видят, что программисты разные, а понять этого не могут, вот и пишут такие статьи.
Программист, разработчик, кодер, формошлёп — каждый понимает под этим что-то свое. На мой взгляд, все гораздо проще.
- Есть одна профессия — Software Engineer. А вот квалификация у этих Software Engineer разная.
- Есть junior’ы, которых частенько назвывают формошлёпами и говнокодерами. Которые просто еще не умеют писать нормальный код.
- Есть middle’ы, которых зовут программистами, кодерами, да и разработчиками тоже. Они уже умеют писать код, поэтому часть времени они думают «какой же код все-таки писать».
- Есть senior’ы, которые 80% времени думают, какой код писать и 20% времени его пишут. Вот они и занимаются проектированием по большей части.
- В крупных конторах есть еще и TechLead и Software Architect, которые только проектированием и заняты.
Это все одна профессия — Software Engineer, просто чем опытнее «инженер», тем большое он похож на инженера-проектировщика или инженера-конструктора.
Весь этот спектр компетенций в пределе сводится к двум противоположным полюсам:
- Есть люди-флагманы профессии. Они создают новые языки программирования, новые фреймворки, которые принимает на вооружение весь мир, новые коды и программы, которые потом используются действительно на благо общества. Это элита.
- А есть те, кто это использует на благо себе для зарабатывания на этом денег. Те кто «лобает» код и косит бабло. Но при этом последние причисляют себя к первым (элите), хотя на самом деле являются ремесленниками. Да, ремесленником тоже быть не просто и надо много учить и знать и делать. Но сути это не меняет. Это всё равно умелый ремесленник (Senior).
Сразу вспомнилась старая статья на эту же тему: «Программист» — это сверхобобщение:
Термин «программист» покрывает колоссальный спектр способностей и умений. По вертикальной оси, программист может едва уметь писать на vbscript — или разрабатывать компиляторы для Intel или научный софт для авиакомпаний. По горизонтальной оси, он может быть экспертом в базах данных, улучшать производительность GPU, писать библиотеки параллельных вычислений, физические движки или драйвера для принтеров, заниматься обработкой изображений, генерацией 3D моделей или исследованиями в области искусственного интеллекта, использовать coffeescript, HTML5 и AJAX для разработки веб-приложений или nginx и PHP для разработки LAMP-стека, на котором веб-приложения работают… И это все — программисты.
Это безумие!
10. К работодателю через черный ход
Мелкие лайфхаки для всех, кто ищет себе хорошую работу в США в следующем видео:
Короче, рассказываю о том, как можно искать работу на конференции в Кремниевой долине, как работают компании, на что обращают внимание при поиске разработчика в стартап.
Иллюстрации: twitter.com, vk.com, explosm.net
*Мнение колумнистов может не совпадать с позицией редакции.
Релоцировались? Теперь вы можете комментировать без верификации аккаунта.