Русский
Русский
English
Статистика
Реклама

Мнение

Перевод Жизнь в 2030

21.08.2020 20:17:07 | Автор: admin

Француз Фабрис Гринда всегда любил рисковать он успешно вложился в сотни компаний: Alibaba, Airbnb, BlaBlaCar, Uber и даже русский аналог Booking сервис Oktogo. У него особое чутьё на тренды, на то, каким может быть будущее.


Месье Гринда не только инвестировал в чужие бизнесы, но и создавал свои. Например, онлайн-доска объявлений OLX, которой пользуются сотни миллионов человек, его детище.


Кроме того, иногда он уделяет время литературному творчеству и пишет довольно спорные, но любопытные эссе. О том, что есть и что будет. Ему интересно будущее и как инвестору, и как визионеру.


Несколько лет назад он дал интервью журналу Alliancy, обсуждая мир в 2030 году.



Журнал Alliancy: Какие серьезные изменения вы видите через 10 лет?


Fabrice: Интернет вещей, например, холодильники, заказывающие продукты, когда они заканчиваются, доставка дронами и тому подобное. Все это приближается. Кроме того, мне видно некоторые важные прорывы в пяти областях: автомобили, связь, медицина, образование и энергетика. Технологии существуют, будущее уже наступило, просто не везде равномерно. Для крупномасштабного развертывания нужно снизить затраты и упростить использование.


Автомобили станут общими. На сегодняшний день беспилотные автомобили уже проехали безаварийно миллионы миль. Но если обычный автомобиль в Штатах в среднем стоит менее 20.000 долларов, то система, позволяющая превратить его в автопилотируемый, стоит порядка 100.000. Если смотреть со стороны финансов общее применение все еще невозможно. Также отсутствует правовая база, так как нужно определиться с тем, кто будет нести ответственность в случае аварии.


А что насчет рентабельности?


Автомобили второй источник расходов домашнего бюджета, хотя порядка 95% времени они простаивают. Люди продолжают покупать автомобили, поскольку так получается дешевле, чем использовать Uber и водителя, кроме того автомобиль доступен в любое время, особенно в неплотно заселенных районах.


Но когда затраты на водителя исчезнут, когда автомобили станут автономными, основным расходом станет амортизация в течение нескольких лет. Общий автомобиль, используемый 90% времени, станет намного дешевле таким образом на всех уровнях владение автомобилем больше не будет иметь смысла. Предприятия будут покупать парки автомобилей, а затем предоставлять их другим предприятиям, которые будут заниматься их эксплуатацией, как Uber, с достаточно плотным графиком, так что автомобиль будет доступен через пару-тройку минут, в том числе и в менее плотно населенных районах. Это особенно сильно изменит общество, поскольку в США основной источник занятости вождение автомобиля. Освободится очень много рабочих рук, стоимость вождения снизится.


Случилась ли революция в области коммуникаций?


Нет. Самый распостраненный инструмент, без которого сложно представить жизнь, мобильный телефон, исчезнет полностью. В принципе мы уже добились значительных успехов в чтении мозга и находимся на той стадии, в которой 15 лет назад было распознавание голоса. Тогда для этих целей вам нужна была мощная специализированная карта и часы тренировок, чтобы ваш голос мог эффективно распознаваться. Сегодня, надевая себе на голову шлем с 128 электродами с такими же часами тренировок, можно научиться мысленному управлению курсором на экране, пилотированию самолета. В 2013 году даже была сделана связь мозг-мозг, кто-то, используя силу мысли, смог пошевелить рукой другого человека...


В 2030 мы будем работать где захотим, когда захотим и столько, сколько захотим.

Чего же мы ждем?


Вполне возможно, что через 10 лет у нас будет парочка прозрачных и невидимых электродов в мозгу, позволяющих нам использовать наши мысли для передачи инструкций миниатюрному компьютеру, чтобы он показал нам электронные письма, тексты с использованием лазеров на очках, которые отобразят их на сетчатке или с использованием умных контактных линз.


У нас появится своего рода улучшенная телепатия, мы будем обмениваться информацией мысленно: я думаю текст, отправляю его вам, вы читаете его на сетчатке глаз или на контактных линзах. Нам больше не будет нужно носимое устройство с мелким экраном и с постоянно наклоненной к нему головой, которое отвлекает нас и ограничивает поле зрения. Но и через 10 лет это будет только начало. Лазеры, умеющие отправлять изображения на сетчатку, существуют, но линзы все еще низкого качества. Чтение мыслей пока еще приблизительное и требует суперкомпьютера с 128 электродами. В 2030 году эквивалент такого суперкомпьютера будет стоить 50 долларов. На доработку достаточно малых и эффективных электродов, а также соответствующих программ, возможно потребуется 20-25 лет. Однако смартфоны исчезнут неизбежно.


А что с медициной?


Сегодня пять врачей могут поставить пять разных диагнозов одной и той же болезни, поскольку люди не настолько хороши в диагностике. Так, Watson, суперкомпьютер от IBM, лучше врачей определяет некоторые виды рака. В этом есть логика, поскольку он учитывает каждый микрон результатов МРТ или рентгеновского снимка, а врач смотрит не более пары минут. Через 5 лет диагностика достанется только компьютерам, через 10 мы получим универсальный диагностический аппарат для всех распространенных болезней, включая простуду, ВИЧ и прочих.


Примерно в это же время революция произойдет и в хирургии. Робот-доктор Da Vinci уже провел пять миллионов операций. Хирургия и далее будет становиться всё более роботизированной или автоматизированной, что позволит сократить разрыв производительности между хирургами. Впервые начнет снижаться стоимость лекарств. Кроме того вся бумажная работа и административная неэффективность уйдут после внедрения электронных медицинских карт. Через 10 лет мы получим диагностику с постоянной обратной связью о том, что нам стоит делать с точки зрения питания, лекарств, при все более эффективной хирургии и гораздо более низкой стоимости затрат на медицину.


Еще одна революция образование?


Если бы мы перенесли Сократа в наше время он бы ничего не понял, кроме способа образования наших детей: разные учителя разговаривают с классом от 15 до 35 учеников. Нет смысла продолжать обучать наших детей так, как это делалось 2500 лет назад, ведь у каждого ученика разные навыки и интересы. А теперь, когда мир меняется так быстро, подумайте, насколько это забавно, что образование ограничено по времени и прекращается после окончания школы или университета. Образование должно быть непрерывным процессом, происходящим на протяжении всей жизни, а также более эффективным.


N.B. от редактора: Представляю, как бы удивился Сократ, если бы увидел, как проходят наши интенсивы. Если офлайн-интенсивы до пандемии коронавируса ещё кое-как походили на классическое образование (лекционный конференц-зал, спикеры-учителя, студенты за столами, вместо глиняных дощечек или папируса ноутбуки и планшеты, вместо майевтики или сократовской иронии Докер или продвинутый курс по Kubernetes c практическими кейсами), которое особо не менялось в инструментах с античной эпохи, то лекции через Zoom, курилка и общение в Telegram, презентации и видео-записи занятий в личном кабинете Определённо, Сократ этого бы не понял. Так что будущее уже наступило а мы и не заметили. И пандемия коронавируса подтолкнула нас к изменениям.

Как это изменит наши возможности?


На таких сайтах, как к примеру Coursera, лучший профессор в своей отрасли предлагает онлайн-курсы для 300.000 студентов. Намного логичнее, чтобы лучший учитель обучал большое число учеников! За сдачу экзаменов платят только те, кто желает получить степень. Так система получается гораздо справедливее.


А что с начальной и средней школами?


Сейчас в некоторых школах проходят испытания автоматизированной системы обучения. Здесь учитель уже не говорящая машина, а тренер. Обучение проходит с помощью ПО, которое потом задает вопросы и может подстраиваться под учеников. Если ученик делает ошибки программа повторяет материал другими способами, и только после того, как ученик все понял переходит на следующий этап. Ученики одного и того же класса идут в собственном темпе. Это не конец школы, ведь помимо знаний надо научиться общаться и взаимодействовать, для этого нужно окружение других детей. Люди типичные социальные существа.


Что-то еще?


Наибольший прорыв будет в непрерывном образовании. Массово меняются требования, в продажах несколько лет назад важно было знать, как оптимизировать вашу видимость в поисковых системах (SEO). Сегодня нужно понимать оптимизацию магазина приложений (ASO). Как это знать? Пройти курсы на сайтах, к примеру Udemy, лидера в этой области. Они создаются пользователями, а затем доступны всем по цене от 1 до 10 долларов...


N.B. от редактора: Вот честно, лично я не уверен, что курсы, созданные пользователями, а не практиками, такая уж хорошая идея. Мир сейчас заполонили тревел- и бьюти-блогеры. Если дополнительно заполонят учителя-блогеры, то будет трудно найти по-настоящему полезный и профессиональный материал в куче контента. Я хорошо знаю, сколько труда десятков людей нужно, чтобы создать по-настоящему полезный курс по тому же мониторингу и логированию инфраструктуры в Kubernetes, основанный не на мануалах и статьях, а на практике и опробованных кейсах. Ну, и на встреченных граблях куда уж без них в работе и освоении нового инструментария.

Проще говоря мир работающих обязательно изменится?


Миллениалы (рожденные позже 2000 года) терпеть не могут работу с 9 до 18, работу на начальника, самого начальника. В настоящее время мы видим бурный рост предпринимательства в США, усиленный доступностью ряда сервисных приложений по запросу. Половина рабочих мест, созданных после кризиса 2008 года, это люди, работающие сами на себя, либо те, кто работают на Uber, Postmates (доставка еды на дом), Instacart (доставка еды от соседей).


Это персонифицированные услуги, доступные по запросу...


Услуги косметологов, маникюр, стрижки, перевозки. Все эти услуги были открыты заново с большей гибкостью. Также эти идеи верны и для услуг программирования, редактирования и дизайна. Работа становится все менее инкрементальной, для нее требуется меньше времени. Миллениалы работают день и ночь в течение первой недели, а затем всего пять часов на следующей. Деньги для них средство получения жизненного опыта. В 2030 они будут составлять половину трудоспособного населения.


Станем ли мы счастливее в 2030?


Не обязательно, поскольку люди быстро подстраиваются к изменениям в своих условиях, этот процесс называется гедонистическая адаптация. Однако мы останемся хозяевами своей судьбы. Будем работать столько, либо не более, чем мы захотим. В среднем люди будут иметь лучшее здоровье и образование. Стоимость большинства вещей будет ниже, что приведет к значительному улучшению качества жизни.


Значит не будет социального неравенства?


Идут разговоры о расширении неравенства, а в действительности происходит сближение социальных классов. В 1900 году богатые люди уходили в отпуск, но не бедные. Сегодня один летит на частном самолете, другой на EasyJet, но оба садятся в самолет и уходят в отпуск. 99% американских бедняков имеют воду и электричество, а 70% из них владеют автомобилем. Если смотреть на такие факторы, как младенческая смертность и ожидаемая продолжительность жизни неравенство сокращается.


А что насчет изменения климата и стоимости энергии, могут они повлиять на эти достижения?


Этот вопрос будет решен без регулирования и вмешательства государства. Мы собираемся перейти к безугольной экономике, но по чисто экономическим причинам. Один мегаватт солнечной энергии стоит уже меньше доллара, если сравнить с 100 долларами в 1975 году. Это получилось в результате улучшения производственных процессов и производительности. Также достигнуто равенство стоимости солнечной энергии в некоторых регионах, где создание электростанций дорого обходится. В 2025 году стоимость солнечного киловатта будет меньше, чем стоимость угольного киловатта без субсидий. Как только это произойдет, в процесс будут вложены десятки миллиардов долларов. В 2030 начнется ускоренное внедрение солнечной энергии. Стоимость мегаватта станет намного ниже, что в свою очередь снизит затраты на многие другие вещи и улучшит качество жизни. Я настроен весьма оптимистично.


Подробнее..

Приключение в один день или One Day Offer от Яндекса

30.05.2021 14:10:27 | Автор: admin

Вступление

Привет, Хабр. Недавно я получил оффер от Яндекса за один день и, не буду скрывать, я этому очень рад. Поэтому мне захотелось поделиться с сообществом своим опытом и мыслями относительно One Day Offer от Яндекса (в дальнейшем ОДО).

Начну с того, что название сия мероприятия вполне описывает его суть. За один день ты проходишь два собеседования и несколько финалов (о них поговорим позже) и в тот же день, если со всем справился, получаешь оффер. Звучит хорошо, но так ли оно на самом деле? Оказалось, что да, все происходит именно так. Никакого ожидания по несколько месяцев и никакой неопределенности по количеству интервью. Всё действительно происходит так быстро, и это, я считаю, очень круто.

Что это

One Day Offer - это относительно молодое мероприятие. Яндекс активно начал его проводить лишь с весны этого года, поэтому оно только набирает обороты, но уже понятно, что формат будет жить и процветать. ОДО проводится по одному из ключевых направлений: фронту, бэку, мобилкам или аналитике. Помимо основной цели - поиск новых кадров - ОДО также служит доказательством, что в Яндекс можно попасть всего за день.

Лично я участвовал в ОДО для мобильщиков, поэтому буду рассказывать про опыт участия именно с точки зрения мобильщика :)

Контест

На самом деле, чтобы попасть на ОДО, нужно для начала успешно пройти несложный контест. Времени на него дается предостаточно: с момента регистрации на ОДО до того дня, когда будут проводиться собеседования.

В моем случае контест состоял из двух задач: одна алгоритмическая и одна на платформу. По ощущениям, алгоритмическая задача была на уровне easy задач с литкода, так что с ней я справился примерно минут за 30. Правда потом потратил ещё 20 на попытку оптимизировать написанное, поскольку у задачи был follow up - написать решение, которое будет использовать константное количество памяти. Такое решение у меня написать не получилось, но это оказалось не критично. Перейдем к более интересному - задаче по платформе. Поскольку я Android разработчик, задание у меня было, что логично, по андроиду. Само по себе задание абсолютно не сложное, но очень интересное. Передо мной был код активити и нужно было перечислить все ошибки, допущенные в этих 30 строчках кода. Разбираться в коде я люблю, поэтому задание принесло мне сплошное удовольствие, и я сидел с ним все оставшееся время, дабы найти вообще все недочеты, которые там есть, и пояснить каждый. Не уверен, что нашел все, но, тем не менее, с заданием я справился и меня пригласили на ОДО.

Приветствие

Ни одно хорошее мероприятие не обходится без вступительного слова от людей, которые как-то с ним связаны. И ОДО не исключение.

На приветствии Дима Макаров (руководитель группы Android в Маркете) и Юра Кочарян (руководитель группы Android в Дзене) рассказали немного про Яндекс и провели для нас небольшую Q&A сессию. А ещё мы увидели вот такой вот интересный кадр

Нас заверили, что это чистая случайность, и я, пожалуй, оспаривать это не буду :)Нас заверили, что это чистая случайность, и я, пожалуй, оспаривать это не буду :)

После приветствия началось первое собеседование - платформа. И мы плавно переходим к нему.

Собеседование по платформе

Собеседование по платформе состояло только из теоретических вопросов. Причем их спектр был довольно широк. Приведу примерный список тем, по которым мне задавали вопросы:

  • Классы в Kotlin

  • Clean Architecture in Android

  • Способы хранения данных (простые и сложные вопросы)

  • Жизненный цикл View и его API

  • Intents

  • Приоритеты OOM Killer

  • Асинхронная работа в Android

  • Serializable vs Parcelable

  • Производительность базовых ViewGroup

  • MV* паттерны

  • RxJava

  • WorkManager и Services

Все вопросы были +- стандартные, и напрягся я только на вопросах по Rx и многопоточности, поскольку в этих темах я не очень хорошо разбираюсь. В общем, если знал - отвечал, если не знал - честно признавал это.

В целом собеседование получилось интересным. Особенно порадовало, что интервьювер общался на равных, благодаря чему складывалось впечатление, что я не прохожу собеседование, а веду диалог с коллегой. И это относится ко всем интервью ОДО, а не только к платформе, но об этом я ещё упомяну далее.

Собеседование по кодингу

Кодинг интервью началось у меня с приключений. Ссылка на зум не работала, поэтому пришлось подключаться через идентификатор конференции. Но и это получилось только со второго раза, потому что в первый раз я никого не слышал.

Наконец началось то, чего я, наверное, боялся больше всего: собеседование по кодингу. Все же слышали эти страшные истории про задачи на алгоритмы, оторванные от реальности, да? Так вот у меня их не было.

Вообще, тут стоит сделать небольшой оффтоп и сказать, что кодинг интервью зависит от того, куда и на какую должность ты идешь. Где-то алгоритмов больше, где-то меньше, где-то их вообще нет. Все зависит от специфики команды и задач, которые перед ней стоят. Это логично, но почему-то многие об этом забывают, и поэтому у нас появился устоявшийся стереотип о том, что на кодинге в Яндексе всегда спрашивают алгоритмы.

Вернемся к собеседованию. Поскольку меня собеседовал Дима Макаров из маркета, у меня, как я уже сказал, не было задач на алгоритмы. Но это не значит, что собеседование было легким. Оно было средней сложности. Тут опять сыграл недостаток знаний по Rx и потокам, и первые пару задач я худо-бедно решил с подсказками интервьюера. Но с последними двумя задачами - на понимание кода и на рефакторинг - я справился достаточно хорошо.

Этот этап ОДО также получился не очень сложным (а по сравнению с моими ожиданиями даже легким). На нем я даже узнал что-то новое во время обсуждений задач. Общение все также было приятным и достаточно не официальным. В общем, этот этап ОДО мне понравился даже больше, чем предыдущий.

Финалы

После небольшого ожидания, мне сообщили, что я успешно прошел оба собеседования, и можно назначать время финала. Финал - это общение с командой, в которой ты будешь работать в случае метча. В первой части финала ты рассказываешь о себе, своем опыте, интересах и т.п. После, интервьюер рассказывает про Яндекс, его плюшки и команду. Финал, так же как и предыдущие два собеседования, занимает час (хотя наверное можно уложиться и в меньшее время) и является, наверное, самой лайтовой частью ОДО. По сути это обычное общение. Вообще финалов может быть несколько, лично у меня могло бы быть до трех финалов включительно. То есть я мог поговорить с тремя из пяти (я могу что-то путать, и их могло быть четыре) команд, участвующих в ОДО. То есть у кандидата есть выбор из нескольких команд, и он может выбрать любую, которая больше понравится. Но, поскольку я шел целенаправленно в маркет, у меня был только один финал.

И уже через полтора часа после завершения финала я получил заветный оффер от Яндекса.

Заключение

Вот, как-то так и прошел мой One Day Offer. Также я нигде не упомянул, что на протяжении всего мероприятия на связи были рекрутеры Яндекса, которые сообщали фидбэк по собеседованиям и расписание, за что им отдельное спасибо. Ещё одним приятным бонусом стал промокод на Яндекс Еду, чтобы "ожидание обратной связи было приятным". В общем, мероприятие крутое, и я всем советую в нем участвовать. Надеюсь мой опыт и впечатления от ОДО будут полезны будущим кандидатам и помогут организаторам сделать это мероприятие ещё лучше.

А ещё я не могу не воспользоваться случаем и не поделиться своим телеграмм каналом, на котором я буду рассказывать про свой путь в IT и делиться разными материалами. Мне только 17, и я лишь в начале своей карьеры, но уже получил оффер от Яндекса на позицию мидла. Поэтому, думаю, мой канал может быть интересен как начинающим, так и опытным разработчикам. В общем, если я вас заинтересовал, жду на канале.

Подробнее..

Перевод Взгляд на Tailwind CSS

23.05.2021 18:15:00 | Автор: admin

В этом году я видел много шумихи вокруг популярного фреймворка CSS, Tailwind CSS. И подумал, что поделюсь некоторыми мыслями и опасениями по поводу этого фреймворка UI. Я приобрёл небольшой опыт написания CSS с подходом utility-first (полезность прежде всего), когда начал свою карьеру в разработке интерфейсов, несколько лет назад.

К старту курса о Frontend-разработке делимся статьёй, автор которой решил, возможно, несколько изменить то, как воспринимается Tailwind, рассказать как о положительных, так и об отрицательных сторонах фреймворка, особенно в контексте работы с мультиязычными сайтами.


Вещи, которые я считаю интересными

Вам не нужно закрывать файл с HTML

Основной заголовок на официальном сайте Tailwind гласит:

Быстрое создание современных веб-сайтов, даже не покидая HTML.

Я согласен, что писать код в одном месте может быть быстрее, чем переключаться между разными файлами. Однако оставить в стороне свой HTML для меня не проблема. Это может помочь переключить контекст между разметкой и стилями. Разделение файлов HTML и CSS может помочь мне лучше сосредоточиться на выполнении поставленной задачи. Однако, когда разметка и стили смешиваются, когда вы работаете над сложным, многоязычным, отзывчивым сайтом и пользовательским интерфейсом с темами, всё может пойти наперекосяк.

Когда я работаю с Tailwind, это похоже на то, как если бы я держал две ручки: одну для набросков, а другую для раскрашивания. Одновременное написание разметки и CSS напоминает мне эти две ручки.

Tailwind сильно отличается тем, что у цветной ручки есть ограничения или сдерживающие факторы. Другими словами, можно раскрашивать только предустановленными цветами. По мне так лучше сосредоточиться на написании доступной, семантической разметки, а затем отдельно работать со стилизацией.

Проектные ограничения

В дизайн-системе мы обычно определяем цвет, интервал, размер и другие свойства. Работа разработчика сильно упрощается, когда есть пределы тому, что он может сделать. Tailwind накладывает хорошие ограничения. Идея определения пользовательских конфигурационных файлов очень полезна.

Именование классов CSS

О названиях классов CSS думать не нужно и это может ускорить реализацию макетов в вебе. Я нахожу это полезным в случае, когда ваш босс пишет вам, что есть срочный лендинг, который должен быть сделан сегодня, и у вас только 3 часа, чтобы написать его. Tailwind может помочь быстро достичь результата.

Однако, если вы придерживаетесь разделения разметки и стилей, разработка займёт гораздо больше времени. Ещё одно полезное применение Tailwind это соревнование или хакатон. Самое главное на таких событиях сделать работу и что-то получить за неё. Никому не будет дела до того, как вы написали CSS, верно?

То, с чем я не согласен

Tailwind не фреймворк utility-first

Подзаголовок на их веб-сайте сообщает, что CSS Tailwind:

Прежде всего утилитарный CSS-фреймворк, содержит такие классы, как...

Из увиденного я сделал вывод, что Tailwind это только утилитарный (utility-only) фреймворк. Может быть, название "только утилитарный" повлияет на то, как его воспримут новички? Я редко вижу какой-то сайт, использующий Tailwind и применяющий концепцию utility-first.

Длинный список классов может запутать

Обратите внимание на то, что я знаю о методе @apply. Рассмотрим пример из документации Tailwind:

<input  class="block appearance-none bg-white placeholder-gray-600 border border-indigo-200 rounded w-full py-3 px-4 text-gray-700 leading-5 focus:outline-none focus:border-indigo-400 focus:placeholder-gray-400 focus:ring-2 focus:ring-indigo-200"  placeholder="jane@example.com"/>

Это поле ввода с 17 классами CSS. Что проще: читать классы один за одним горизонтально или сканировать их сверху вниз? Вот так поле будет выглядеть стиль этого поля в файле CSS:

.c-input {  display: block;  appearance: none;  background-color: #fff;  @include placeholder(grey);  border: 1px solid rgba(199, 210, 254, var(--tw-border-opacity));  border-radius: 0.25rem;  padding: 0.75rem 1rem;  line-height: 1.25rem;  color: rgba(55, 65, 81, var(--tw-text-opacity));}.c-input:focus {  /* Focus styles.. */}

Я могу прочитать и понять, какие стили содержит это поле ввода, гораздо быстрее, чем в ситуации, когда сканирую HTML. Возможно, существуют плагины для редакторов кода, которые автоматически форматируют HTML-классы так, чтобы каждый из них располагался отдельно [на отдельной строке], но в DevTools браузера этого нет.

Я знаю о методе @apply, но каждый раз, когда я думаю о нём, я прихожу к выводу, что он противоречит основной концепции Tailwind. Вот тот же пример (поле ввода):

.c-input {  @apply block appearance-none bg-white placeholder-gray-600 border border-indigo-200 rounded w-full py-3 px-4 text-gray-700 leading-5 focus:outline-none focus:border-indigo-400 focus:placeholder-gray-400 focus:ring-2 focus:ring-indigo-200;}

Посмотрите на длину списка классов. Если в Tailwind в приоритете полезность, то почему в официальной документации Tailwind или в Tailwind UI мы редко видим @apply? Опять же, я вижу Tailwind как только утилитарный фреймворк.

Всегда нужно давать имена элементам

В дизайн-системе трудно обсуждать конкретный компонент, не договорившись о его названии. Причина вот в чём: вы не отправите своему коллеге сообщение вроде такого:

Привет, есть новости о bg-white w-full py-3 px-4?

На самом деле фраза будет такой:

Есть новости о дизайне поляризованной карты?

В конце дня вам нужно будет сесть и подумать об уникальном, выразительном названии для каждого компонента проекта, который вы пытаетесь разработать. Это применимо, конечно, к ситуации, когда вы хотите масштабировать и поддерживать проект в течение длительного времени. Некоторое время назад я шутил с другом вот о чём: что, если мы отложим традиционное именование в сторону и будем называть себя не традиционными именами, а как в коде ниже:

<person class="hair-brown length-[175] face-rounded"></person>

Код выше бессмыслица. Гораздо лучше такой код:

<person class="ahmad"></person>

Некоторые классы запутывают

Когда я только начинал использовать Tailwind, мне нужно было добавить класс, который отвечает за свойство align-items: center. Моей первой мыслью было воспользоваться align-center, но это не сработало.

Я посмотрел в документацию и впал в замешательство. Класс items-center добавит CSS-свойство align-items: center, где класс align-middle будет содержать vertical-align: middle. Чтобы запомнить их, требуется немного мышечной памяти.

Опытные веб-разработчики могут легко адаптироваться к этому, и это не будет для них большой проблемой. Но самое интересное для новичка в CSS. Изучение Tailwind без уверенного знания CSS может привести к недопониманию в будущем. Например, если разработчик начал свою карьеру только с Tailwind, то, когда его попросят написать CSS с нуля, он не сможет этого сделать. Я не говорю, что это невозможно, но это потребует времени и усилий.

Tailwind затрудняет настройку дизайна в браузере

Я занимаюсь как дизайном, так и frontend-разработкой, поэтому редактирование в браузере с помощью DevTools для меня крайне важно. С Tailwind работа в DevTools может стать сложнее. Скажем, например, я хочу изменить отступы для компонента. Когда я изменяю значение класса py-3, это влияет на каждый использующий его элемент страницы.

Единственный способ убрать его открыть меню .cls в DevTools, после чего класс можно будет переключить. Однако это не решает проблему. Что я могу сделать в этом случае? Добавить встроенный стиль через DevTools, а это мне не нравится. Проблема решится, если просто давать элементам названия. Добавлю к этому факт: общий размер файла полной сборки Tailwind составляет 12 МБ. Редактирование CSS в DevTools будет очень медленным.

Это означает, что разработка в браузере неэффективна. Недавно команда Tailwind выпустила компилятор JIT (just in time), удаляющий неиспользуемый CSS. Это мешает всей идее дизайна в браузере.

Я набрал back и получил длинный список всех доступных классов CSS. При JIT-компиляции таких подсказок не будет.

Tailwind неудобен для многоязычных сайтов

Чтобы вы больше понимали, добавлю: я работаю над веб-сайтами, которые должны работать как на английском (с направлением слева направо, LTR), так и на арабском (с направлением справа налево, RTL). Рассмотрим такой код:

/* LTR: left to right */.c-input {  padding-left: 2rem;}

В отдельном файле CSS для RTL стиль будет выглядеть так:

/* RTL: Right to left */.c-input {  padding-left: 0;  padding-right: 2rem;}

В приведённом выше примере padding следует развернуть в зависимости от направления страницы (слева направо или справа налево). Для этого уже есть плагины, но они решают проблему только с внешней стороны. Первый найденный мной делает следующее:

html[dir="rtl"] .ml-2 {   margin-right: 1rem; }

Для меня это не очень хорошее решение. Второй найденный плагин немного отличался от первого:

[dir="rtl"] .rtl\:text-2xl {  font-size: 1.5rem;  line-height: 2rem;}

Такой код может очень быстро выйти из-под контроля. Исследуя один веб-сайт, я заметил более 30 классов CSS.

Это пример того, как Taillwind может выйти из-под контроля, особенно у новичков. Тридцать классов для компонента кнопки это слишком много. В таком случае я лучше поработаю со встроенными (inline) стилями.

Чтобы помочь в создании многоязычного веб-сайта, сейчас я использую Bi-App Sass. Вот пример:

.elem {  display: flex;  @include margin-left(10px);  @include border-right(2px solid #000);}

Код скомпилируется в два разных файла CSS. Файл ltr:

/* LTR Styles */.elem {  display: flex;  margin-left: 10px;  border-right: 2px solid #000;}

Подробнее о стилизации RTL читайте в этом руководстве от вашего покорного слуги.

Я не всегда работаю с шаблонами

Одна из проблем Tailwind заключается в том, что, если у вас есть список карточек и вы хотите изменить определённый набор классов, вам придётся вручную просматривать их в редакторе кода. Это не будет проблемой, если вы используете в своём продукте частичные файлы CSS (partial) или компоненты. Вы можете один раз написать HTML, и любое изменение будет отражено везде, где используется этот компонент.

Это не всегда так. Я работаю над простыми страницами index.html, где усилия в разделении на части или компоненты себя не оправдывают. В этом случае работа с Tailwind и редактирование CSS могут стать процессом, чреватым ошибками, поскольку вы даже не можете использовать функцию "Найти и заменить": она может пропустить некоторые другие элементы на странице.

Tailwind делает веб-сайты похожими

Команда Tailwind создала набор продуманных компонентов под названием Tailwind UI, которые легко настраиваются и готовы к использованию в вашем проекте.

Внешний вид и функциональность компонентов приятные, и мне это нравится. Хотя есть проблемы, если сайт использует Tailwind UI, есть большая вероятность, что я предскажу использовать его.

Обычно, когда вы работа Tailwind UI, это означает, что у вас нет времени на создание индивидуального дизайна, поэтому вам нужно что-то, что можно быстро запустить, верно? И это хороший вариант применения, за исключением одной детали: применение Tailwind приведёт к тому, что многие сайты будут выглядеть похожими друг на друга, подобно тому, что было много лет назад с Bootstrap.

Некоторые свойства или особенности CSS использовать невозможно

К примеру, не включено свойство clip-path, и я полностью понимаю причину. Предположим, мы хотим включить его как компонент. Где мы должны написать код? Здесь:

<article class="block appearance-none bg-white placeholder-gray-600 border border-indigo-200 rounded w-full py-3></article>

Либо примерно так включить его в конфигурацию Tailwind:

// tailwind.config.jsmodule.exports = {  theme: {    clipPath: {      // Configure your clip-path values here    }  }};

Или же сделать следующее:

.card {  @apply block appearance-none bg-white placeholder-gray-600 border border-indigo-200 rounded w-full py-3;  clip-path: inset(20px 20px 50px 20px);}

Заключительные мысли

Может ли Tailwind оборачивать CSS в свои классы во время компиляции?

Представьте себе, что Tailwind появляется только во время компиляции. То есть вы пишете обычный CSS с именованием и всё такое, а умный компилятор преобразует ваш CSS в утилитарные классы. Это было бы воплощением мечты.

Утилитарные классы мощный инструмент, если не перестараться

В своих текущих проектах я использую комбинацию утилитарных классов и обычного CSS. Для меня это идеальное сочетание. Я не теряю возможности утилитарных классов и в то же время использую их, не загромождая HTML.

Фронтенд довольно часто выбирают как точку входа в IT. Но фронтенд это не только внешнее оформление сайтов, но и работа с базами данных, а также внешними API. Фронтенд требует системной, комплексной подготовки. Если вам или вашим знакомым интересно это направление разработки можете присмотреться к нашему курсу о Frontend-разработке, где мы касаемся не только вышеупомянутых тем, но и разработки отзывчивых сайтов при помощи flexbox, работаем с методологией БЭМ и затрагиваем другие аспекты фронтенда.

Узнайте, как прокачаться и в других специальностях или освоить их с нуля:

Другие профессии и курсы
Подробнее..

Суровая правда о разработчиках и разработке

10.02.2021 16:11:31 | Автор: admin

Давным-давно, в одной далёкой галактике появились персональные компьютеры и люди всех возрастов и профессий, у кого был доступ к этому чуду инженерной мысли, стали придумывать и писать программы, как для работы, так и просто, забавы ради. Несмотря на то, что вычислительная техника уже существовала к тому моменту и университеты выпускали юнцов с профильной специализацией, профессия разработчика не была распространённой и касалась в основном научно-исследовательских лабораторий - ребят в белых халатах. Персональные компьютеры сдвинули эту ситуацию с мертвой точки: у небольших компаний появилась возможность упростить свою ежедневную деятельность, а дома ПК можно было использовать даже для игр!

Огромных зарплат в те времена не было, компании по разработке ПО создавались романтиками в съемных комнатушках-офисах, в которых часто приходилось и ночевать. Кто-то не выдерживал и сдавался, кто-то создавал шедевры и богател, но в те времена никто не говорил, что люди получают зарплату просто так. Те времена подарили нам кучу программ, часть из которых остаются самыми популярными в своей сфере и по сей день (Например, MS Excel. Страшно думать, но до сих пор большинство инвестиционных банкиров используют для своих моделей именно MS Excel). Те времена подарили нам таких людей как Питер Нортон и Андерс Хейлсберг или Джон Кармак с Сидом Майером, если игры вам ближе.


В конце 90х, с повсеместным развитием интернета, стали проявляться первые тревожные звоночки. Зарплаты разработчиков стали расти вместе с акциями доткомов, этот пузырь стал притягивать к себе любых людей, способных написать хоть какой-то код. Вместо людей, прекрасно знающих свою область стали появляться случайные люди, которые хоть как-то справлялись с поставленными задачами. Единственным плюсом, наверное, был тот факт, что пока еще эти ребята не диктовали бизнесу, как он должен работать.

Доткомы благополучно умерли и лет на десять чума современной разработки исчезла, чтобы вернуться в начале десятых годов 21 века с новой силой. Укоренившийся в жизни интернет привел к тому, что любой конторке больше пяти человек стал требоваться сайт (а лучше портал) и потребность в разработчиках (а, следовательно, и зарплаты) стала расти. В России за пять лет зарплаты выросли с 200 долларов до тысячи и десятки тысяч молодых специалистов принялись штурмовать новые горизонты.

Команды росли, сложность решений росла, люди, основавшие бизнес, постепенно стали отходить от дел и перестали контролировать какие-либо процессы разработки, в результате чего разработка фактически превратилась в вещь в себе. Отдельную отрицательную роль в этом процессе сыграли гиганты IT рынка типа Гугла, который возвел практику работы на корзину в ранг нормы, паразитируя на традиционном бизнесе и вливая кучу денег в решения, не имеющие какого-либо смысла. Люди, принимающие решения по ИТ, стали везде пихать опыт FAANG всюду и везде, давя авторитетом Что вы будете спорить с компаниями, зарабатывающими сотни миллиардов?. Стоимость разработки продолжала расти, хотя никакого прорыва в технологиях с начала двухтысячных не произошло.

Почему растет стоимость разработки? Ответ, на самом деле, тут прост и банален. Бизнес слабо понимает, что происходит в разработке, а разработка на самом деле работает сама на себя, делая то, что нравится, а не то, что надо, попутно внедряя в процесс кучу лишних людей. Разработчикам нравятся новые технологии, и они пытаются впихнуть их везде, где им дадут. Например, в моей текущей компании на хайпе стали внедрять BigData обосновывая это возможностью тонкой настройки бизнеса. Знаете, к чему это привело? Сотни миллионов денег были потрачены на то, чтобы сказать, что товары, которые покупают на точке в дорогом ТК в центре отличаются от товаров, покупаемых на окраине рядом с ЖД станцией. Серьезно? Вы потратили такой бюджет на то, чтобы найти факты, которые очевидны любому, кто занимался ритейлом? Другое прорывное решение касалось в определении людей, кто часто бывает рядом и предложении им семейных контрактов. О да, тут точно нужна BigData, без нее никак. Отдельная команда целый год пилила очень нужный в 2018 году блокчейн для голосовалок. Никто понятия не имеет, как его можно использовать в текущем бизнесе, но раз деньги выделяют, то почему бы и нет? Мы же не можем отставать по инновациям от Сбера? А Сбер не может отставать от Гугла?

Отдельно упоминания, безусловно, стоят микросервисы и контейнеры, которые пихают везде и вся. Попробуйте в 2021 году пойти на собеседование и сказать, что вы не понимаете, зачем нужны микросервисы. Вас поднимут на смех! Скажут: А как же хайлоад?, А как же независимые команды?, А как же отдельные стэки?.

Ты пытаешься выяснить, что же за хайлоад. На проверку оказывается, что там 200 запросов в секунду в пике. Ребята, Asp.Net Core + MVC + EF + PG держит 185 тысяч запросов в секунду single-query. Какой у вас хайлоад? И да, все еще забывают, что количество запросов к нагрузке также имеют очень маленькое отношение. В случае того же Твитера нет никаких бизнес-критичных запросов, мы можем ставить сотни одинаковых инстансов и проксировать запросы как душе угодно, никто не пострадает. Это вам даже не Букинг какой-нибудь, где на последний номер может быть несколько желающих.

Другой веселый юмор это независимые команды. Сидят, значит двадцать человек. И они никак не могут поделить обязанности, чтобы не мешать друг-другу. Тут значит, они начинают пилить 4 микросервиса по 5 человек в команде и волшебным образом сразу проблемы все решаются. Да нет же, проблемы не решатся. Их станет в разы больше. Вот тут хорошо написано. Вам будет сложнее выделять домены, тестировать, деплоить. Вам даже просто понадобиться куча дополнительных людей высокой квалификации, начиная от архитектора, кончая тестировщиками с девопсами.

Отдельная песня это возможность команде самой определять стэк, на которой ей удобно работать. Ну вы знаете, тот знаменитый подход, который приводит к командам на Java, Go, C++, Rust и NodeJS на одном бизнес-проекте. Причем вместе с несколькими SQL и NoSQL одновременно. Так ведь удобно потом нанимать разработчиков на каждый из стэков и поддерживать кодовую базу в актуальном состоянии. Так удобно следить за безопасностью сотен пакетов на каждый из фреймвороков. Так приятно, когда один и тот же код для интеграций с системами аутентификации или мониторинга повторяется на каждом фреймворке заново. Так удобно иметь отдельные конвейеры CI/CD и команду поддержки под каждый стэк. Нет, если вы Гугл и у вас есть десятки тысяч инженеров хорошей квалификации, которым по факту нечего делать, то подход имеет право на существование. Но если вы не Гугл, то зачем повторять худшие практики?

Ну и вишенка на торте это лишние люди в конвейере производства программного обеспечения. Да, вот эти ребята, типа скрам мастера или эджайл коуча. Как-же без них удавалось спутники запускать и ММОРПГ создавать? Современные команды ведь настолько профессиональны и заточены на результат что никак не могут самостоятельно оценить и распределить таски, им обязательно нужны пара нянек.

Я сам получаю деньги за то, что пишу код с 2006 года, в этом году будет 15 лет юбилея. И мне очень горько понимать, что моя любимая отрасль, которая подарила множество прекрасных продуктов, технологий или игр превратилась в огромного паразита, который воспроизводит сам себя и пытается высосать все соки. Сложно сказать, кто в этом виноват и когда свернули не туда. Факт состоит в том, что современное IT скорее тянет на дно бизнес, чем помогает ему развиваться. Все современные IT гиганты делали свое имя много лет назад при помощи других людей. Да, современный бизнес невозможен без IT. Но все забывают, что IT это прежде всего поддерживающее звено, а не основа мироздания. Какими бы не были прорывные технологии, условный Нетфликс все-таки будет оцениваться качеством контента.

Что делать?

Хотелось бы прояснить, почему вообще у меня пригорает на тему ситуации в IT. Как-то сложилось, что за свою жизнь я был активным пользователем IT продуктов. И уже не первый год, как я стал замечать, что качество продуктов, падает год к году. Яснее всего это видно, конечно же, в игрострое. Все идеи, которые успешно доят до сих пор появились лет 20-30 назад. MVP сего парада стал безусловно Warcraft 3: Reforged и Star Citizen. Однако нельзя сказать, что и в других отраслях таких проблем нет. Качество поиска Гугла стабильно падает. Фейсбук редизайнит так, что лучше бы вообще не трогал. И все это при том, что разработчиков в штате компаний все больше и больше.

В качестве решения накопленных проблем мне лично видятся следующие меры:

  • Переход от экстенсивного развития к интенсивному: пересмотр бизнес-процессов в сторону упрощения, снижение количества регламентов;

  • Упрощение процесса разработки за счет более простых и эффективных бизнес процессов и прозрачной системы принятия решений;

  • Использование в рамках компании стандартных стеков технологий и пакетов;

  • Формирование центров компетенций разработки для поддержания актуальности стэков технологий, формирования стандартных шаблонов проектов компании и архитектур;

  • Подбор оптимальной архитектуры под бизнес требования;

  • Сокращение time-to-market за счет активного переиспользования кодовой базы, шаблонов и простой архитектуры;

  • Сокращение людей не увеличивающих ценность продуктов, таких как скрам мастер, эджайл коуч и прочих.

Если все это не сделать в ближайшее время и не повысить эффективность разработки, то есть высокая вероятность, что IT потянет на дно компании и нас будет ждать второй пузырь доткомов.

А что Вы думаете о текущем этапе развития IT. Какие проблемы видите лично Вы, насколько они кажутся серьезными и как их лучше решать?

Подробнее..

Из песочницы Остановите Total Commander! или главная проблема свободного ПО

19.08.2020 16:20:48 | Автор: admin

Сегодня мы попробуем разобраться, почему Open Source приложениями никто не хочет пользоваться. Статья получилась довольно длинной, но не пугайтесь, будет интересно.


Поехали!


Предисловие. Почему я выбираю свободное ПО и какое право я имею его критиковать?


Я уже довольно долго наблюдаю за развитием свободного ПО, сам являюсь его сторонником и активным пользователем. СПО я заинтересовался примерно полтора года назад. Уже не помню что конкретно, очередной ли людоедский закон, крупная утечка данных или попавшаяся на глаза статья заставила меня задуматься о своей приватности, но с тех пор я начал поиск альтернатив проприетарному ПО и сервисам крупных корпораций, которыми в тот момент пользовался.


Критерий был простой: разработчик должен уважать моё право на частную жизнь. Впрочем, после историй, подобных сливу Сноудена, я не готов был верить компаниям на слово, поэтому обратился к FOSS.


Код открыт всё видно. Телеметрия и мутная активность не пройдет незамеченной. Кроме того, основной целью сбора данных всё-таки является заработок. СПО разрабатывается энтузиастами или НКО, принадлежит сообществу и заработать своим создателям не пытается. Ну и приятные бонусы: можно делать форки, участвовать в разработке, ничего не платить и прочее. В общем, с тех пор я действительно полюбил FOSS и перепробовал огромное количество решений, многими пользуюсь и сейчас, и потому считаю, что имею полное право хвалить и критиковать продукты, которыми пользовался сам, что и буду делать в сегодняшней статье.


Не подумайте, что это хейт. Я все ещё фанат СПО и считаю его нашим будущим, тем, что спасет мир от зверства государств и IT монополий. Я сам периодически помогаю разработчикам, как могу: открываю issues, рапортую о багах и сбоях, перевожу интерфейсы. Я пишу эту статью как раз потому, что желаю СПО развития и процветания и хочу ему в этом помочь.


Ну и дисклеймер: Все, что я пишу в этой статье моё личное мнение, я буду рад конструктивной дискуссии в комментариях. Довольно болтать, перейдем к основной теме этой статьи.


Причем тут Total Commander?


Думаю, все знают примеры продуктов, которые устроены или выглядят настолько странно и отталкивающе, что, кажется, ими невозможно пользоватьсявообще. И каждый может вспомнить своего знакомого/коллегу/преподавателя, который чем-то подобным пользуется и, что самое главное, искренне убеждён: нет ничего удобнее.


Каждый вспомнил что-то свое: кто-то VIM, кто-то 7-Zip, а кто-то, как я, Total Commander.


image

Но парадокс при этом в том, что зачастую эти программы хоть и сложны, но действительно здорово справляются со своей задачей, однако требуют много сил, времени и нервов чтобы разобраться с ними. Делает ли это их плохими? Нет. Есть своя ниша и для таких продуктов, они часто пользуются спросом у профессионалов и опытных пользователей, но с них не начинают к ним приходят со временем.


Никто не хотел бы писать свой первый "Hello world" в VIM'е. Никто не хотел бы, чтобы на его первом ПК стоял CLI Arch Linux. Это слишком сложно, непонятно, отталкивающе для новичка. Должна быть простая, приятная глазу, интуитивно понятная и дружелюбная альтернатива. Что-то, с чего можно начать, и только потом, если захочется, переходить к чему-то более сложному.


Так в чем же проблема СПО? А в том, что среди всего многообразия свободных программ красивых, дружелюбных и интуитивно понятных единицы. И это огромная проблема для всего FOSS движения.


Порог входа настолько высок, а UI/UX настолько уступает проприетарному ПО, что новых пользователей привлечь никак, кроме как запугиванием, невозможно.


Я и сам заинтересовался этой темой только потому, что переживал за приватность своих данных.


На самом деле, вы и сами можете взять телефон, поставить на него F-Droid и поустанавливать оттуда разные приложения (мы будем рассматривать только мобильные приложения, где удобный интерфейс особенно важен ввиду отсутствия мышки и характера использования устройства "на ходу"). Вы быстро поймёте, что дизайн у абсолютного большинства приложений, скажем так, сугубо утилитарный, лишён всяких украшательств и, зачастую, довольно неудобный, но я сделаю это за вас.


Давайте рассмотрим примеры, и вы сами в этом убедитесь


Сейчас я буду сравнивать интерфейсы популярных проприетарных программ и наиболее достойных свободных альтернатив. Альтернативы буду брать с сайта alternativeto.net. Всеми этими приложениями я пользуюсь уже довольно длительное время.


1. Google Play VS F-Droid


F-Droid это магазин приложений, такой же как Google Play, однако там распространяются исключительно приложения с открытым исходным кодом. Приложения также проходят модерацию и "проверку на открытость". Так, например, клиент для YouTube может получить пометку "Популяризирует несвободные сервисы". Звучит здорово, давайте посмотрим, как это выглядит.


Начнём сравнение со стартовой страницы:


image

В Google Play, едва зайдя в приложение, мы видим игры. Вверху и внизу мы видим кнопки филтров и категорий, строку поиска. Довольно удобно. Все иконки оформлены в едином стиле (прямоугольник со скруглёнными углами). Под каждым приложением сразу виден его рейтинг. К дизайну у меня вопросов нет.


Посмотрим теперь на домашнюю страницу F-Droid:



Мы видим множество плиток разного размера и формы с иконками приложений, их названиями и кратким описанием. Внизу мы видим кнопки вкладок и плавающую иконку поиска (который, кстати, работает так плохо, что вы можете не найти там приложение, даже если наберете его название буква-в-букву, не говоря уже о том, чтобы, как в


Google Play, набрать "редактор фотографий" и увидеть в выдаче подходящие варианты).


Сразу возникает множество вопросов. Почему плитки разных размеров? Почему все иконки разной формы? Почему какие-то иконки растянуты и потеряли четкость? Что значит "Последние"? Они недавно обновились? Разработку сворачивают и это их последний релиз? Их последними добавили на площадку? Ничего не понятно. Кстати, никаких анимаций, в отличие от Google Play, тут нет, все выглядит очень дергано и топорно. Кроме того, прежде чем сделать этот скриншот, мне пришлось подождать, пока иконки прогрузятся практически 10 секунд При скорости соединения в 90 мбит/с! Проекту 10 лет, с финансированием ему повезло больше, чем многим другим, ну почему всё так плохо?


Тут кто-то меня перебьёт и скажет: "Какие анимации? Работает и слава богу. Какой дизайн? Ну потерпи ты 10 секунд, пока загрузится. Тебе шашечки или ехать надо?"


В этом и есть проблема. Всем кажется, что дизайн и удовольствие от пользования продуктом излишества, на которые нет времени. Я напомню: F-Droid существует уже 10 лет, а времени все нет. Нет не времени, а понимания. Эту проблему я и пытаюсь поднять. О каком развитии Open Source можно говорить, если ворота в его мир выглядят так?


Продолжим наше сравнение. Посмотрим на страницу приложения в обоих магазинах:


image

В Google Play все четко, понятно и красиво. Вижу скриншоты, видео-презентацию, рейтинг, количество загрузок. Ниже описание, теги и категории, отзывы пользователей, похожие приложения. Вопросов никаких, все сделано на уровне.


Теперь F-Droid:


image

Четверть экрана занимает шапка. Хочу заметить, что я видел ее заполненной от силы 3 раза, чаще всего там просто ничего нет. Четверть экрана на выброс. Ниже у нас Не угадали! Changelog! Зачем он мне? Я еще никогда не устанавливал это приложение, я зашёл сюда прочитать про него и решить, нужно ли оно мне. Зачем мне знать, какие баги вы недавно исправили? Ниже мы видим скриншоты. Тут у меня много претензий. Не к этому приложению в частности, а к F-Droid в целом. Разработчики магазина добавили поля для описания и скриншотов, шапки, но не сделали их заполнение обязательным. Множество девелоперов оставляет их пустыми. Что еще страннее, я регулярно нахожу в F-Droid приложения, у которых есть скриншоты, но сделаны они были На Android 4.4 KitKat! Помните такой? Интерфейс на фото давным-давно был изменен, уже годы приложение выглядит по другому. При этом обновления выходят стабильно, там пишут изменения, но никто и не думает обновлять скриншоты. У меня это не укладывается в голове. Кстати, скриншоты, по доброй традиции, грузятся 10 секунд. Оценки или счетчик скачиваний отсутствуют в принципе. Я просто не знаю, как я должен судить о приложении до его загрузки.


2. Google Maps VS OsmAnd~


Представим, что вы ищете открытую и свободную альтернативу Google Maps. На ум, естественно, приходит Open Street Map (OSM), однако OSM это только сама карта. Для мобильного телефона нужно еще приложение-просмотрщик. Наиболее популярным является приложение OsmAnd, расширенную версию которого можно скачать в F-Droid. Давайте сравним его с популярнейшим Google Maps.


Попробуем выполнить поиск "Москва" в Google Maps:


image

Через долю секунды мы увидим Москву на карте, краткую справку о месте, фотографии, отзывы, и так далее. Приложение работает быстро и отзывчиво, не тормозит и не дергается, все изменения на экране сопровождаются приятными и плавными анимациями. Сам дизайн карты выглядит очень удобным: карта не перегружена деталями и информацией, а бледная цветовая схема позволяет сконцентрировать внимание в нужном месте.


Посмотрим на OsmAnd.


image

Цветовая схема более пестрая, чем в GMaps, но пользоваться этим можно. Шрифты легко читаются, карта как карта. Доп. информацией о месте приложение нас не балует, но бог с ним. В чем же проблема? А проблема в том, что приложение не умеет загружать карты в режиме реального времени Совсем! Когда я набрал в поиске "Москва", мне было предложено загрузить карту региона (90 МБ) с не самых быстрых серверов OSM. На это ушло в больше минуты моего времени. А жизнь ведь коротка Помимо этого, приложение работает ну очень так себе. Тормозит, дергается, подвисает, ни о какой плавности прокрутки карты речи не идет. Не подумайте, это работает, но плохо. Да, 5-7 лет назад, не имея возможности с чем-либо сравнить, я бы сказал, что это отличное приложение, но в 2020 году, зная, как могут и должны выглядеть качественные карты для Android, пользоваться OsmAnd совсем не хочется.


Не в пользу приложения играет и сам Open Street Map. К сожалению, проект, похоже, переживает не лучшие времена. Карты обновляются очень редко и выборочно, информация, даже в крупных городах, серьезно устарела: иногда на OSM не найти целых улиц и дорог, построенных за последние 5 лет. Большая часть заведений возле моего дома, отмеченных на карте, также уже давно не работают, а новых на картах нет. Довольно грустно, ведь это практически единственный проект открытых карт такого масштаба, и другого у нас просто нет.


3. Mi-Fit VS Gadget Bridge


Gadget Bridge это аналог проприетарным приложениям для работы с фитнес браслетами и умными часами (в нашем примере Mi-fit от Xiaomi). Без облаков, синхронизаций и отправки данных куда-либо. Идея крутая, посмотрим на реализацию.


Начнём с домашнего экрана:


image

В Mi-fit нас встречает экран со всеми основными показателями: сон, шаги, последняя тренировка, вес (для тех, кто пользуется умными весами). Отсюда же можно начать запись тренировки. Дизайн приятный глазу, хоть и пёстрый. Мне не к чему придраться.


Посмотрим на Gadget Bridge:


image

Нас встречает меню со списком подключенных гаджетов. Зачем? Я не знаю. Видимо, я один не пользуюсь пятью фитнес-трекерами одновременно, иначе я не понимаю, зачем это нужно. Из этого экрана мы можем извлечь ровным счётом ничего, кроме заряда батареи браслета. Сравните это с Mi-fit.


Лично я пользуюсь браслетом в основном для того, чтобы мониторить свой сон и шаги. Посмотрим на то, как эти экраны выглядят в Mi-fit.


image

image

Тут я ничего плохого сказать не могу. Все просто, понятно и наглядно. Есть приятные графики, детализация измерений, даже сравнение с другим пользователями (которое, впрочем, либо очень общее и не обновляется, либо взято с потолка, потому что приложению выключен доступ в интернет уже несколько месяцев).


А сейчас будет больно, приготовьтесь. Gadget bridge:


image

image

Я не знаю, как это комментировать. Я не знаю, как это читать. Я не знаю, кому пришло в голову вставить это в релизную версию приложения. Какую информацию я могу извлечь из этих экранов, помимо того, что разработчик сно дал понять, что ему наплевать на меня? Ну, я вижу, что, оказывается, глубокого сна у меня выдалось целых 12 минут за всю ночь. Звучит не очень убедительно. А еще у меня было 8 часов и 13 минут чего-то. Не знаю чего, надпись находится за пределами экрана. Наверное, речь о беге трусцой или занятиях кросс-фитом. Экран "Активность" я оставлю без комментариев и просто молча удалю приложение.


Есть и исключения


Но, к сожалению, их доля в общей массе исчезающе мала. Однако, эти продукты по-настоящему хороши, и с точки зрения UI/UX сделаны отлично. И потому популярны.


Приведу несколько примеров таких продуктов, которыми сам пользуюсь и получаю от этого удовольствие:


  • Рабочая среда KDE Plasma
  • Федеративная соц. сеть Mastodon (веб-клиент)
  • Менеджер паролей Bitwarden
  • Браузер Firefox от Mozilla
  • Офисный пакет LibreOffice

Наверное, есть и еще примеры, но факт остаётся фактом: качественный и продуманный интерфейс в СПО скорее исключение, чем правило, и это печально.


Почему так происходит?


Я вижу три причины:


  1. Нет понимания. Многие свободные программы пишутся энтузиастами-одиночками или маленькими группами программистов. Проблема в том, что программист не дизайнер и в дизайн не хочет, не может, не умеет и не должен. Дизайном должен заниматься профессионал, но программисты зачастую не имеют понимания, что этого профессионала нужно к делу привлечь. В итоге делают сами, как умеют.
  2. Нет ресурсов. СПО не коммерческий проект и разработчики, чаще всего, работают на голом энтузиазме и редких донатах. В таких условиях, конечно, никто не будет нанимать дизайнера (оплатить бы хостинг за следующий месяц).
  3. Нет мотивации. Тяжело работать, не получая никакой отдачи. Запал заканчивается, человек выгорает. Я видел десятки заброшенных проектов и проектов, которые годами ходят по рукам, их забрасывают одни, подбирают другие и так далее. Почему так случается? Я думаю, это наша вина, как пользователей. Разработчикам не донатят, в проекты не коммитят, большинство ленится даже написать хороший отзыв приложению в плей-маркете или на Alternativeto. В коммерческих проектах есть зарплаты, целые команды, менеджеры и HR'ы, занятые тем, чтобы команда была замотивирована, сплочена, и работала эффективно, потому что это приносит деньги. В сфере разработки СПО это большая редкость. Результат предсказуем: разработчики просто забивают на свои проекты, потому что не видят причин ими заниматься дальше.

Что можно с этим сделать?


Я не являюсь профессионалом, но поделюсь своими мыслями на этот счёт. Буду рад услышать ваши варианты в комментариях.


Опираясь на описанные выше проблемы, я могу предложить только одно решение создать НКО, занимающееся дизайном и UI/UX свободного ПО. Эдакий "FOSS Design foundation". В организации должны работать несколько штатных дизайнеров на зарплате, а также волонтеры (например студенты соответствующих направлений). Организация будет финансироваться за счёт пожертвований и будет заниматься просвещением разработчиков, выпуском инструментов и материалов для них, консультациями и курированием проектов.


Если разработчики понимают, что код нужно писать по PEP8, но не понимают, что UX важен, значит им просто никто этого не объяснил. Этим и может заняться новое НКО. Также важно дать разработчикам качественные инструменты: если в распоряжении девелопера только пыльный шаблон из Android Studio, слабое понимание того, как делаются интерфейсы и желания заниматься этим на час, то результат будет соответствующий. Команда профессионалов должна заняться разработкой шаблонов, рекомендаций и готовых материалов (например палитр и шрифтов), которые будут распространяться под свободными лицензиями. Организация также могла бы консультировать, курировать, брать на себя отдельные проекты, которые покажутся ей достойными.


Возможно я чего-то и не понимаю, но, на мой взгляд, запрос на такую организацию назрел уже давно.


Вместо вывода


Вместо вывода предлагаю всем сочувствующим FOSS движению поделиться своим мнением, взглядом на проблему и предложениями по ее решению в комментариях. Все-таки это и есть подход Open source сообщества: работать вместе ради достижения общей благой цели, то есть в интересах всего общества.


Спасибо за внимание!

Подробнее..

Потребности снижения операционного риска приведут к деградации понятия сверхквалификации при приеме на работу

02.08.2020 14:11:42 | Автор: admin

Качество кадровых процессов, не самая сильная сторона внутренних процессов основной массы финансовых посредников, выдающих ссуду до получки, выросших, по Пелевину, как гробы после вождя в последние несколько лет при попустительстве пособничестве мегарегулятора.
Обычно характерна разбалансировка, между кадровым и в конечном итоге финансовым планированием. Кто-нибудь смотрел фильм Человек который изменил всё? И ведь правильно излагают..., изменение в кадровых процессах способны изменить экономику всей отрасли.
А чего ждать от кадровых процессов в условиях перманентной депрессии, упрощения структуры экономики в стране победившего дикого госкапитализма, сопровождающей её активное сжатие при оценке в резервных валютах?
Правильный ответ налаженного и непрерывного процесса поставки рынком труда соискателей, обладающих такой характеристикой-фикцией, как сверхквалификация, у большинства претендентов на относительно малое количество достаточно примитивных, как условно, так и напрямую, по сути операторских оффлайновых должностей там, где автоматизация ещё не дотянулась до бизнес-процесса своими липкими щупальцами прогресса.
И здесь впору вспомнить, что в человеческой природе существует нечто такое, что находит отражение в пословицах и поговорках, таких как: не ошибается тот, кто ничего не делает, за одного битого двух небитых дают.
Однако, в практической плоскости у каждой ошибки есть цена, а также, как говорил тов. И.Сталин, имя и фамилия. В регуляторных нормах ошибка скрывается под обезличенным именем операционные риски (ОР) и численно оценивается при расчете обязательных нормативов финпосредников.
В расчетных целях ОР выступает гипотетической и расчетной величиной, но не фактическими потерями, которые на практике могут быть абсолютно любыми, поскольку весьма и весьма индивидуальны. Но для финсистемы страны вцелом это предположение возможно даже основано на каких-то исторических расчетах и на очень больших числах с учетом величин от известных фактов. Но нет конечно. Для этого есть старший брат из Базеля, который и говорит нам как надо, а российский центробанк может только ускорить или оттянуть внедрение его рекомендаций.
Итак, формула будет меняться на основе рекомендаций наших базельских товарищей. Сейчас это пока процентик от суммы i-тых доходов за некий период времени, а в недалеком будущем это будет новый стандартизированный подход предполагает применение показателя потерь, позволяющего кредитным организациям рассчитывать величину капитала, необходимого для покрытия операционного риска, исходя из реального уровня прямых потерь от реализации рисковых событий. Иначе говоря, произведение совокупной величины размера ОР на коэффициент внутренних потерь.
То есть будет зависимость между оценками финпосредника и расчетом достаточности капитала. Но это ещё не скоро и не для всех.
Назовём затраты, связанные с фактом реализации ОР на практике, цена ошибки (ЦО).
ЦО зависит от сложности бизнес-процесса (БП) для живых участников, и адекватности их квалификации. Квалификация штука достаточно сложная для оценки и не абстрактная как может показаться сначала. Напротив даже очень конкретная и следовательно измеряемая. Поэтому важны подробности и нюансы при её оценке.
Мы также, предполагаем зависимость между квалификацией участников БП и суммарной ЦО за некий период времени расчета ОР. То есть, чем выше совокупная квалификация всех участников процессов, тем меньше случаев (N) реализации ОР, меньше ЦО на случай, в том числе от большей скорости устранения последствий события и меньших затрат на это устранение (З_на_Устр).
Кроме того, предполагаем, что в процессе реализации ОР увеличивается опыт всех участников БП, совершенствуется БП, растёт совокупная квалификация либо через самообразование (=0 затрат), либо посредством внутреннего и внешнего обучения (З_на_Обуч > 0). Как говорится, за одного битого двух небитых дают. В уже реализовавшуюся ЦОi следует добавлять дельту на рост затрат на обучение, но в будущем мы ожидаем снижение размера ЦО и уменьшение N. То есть мы имеем помимо прямых потерь, расходы на мероприятия по снижению риска в будущем.
При приёме работника со сверхквалификацией мы снижаем ЦО, но добавляются затраты на восполнение персонала при повышении текучести кадров. В этом случае приходится ещё учитывать возраст. Предполагаем, что сотрудник со сверхквалификацией (Св_Кв) из категории 50+ может быть и не добавит текучести кадров (Тек_Кадр).
С другой стороны, например, работник со Св_Кв из категории 40- понимая, что со временем (Т) теряет квалификацию, постарается быстрее найти работу соответствующей квалификации за время t, которое меньше T. Далее кадровик, учитывая негативный опыт постарается заполнить вакансию сотрудником скорее недостаточной квалификации в расчете на снижение Тек_Кадр. Особенно, если в его KPI не будет показателя по ЦО.
Также в модели закладываем тенденцию, что изменения в автоматизации и цифровизации БП приводят к достаточно резкому расслоению требуемых специалистов по уровню квалификации на небольшом временном горизонте. Практически вымываются средние уровни квалификации, функции которых в первую очередь автоматизируются. Остаётся, с одной стороны, потребность в малоквалифицированных операторах, осуществляющих ввод информации в системы с бумажных носителей, с другой, высококвалифицированные специалисты: писатели, разработчики, тестировщики, настройщики программного обеспечения.

Подробнее..

Как привлечь выпускников в российские корпорации и НИИ

08.02.2021 20:16:10 | Автор: admin

Эта заметка по сути своей транскрипция выступления, которое я подготовил для круглого стола на форуме Армия-2020, который проходил этим летом. Круглый стол был посвещен привлечению молодых специалистов и выпускников вузов на предприятия оборонки, да и на отечественные высокотехнологичные предприятия в целом. Предлагалось обсудить применение мирового опыта и роль отечественной истории в этом деле.

Вопроса связанного с перениманием иностранного опыта, ее я коснусь в первую очередь.

При решении вопросов, касающихся межкультурного взаимодействия, часто пользуются моделью Хофстеде. Модель оценивает культурные ценности общества по 6 измерениям, каждое из которых влияет на поведение и восприятие отдельных его членов. С помощью этой модели попробуем оценить какие подходы могут быть более а какие менее эффективны.

Гером Хофстеде возглавлял научно-исследовательский отдел IBM и разработал эту модель для улучшения межкультурного взаимодействия внутри транснациональной корпорации, сейчас она принята на вооружение по всему миру, а социологи провели исследования по этой модели для 93 стран. Модель позволяет формализовать различие в менталитетах разных народов и лучше понять их восприятие мира.

Нас сейчас интересует Россия.

Измерения по модели Хофстеде для Российского обществаИзмерения по модели Хофстеде для Российского общества

Среди всех измерений обратим внимание на превалирующие - Ориентация на будущее и Дистанция власти. Самый большой показатель в нашей культуре Избегание неопределенности пока оставим за скобками, но я вернусь к нему позднее.

С этой информацией обратимся к еще одному вопросу, выносимому на обсуждение роль отечественной истории.

Можно ли привлечь молодых специалистов при помощи примеров великих деятелей прошлого?

Для всех культур с высоким показателем Ориентация на будущее характерна способность быстро принимать и отказываться от существующих традиций в зависимости от сложившихся условий. Члены таких обществ испытывают слабое влияние истории на принятие собственных решений.

Часто эти особенности можно использовать во благо. Во многом благодаря легкости в отказе от традиций, Россия быстро вырвалась в лидеры по развитости банковской инфраструктуры люди легко отказались от традиции использования наличных денег в пользу более удобного безналичного расчета. По данным ЕЦБ только 21% всех расчетов местного населения проходит с помощью безналичных технологий, в то время как в России этот показатель достиг 60%.

Обратная сторона медали заключается в том, что общество невосприимчиво к воздействиям при помощи апелляции к историческим персонам и событиям. Примеры великих свершений прошлого по сути своей отражают традиционно сложившийся уклад, при котором престижно работать в той или иной отрасли или общество в целом считается успешным в каком-то деле. Из-за неустойчивости традиционных укладов такие примеры не находят искреннего отклика у людей. Лозунги и образы, использованные на агитации на примере ниже производят впечатление только на людей, выросших и воспитанных в патриотически-центрированной системе ценностей. Но отклик этот вызван не прямым воздействием такой агитации, а ассоциациями этих образов с образами из детства и той средой, в которой человеку комфортно, и которая эти ценности прививает.

Агитационный билборд, обращающийся к патриотическим чувствам молодежиАгитационный билборд, обращающийся к патриотическим чувствам молодежи

Применение таких методов не играет на руку рекламодателя. Они скорее имеют обратный эффект демонстрируя оторванность организации от ценностей и мировоззрения своей аудитории.

Какими должны быть стимулы?

Конструктивно подойти к вопросу мотивации молодых специалистов поможет второе доминирующее измерение дистанция власти. В культурах с высоким значением этого показателя чрезвычайную роль играет статус.

Мотивация, связанная с возможностью приобретения или потерей статуса, может пересиливать материальную составляющую. И именно этот факт следует использовать для привлечения специалистов. Если вы хотите, чтобы человек пошел работать к вам, нужно сделать чтобы работать у вас было престижно.

В правой или в левой лаборатории работает успешный ученый?В правой или в левой лаборатории работает успешный ученый?

Такой вопрос, в какой из лабораторий, изображенных на рисунке выше, работает успешный ученый? Если человек из лаборатории слева будет получать большие деньги, чем человек из лаборатории справа, он будет чувствовать себя менее успешным. Когда я говорю о материальной обеспеченности я не обязательно подразумеваю, что необходимо увеличить финансирование лабораторий. Эту проблему можно решить исключительно организационными методами. Дело в том, что организации расходуют средства очень неэффективно. Финансово-хозяйственная деятельность в первую очередь направлена на выполнение плана, а уже затем на достижение результата.

И здесь самое время вспомнить о самом сильном показателе нашей культуры Избегание неопределенности. Побороть эти тенденции очень тяжело даже на локальном уровне. Но это нужно делать.

Во-первых это имеет прямое отношение к статусу. Когда у человека нет возможности проявить инициативу и когда его начинания не получают развития в угоду выполнения плана - это сильно бьет по его самооценке. Такой сотрудник не будет чувствовать себя важным и нужным.

Во-вторых жесткое планирование в таких областях как наука и инновации неэффективно. Некоторые темы исследований могут потерять свою актуальность за время инициации проекта. В области информационных технологий гибкие методы управления показали свою эффективность. И есть положительные примеры применения таких практик в области научных исследований.

Креативность это то, что нельзя предсказать Мне очень нравится в той науке, что я делаю, что я могу прийти утром с идеей, а к вечеру уже сделаю образец, его померяю, у меня уже будет ответ.

Константин Новоселов

Третий аспект, актуальный в первую очередь для молодых специалистов, это возможность заработать себе имя в мировом научном сообществе. В США,молодой выпускник понимает, что работая в Лос-Аламосе сможет заработать себе имя.

Выпускник, который поедет работать во ВНИИЭФ попадет изоляцию от сообщества. Человек, идущий на такую работу должен быть готов к тому, что широко известным ученым он стать, скорее всего не сможет. Не многие готовы пойти на это, имея альтернативы.

Ученые из американских военных институтов публикуются намного большеУченые из американских военных институтов публикуются намного больше

Потеря возможности общения с мировым сообществом в целом, сама по себе не привлекательна. Этот фактор тоже сильно отпугивает выпускников. Абсолютное большинство из которых легко готовы отказаться от некоторых карьерных возможностей в пользу сохранения за собой всех свобод. Важно понимать, что эти люди никогда не жили в закрытой стране и воспринимают те свободы общения и передвижения, которые они имели всю свою жизнь неотъемлемыми правами. И отказ от них в пользу места в организации с сомнительными перспективами видится им одной из наименее привлекательных возможностей после выпуска.

Они ориентируются на глобальные каналы передачи информации, чаще находятся в трансграничном языковом и культурномпространстве.

Степан Гончаров, Социолог Левада центра

Резюмируя, обращу внимание на ключевые посылы, которые я хотел донести:

  • Ошибочно считать, что апелляция к образам из прошлого способна повлиять на решения людей в современном мире.

  • Необходимо повысить престижность работы в российских институтах, для этого не нужны материальные вложения, достаточно организационных мер. Достаточно повысить эффективность расходования средств институтами, изменить систему целеполагания в сторону более гибкого планирования и дать ученым возможность реализовывать свои идеи и заработать себе имя.

Подробнее..

Перевод Лучшие экспериментальные протоколы для исследования реального мира

24.04.2021 16:07:19 | Автор: admin

Золотым стандартом исследований в области машинного обучения служит последовательная модель эксперимента: у вас есть базовый уровень, ваш эксперимент и фиксированный, заранее определённый набор тестов. Вы оцениваете свой базовый уровень на наборе тестов, получаете базовое значение. Затем вы выполняете свой эксперимент на наборе тестов и получаете другое значение. Затем вы сравниваете эти два результата. Допустим, вы публикуете все эти артефакты и предположительно любой может воспроизвести данные результаты. Это пример хорошей науки. Но я люблю невоспроизводимые исследования. И вот почему.


Воспроизводимость всегда была краеугольным камнем научного прогресса и предметом многочисленных семинаров и призывов к действию, особенно в области машинного обучения. Хотя попытки улучшить воспроизводимость результатов исследований, как правило, полностью оправданы и явно полезны для общества, они сопряжены с риском закрепления этой очень узкой модели точной воспроизводимости в качестве единственно приемлемого стандарта.

В академических кругах машинного обучения мало ценят то, что не все исследования могут позволить себе роскошь идеальной воспроизводимости по очень фундаментальным причинам и что, тем не менее, существуют научно обоснованные способы достижения статистической воспроизводимости при правильной разработке своего экспериментального протокола. Я считаю, что нам нужно улучшить собственное образование в рамках сообщества в целом, особенно в тех областях, где предмет исследования реальная производительность, например, для таких исследований робототехники, которые проводятся в моей лаборатории.

Для многих экспериментов, выполненных в Google, нет идеальной воспроизводимости, потому что фундаментально они связаны с оценкой влияния моделей на реальный мир. А реальный мир постоянно меняется: взаимодействие пользователей с системой существенно зависит от суточного цикла, смены времён года, мировых событий или ещё более неуловимых долгосрочных социальных тенденций. Ещё важнее то, что в результате изменений в самих моделях меняются пользовательские шаблоны.

Если вы заботитесь о влиянии своей модели на реальный мир, то для такого случая нет набора тестов.

Вы не можете проводить свои эксперименты последовательно (оценить базовый уровень в один день, а эксперимент провести на следующий), потому что мир уже изменился за это время, и ваши значения не сопоставимы. Вы также не можете сохранить вчерашний набор тестов, потому что ваши данные эволюционируют вместе с вашей моделью: если ваша модель предлагает пользователям набор результатов поиска, а показатель качества служит оценкой выбора их пользователями, невозможно вернуться к вчерашним пользователям и спросить их о том, что бы они сделали, если бы получили другой набор результатов.

Лекарством от этого стало параллельное проектирование эксперимента, иначе известное как A/B-тестирование. Для каждого экземпляра теста вы случайным образом выбираете выполняемую ветвь эксперимента: оценку базового уровня или эксперимент. Эта простая обработка отменяет любую изменчивость из-за лежащих в основе изменений распределения и позволяет получить статистически эффективные результаты, даже если ваша схема оценки находится в состоянии постоянного изменения.

И это приводит нас к самому большому непониманию A/B-тестирования и его пользы в качестве научного инструмента: оно часто используется, например, в UX-дизайне, чтобы узнать, влияют ли небольшие изменения компоновки сайта на переходы пользователей или могут ли тонкие изменения затенения сделать рекламу более привлекательной. В результате оно приобрело репутацию инструмента улучшения доверительных интервалов для очень малых эффектов. И поскольку исследователи машинного обучения относятся к доверительным интервалам в лучшем случае как к вынужденному допустимому отклонению, фактическая значимость А/В-тестирования для исследований в области машинного обучения обычно упускается из виду.

Параллельное A/B-тестирование целиком относится к тестированию больших эффектов, особенно когда нет возможности жёсткого контроля схемы оценки.

Мои коллеги недавно наглядно продемонстрировали это в контексте исследований робототехники. Как известно, в робототехнике очень сложно создать воспроизводимую схему оценки: роботы меняют положение, оборудование, объекты изнашиваются, меняется освещение, операторы роботов тонким образом влияют на то, как данная схема сбрасывается после каждого эксперимента. Печально известная проблема сброса, в частности, очень сложна, потому что создание хорошего протокола сброса, который возвращает настройку вашего робота в известное фиксированное состояние, может быть столь же трудным, как и запуск эксперимента в первую очередь.

Они взяли одну из наших простейших установок, задачу захвата идентичных пенопластовых кубиков внутри бункера, и измерили воспроизводимость этой идеально контролируемой среды.

Простая установка захвата с помощью робота. Источник: Robotics at Google (Робототехника в Google)Простая установка захвата с помощью робота. Источник: Robotics at Google (Робототехника в Google)

Они за несколько дней последовательно провели 11 экспериментов по захвату и измерили вероятность успеха и доверительные интервалы для каждого из них. Результаты, нормированные по отношению к производительности базового прогона, показаны ниже:

Изменчивость в идентичных экспериментах. Источник: Robotics at Google (Робототехника в Google)

Если бы каждому эксперименту соответствовала другая модель, мы бы сказали, что эксперимент 7 примерно на 2% лучше, а эксперимент 5 примерно на 5% хуже. И у нас бы даже были достаточно жёсткие доверительные интервалы, чтобы убедить вас в этом. Но здесь не было никаких различий между экспериментами, все они были идентичными. Обратите внимание, что это не случай отсутствия данных: большее количество данных будет только сокращать доверительные интервалы, а не перемещать их положение относительно базового уровня. Такая необъяснимая изменчивость целиком попадает в неизвестные неизвестные окружающей среды. И эта установка так же проста, как и для реального эксперимента с роботом: во многих статьях по робототехнике сообщается об экспериментах с последовательной обработкой и гораздо большим потенциалом необъяснимой изменчивости, чем этот. Что ещё важнее, если бы мы не измерили эту повседневную изменчивость, мы бы даже не догадались о её существовании. Очень немногие исследователи когда-либо задумывались об измерении внутренней изменчивости в их экспериментальной установке в первую очередь, потому что, давайте посмотрим правде в глаза: так это работает, и из этого направления исследований могут поступать только плохие новости.

Урок здесь заключается в том, что при использовании этого конкретного экспериментального протокола мы определённо не можем доверять любой разнице производительности ниже 10% я даже не знаю, доверял бы ли я разнице в 10% без большой повторной проверки. Неужели это безнадёжно? Конечно, нет. Введите параллельное тестирование.

Только избавившись от иллюзии идеальной воспроизводимости, вы сможете наслаждаться восхитительной свободой статистической воспроизводимости и по-прежнему заниматься наукой с гораздо более высокой эффективностью данных в качестве бонуса.

Вот три дня одного и того же эксперимента, но на этот раз базовый уровень оценивался параллельно с экспериментом, случайным образом выбранным в каждом эпизоде.

Изменчивость в параллельных идентичных экспериментах. Источник: Robotics at Google (Робототехника в Google)Изменчивость в параллельных идентичных экспериментах. Источник: Robotics at Google (Робототехника в Google)

Теперь обратите внимание, насколько последовательны числа, говорящие вам, что на самом деле нет никакой разницы между базовым уровнем и экспериментом. Нейтральные А/А-эксперименты, подобные этому, самый жёсткий статистический тест, и любой эксперимент, который действительно влияет на производительность, смог бы выдать чёткий сигнал.

Это было выполнено без каких-либо изменений в экспериментальной установке, только с немного другим экспериментальным протоколом.

Итак, почему же все не делают так? Давайте рассмотрим некоторые из этих задач.

Одно из распространённых заблуждений заключается в том, что, поскольку необходимо снова и снова оценивать базовый уровень для каждого эксперимента, нужно в два раза больше оценочных данных. Это неверно, как только есть некоторая изменчивость в вашей установке: выигрыш в статистической эффективности, который получается от постоянной оценки базового уровня, может составлять порядка величины данных или бесконечное количество данных в худшем случае, как мы видели выше. Есть хитроумные способы получения ещё большей эффективности данных с помощью перекрывающихся экспериментов вероятно, это самая недооценённая исследовательская работа, вышедшая из стен Google, но создание правильных инструментов для этой работы требует гораздо больше усилий, чем большинство исследователей, вероятно, готовы приложить при изучении этой проблемы.

Один из недостатков заключается в том, что ваша базовая оценка всегда должна быть работоспособной, предпочтительно выраженной в том же двоичном файле, что и ваш эксперимент, и поддерживать переключение на лету. Это, несомненно, требует работы и тщательного проектирования программного обеспечения. Преимущество этого заключается в том, что вы также защищаете себя от случайной деградации данных, когда какой-то сотрудник случайно изменяет что-то в вашем проекте, что влияет на базовую производительность, и вы этого не замечаете. Такое происходит с предсказуемой регулярностью в любой общей кодовой базе. Многие изменения в системе незначительны, влияют на исходную производительность тонкими способами и в конечном счёте не имеют отношения к рассматриваемому научному вопросу. Отсутствие необходимости всё это контролировать это абсолютная свобода.

Одно из очевидных преимуществ этой установки заключается в возможности контролировать свои доверительные интервалы на лету. Вы можете решить прекратить эксперимент, убедив себя, что он даёт даже немного отрицательный результат. Часто требуется гораздо меньше данных, чтобы убедиться в этом. Если эксперимент даёт положительный результат отлично! Просто выполняйте его, пока не получите правильные величины ошибок. А если вы измеряете не величину эффекта, а просто значимость, вы также можете остановить эксперимент раньше.

Но что можно сказать о том, чтобы сделать исследование воспроизводимым другими? Вы по-прежнему можете публиковать базовые и экспериментальные модели, а также экспериментальный протокол, а каждый может генерировать собственные данные о своей воспроизводимой системе, чтобы убедиться в достоверности полученных результатов. Напомним, что допущение здесь заключается в том, что использованные данные не могут быть повторно использованы либо потому, что они по своей сути эфемерны, либо не переносятся на любой будущий экземпляр той же исследовательской установки.

Ещё одно ключевое преимущество параллельного тестирования защита от ряда предвзятостей, главная из которых предвзятость экспериментатора: так как вы не можете знать, какая выборка данных в какую ветвь эксперимента направляется, вы не можете обманывать себя, полагая, что один результат лучше другого. Оно также защищает вас от случайной настройки на тестовый набор, так как в оценке присутствует определённый уровень стохастичности.

Ещё одна предвзятость, более характерная для укрепляющего обучения и робототехники, это несовершенные сбросы: если одна ветвь эксперимента заставляет механизм сброса вести себя немного иначе, чем другая, возможны тонкие различия, которые останутся незамеченными. Мы видели, как RL-системы манипулируют своей средой, чтобы получить определённые состояния сброса и, следовательно, повысить свои шансы на успех в последующих эпизодах или даже передать информацию между эпизодами таким образом.

Фактически протоколы параллельных экспериментов часто способны значительно уменьшить или устранить необходимость в сбросах в первую очередь: если ваша система завершает каждый эпизод в допустимой части пространства состояний, так как нет способа узнать, какая ветвь эксперимента привела к этой конкретной конфигурации среды, вы часто можете проводить пожизненные эксперименты без сброса и без предвзятости в отношении ветвей эксперимента.

Абсолютная изменчивость для идентичных базовых уровней. Источник: Robotics at Google (Робототехника в Google)Абсолютная изменчивость для идентичных базовых уровней. Источник: Robotics at Google (Робототехника в Google)

Одна из главных вещей, от которой вы отказываетесь, это комфорт иметь одну аккуратную пару результатов с базовой точностью и точностью испытаний, которые бы вы записали на бумаге и которые бы ожидал каждый академический рецензент. У каждого эксперимента имеется собственный базовый уровень, который, в свою очередь, имеет собственный доверительный интервал. Ваш абсолютный показатель точности испытаний зависит от дня выполнения измерения, но он всё ещё совершенно надёжен, поскольку каждый раз оценивается статистическая значимость измеренных различий между ветвями.

Тем не менее для рецензентов, принимающих эту реальность, барьер остаётся огромным. Переход от абсолютных, воспроизводимых истин к относительным, статистическим истинам вызывает дискомфорт. Это то, что во многих научных областях, таких как разработка лекарств, сделано по необходимости, но это всё ещё чуждо машинному обучению, где обычно нет необходимости отступать к комфорту автономных оценок. Проблема с этой институциональной аллергической реакцией на эксперименты с реальными системами, сбросившими видимость идеальной воспроизводимости, заключается в том, что в таких областях, как робототехника, реальная производительность на самом деле стала научным сферическим конём в вакууме и что академические практики, которые работают против этих в остальном твёрдых научных протоколов, активно сдерживают нас. Проводить эксперименты в реальном мире трудно, рискованно, а с академическими препонами для такого рода исследований следует бороться на каждом шагу.

Слишком много нашей коллективной энергии в этой области тратится на попытки придумать новые, цельные, совершенные эталонные тесты, которые чрезвычайно трудно построить, в несколько донкихотском стремлении сделать робототехнику более похожей на исследования в области машинного обучения. Конечный результат заключается в том, что, за очень редкими исключениями, большая часть усилий в этом направлении сводится к моделированию эталонных тестов и отказу от реалистичности ради воспроизводимости. У таких усилий всё ещё много достоинств, но они составляют только около половины уравнения, и часто сама цена их создания отвлекает исследователей от реальных научных поисков. Другие пытались определить метаэталонные тесты, обходя проблему воспроизводимости, не определяя задачу или экспериментальный протокол в точности в первую очередь. Как человек, который своевольно относится к протоколам и тщетности чрезмерной специализации проблемы, я думаю, что это позитивное общее направление, даже если оно откладывает обсуждение большей части сложных аспектов фактического исполнения.

Для нас в области машинного обучения и робототехники настало время использовать те простые инструменты, которые делают невоспроизводимые исследования воспроизводимыми и научно обоснованными. Ни один из протоколов, которые я описываю здесь, не является особенно трудным для реализации, но они обещают улучшить реальную науку, упростить её и ускорить. А если вы хотите ускорить свой прогресс в области machine learning или data science приходите учиться к нам, а наши опытные менторы пояснят все сложные моменты, на которые при самообразовании вы бы потратили ценное время.

Узнайте, как прокачаться и в других специальностях или освоить их с нуля:

Другие профессии и курсы
Подробнее..

Хотите стать учёным по данным? Тогда не начинайте с машинного обучения

06.12.2020 02:07:34 | Автор: admin

Многие люди, когда они впервые слышат термин Data Science, обычно в первую очередь думают о машинном обучении.

Так было и со мной. Мой интерес к data science возник потому, что я впервые столкнулся с идеей машинного обучения, которая показалась мне действительно крутой. Поэтому когда я начал искать место, где можно бы начать узнавать о data science, не трудно догадаться, откуда я начал. (Подсказка: оно рифмуется с bean churning.)

Это было моей самой большой ошибкой, которая привела меня к этой мысли:

Если вы хотите изучать data science, не начинайте с машинного обучения.

Просто поймите. Понятное дело, чтобы стать "полноценным" data scientist, когда-то придётся узнать о концептах машинного обучения. Но вы удивитесь, как далеко вы сможете продвинуться без него.

Так почему бы не начать с машинного обучения?

1. Машинное обучение - это только одна (и очень небольшая) часть data scientist'а

Иллюстрация оригинального автораИллюстрация оригинального автора

Data science и машинное обучение - это как квадрат и прямоугольник. Машинное обучение - (часть) науки о данных, но наука о данных не обязательно является машинным обучением, подобно тому, как квадрат является прямоугольником, но прямоугольник не обязательно является квадратом.

На самом деле, я бы сказал, что моделирование машинного обучения составляет только 510% работы data scientist'а, тогда как большая часть времени тратится в другом месте, о котором я расскажу позже.

Вкратце: сосредоточившись в первую очередь на машинном обучении, вы потратите много времени и энергии и мало получите взамен.

2. Для полного понимания машинного обучения сначала необходимы предварительные знания по нескольким другим предметам

По своей сути машинное обучение построено на статистике, математике и вероятности. Точно так же, как вы сначала изучаете грамматику, образный язык и т.д. Чтобы написать хорошее эссе, вы должны иметь эти высеченные в камне строительные блоки, прежде чем вы сможете изучать машинное обучение.

Приведу несколько примеров:

  • Линейная регрессия, первый алгоритм машинного обучения, которому в первую очередь обучают большинство учебных курсов, на самом деле являетсястатистическимметодом.

  • Метод главных компонент возможен только с идеями матриц и собственных векторов (линейная алгебра)

  • Наивный байесовский классификатор - это модель машинного обучения, полностью основанная на теореме Байеса (вероятность).

Так что, я закончу двумя вещами:

  1. Изучение основ облегчит изучение более продвинутых тем.

  2. Изучив основы, вы усвоите несколько концепций машинного обучения.

3. Машинное обучение - не ответ на каждую проблему data scientist'а

Многие data scientist'ы (в том числе и я) борются с этим. Возвращаясь к моей первоначальной мысли, многие data scientist'ы думают, что data science и машинное обучение идут бок о бок. Так что, когда они сталкиваются с проблемой, первое решение, которое они рассматривают - это модель машинного обучения.

Но не для каждой проблемы в data science требуется модель машинного обучения.

В некоторых случаях анализа с помощью Excel или Pandas вполне достаточно, чтобы решить возникшую проблему.

В остальных же случаях проблема не будет связана с машинным обучением. Вам может понадобиться очистить и управлять данными с помощью скриптов, построить конвейеры данных или создать интерактивные информационные панели, все из которых не требуют машинного обучения.

Так что мне тогда делать?

Если вы читали мою статью "Как изучить data science, если пришлось начать сначала", вы, возможно, могли заметить, что я предлагал изучить математику, статистику и основы программирования. Я всё ещё придерживаюсь этого мнения.

Как я уже говорил ранее, изучение основ облегчит изучение более продвинутых тем, а изучив основы, вы усвоите несколько концепций машинного обучения.

Я знаю, что вы можете себя чувствовать, будто вы не совершенствуетесь, чтобы стать data scientist, изучая математику, статистику или основы программирования, но изучив эти основы вы только ускорите ваше обучение в будущем.

Вы должны научиться ходить, прежде чем сможете бегать.

Если вы хотите начать с каких-то осязаемых следующих шагов, то вот вам несколько идей:

  1. Начните со статистики. Я считаю, что из трех строительных блоков наиболее важным из них является статистика. И если вы боитесь её, то data science, вероятно, не для вас. Я бы посмотрел курс Технологического института Джорджии "Статистические методы", или серию видео от Khan Academy.

  2. Изучите Python и SQL. Чем лучше вы будете знать Python и SQL, тем легче будет ваша жизнь, когда дело дойдет до сбора, обработки и реализации данных. Я также был бы знаком с библиотеками Python, такими как Pandas, NumPy и Scikit-learn.Я также рекомендую вам изучить двоичные деревья, поскольку они служат основой для многих сложных алгоритмов машинного обучения, таких как XGBoost.

  3. Изучите основы линейной алгебры. Линейная алгебра становится экстремально важной, когда вы работаете с чем-то связанным с матрицами. Она часто встречается в рекомендательных системах и приложениях глубокого обучения. Если вам кажется, что вы хотите изучить эти вещи в будущем, то не пропускайте этот шаг.

  4. Изучите обработку данных. Она занимает до половины работы data scientist'а. В частности, узнайте больше о проектировании функций, исследовательском анализе данных и подготовке данных.


Спасибо за прочтение!

В этой статье я высказал своё личное мнение, так что берите от неё всё, что хотите. Общий совет заключается в том, что машинное обучение не должно быть в центре внимания ваших исследований, потому что это не очень полезное использование времени, и мало что поможет вам стать успешным dat scientist'ом в рабочем мире.

С учетом всего сказанного, желаю удачи в ваших начинаниях!

Автор фото обложки: Will Porada

Подробнее..

Хватит уже называть всё подряд искусственным интеллектом!

18.04.2021 12:07:38 | Автор: admin
Бомбануло у одного из известнейших исследователей в области машинного обучения, Майкла И. Джордана из университета Беркли. Он один из самых влиятельных computer scientist в мире, участник и лидер самых важных сообществ в области ИИ. Джордан тот кто развил область обучения без учителя (unsupervised learning) и ввёл LDA в обиход. Это прям интересно, когда такая глыба неожиданно выступает с такой жесткой критикой.


image

Вольное изложение его мыслей. Делал для курса по дата-этике в моей магистратуре. До этого я 8 лет потратил на основанный мной и партнёрами стартап Сегменто (приобретён в итоге Сбербанком), который как раз занимался обработкой данных для таргетинга:

Он критикует книги, рассуждающие про то, что мы будем делать с появлением общего ИИ, журналистов, поддерживающих эти темы. Разговоры про супер-интеллект и ИИ, мол, забавны, но они очень отвлекают от реальной проблемы. И не только широкую публику, но и самих учёных!

Главная цель развивать вертикальные системы машинного обучения и внедрять их по всему миру. Мы заняты сейчас не этим. Джордан называет их Искуственная инфраструктура вместо Искусственный интеллект

Трёп про компьютер, который станет разумным как человек увлекает, но это идея шестидесятых. Сейчас мы разрабатываем вовсе не такие системы, мы невероятно далеки от них. Мы сейчас делаем дополнения человеческим возможностям и это и есть задача на ближайшие годы

Реальный ИИ должен заниматься распознаванием низкоуровневых паттернов в нашей жизни, он делает это лучше человека. В финансах, производстве, здравоохранении. Именно это и есть цель и задача учёных.

В интеллектуальной среде стало беспонтово быть инженером чего-то, например термин социальный инжиниринг несёт негативный оттенок. А вот как раз инжинирингом нам-то и надо заниматься. А все назвались учёными. А ведь всё что реально улучшило жизнь людей в последние сто лет было именно инжинирингом.

Цель создания систем AI/ML не просто в обработке данных, но в создании новых цепочек, соединении новых покупателей и продавцов, в создании совершенно новых рынков

Всё что сейчас называют AI им не является, не способно к высокуровневой постановке целей и мышлению. Почти всегда AI называют машинное обучение, которому десятки лет.

Прикольные ИИ создающие музыку, тексты, генерящие речь просто дополнение к способностям человека, не шаг к реальному ИИ. Это хайп, который отвлекает от полезных целей.

Имитирующий человека ИИ это заблуждение. Мы должны не пытаться сделать замену мясному мешку за рулём машины, а сделать системы вроде роботизированной диспетчерской башни в аэропорту, но для автотрафика

В конце концов у нас есть шанс сделать разработку и инжиниринг человекоцентричными, пытаясь поставить идеи счастья человека. Сейчас эта идея вовсе не в центре разработки технологий. И у неё нет названия, говорит Джордан.

Лично мне очень понравились его мысли, а в особенности идея про человекоцентричность. Эта идея лежит на грани технологий и этики, раскрывается мало и часто сваливается либо в левую чушь, либо в алармизм.
Подробнее..

Разрабы работают медленно и дорого и люди считают нас лентяями. Просто в разработке всё сложно

28.10.2020 18:06:09 | Автор: admin

Люди не изиндустрии вечно не понимают программистов: что они там такое сложное делают, если видно только две кнопки? Что за непонятные слова говорят? Почему так много получают?


Вместе спарнями изподкаста Мы обречены решили сэтим разобраться и запустили совместную рубрику, где будем объяснять, почему вразработке всё так сложно. А для тех, кто любит читать, а не слушать, парни написали эту статью.



Знаете такое чувство, когда вдруг понял, что работаешь уже целый год, хотя идея проекта была простой? Вас пять разработчиков, четыре тестера, проджект и продакт-менеджеры. Ты смотришь наполучившееся ПО, и думаешь ну что мы могли так долго делать? Пять основных фич, три десятка маленьких нормальному инженеру нанеделю работы.


Я часто ловлю себя натаком. Но дальше происходит одно и то же. Начинаю разматывать это вголове, вспоминать, какая работа была проделана. Какие нюансы есть впроцессе, который мы тут автоматизируем. Какие, казалось бы, нерешаемые проблемы мы разрулили. И чем больше думаю, тем больше убеждаюсь да то, что мы вообще дошли доэтого этапа, это уже небольшое чудо.


С программным обеспечением всегда так. Наповерхности кажется, что мы делаем простые штуки. Но насамом деле оно невероятно сложное. Проблема втом, что сложность станет видна, только когда ты погрузишься вовсе технические нюансы.


Нам всем приходится работать сне-инженерами, дляних вся сложность существует только на наших словах другого способа осознать её уних просто нет. И, конечно же, нам вечно не верят. Как будто нам не хватает собственного синдрома самозванца?!


Я много раз пытался доносить, насколько сложна каждая мелочь внашей работе, но вбольшинстве случаев терпел неудачу. Поэтому стал просто отшучиваться.


Почему ты всегда всё делаешь вдва раза дольше, чем обещаешь?


Потому что создатели Agile не верят, что можно делать что-то больше недели. Вот и говорю, вочто поверят.


А если серьёзно: детали не видны изначально, всегда кажется, что сделать надо немного, и получится быстро. Уже впроцессе работы натыкаешься накучу нюансов, иногда, пока делаешь задачу, требования меняются. Пока работаешь ты надтем же проектом работают ещё пять человек, и часто их изменения означают дополнительную работу длятебя.


Бывает, что впроцессе работы вообще понимаешь задачу выполнить невозможно. Но самая жесть втом, что очень часто ты понимаешь работы надзадачей вагон, но если скажешь это менеджеру, он будет требовать, чтобы ты объяснил ему, почему. А это ещё одна гигантская задача объяснить так, чтобы было понятно и не выглядело, как отмазка.


Зачем ты мудришь?! Сделай, чтобы просто работало!


Я могу. Но ты же потом придёшь, и скажешь, что открыл её скалькулятора, и там верстка поехала работа не выполнена.


А если серьёзно: человек, который просит сделать просто, чтобы работало, подразумевает подэтим буквально сотни подзадач и условий, которые поего мнению сами собой разумеются, и заложены вкомпьютер. Реальность, конечно, устроена абсолютно иначе.


Мы никогда не можем просто взять и сделать то, что просят. Всегда нужно строить штуку, которую будет легко менять. А чтобы её было легко менять, код должен быть более универсальный. Это требует серьёзного усложнения. Причём, чем больше возможностей кизменениям ты хочешь заложить, тем больше не линейно, скорее геометрически труда тебе придётся вкладывать.


Мы сами большие любители посмеяться надсвоей страстью сделать вместо решения фабрику решений. Мне говорят, что насамом деле это личная проблема каждого разработчика, а требуется всегда сделать ровно то, что просили.


И тогда я привожу свой опыт, опыт всех кого я знаю, опыт всей индустрии. И эти опыты говорят одно. Требования всегда меняются. Вот вообще всегда. И меняются намного сильнее, чем предвосхищают самые опытные строители фабрик. Если предложить не-разрабу изобрести концепцию приложения, то после того, когда он её тебе отдаст и ты начнешь её делать он уже наследующий день пришлёт тебе список изменений вконцепте.


Это так работает, даже когда вас всего двое. Когда у тебя нарынке продукт, которым пользуется миллион человек и каждый изних опосредованно участвует ввыработке требований можешь вообще забыть обидее, что утебя вкодовой базе будет хоть что-то устойчивое. Миллион пользователей, аналитики и продакты генерируют идеи соскоростью света. Всё это надо воплощать так, чтобы не повалилась обратная совместимость. Чтобы все новые идеи заработали, а встарых всё осталось как было, хотя код старых и новых идей связан между собой. И чтобы поправить водном месте, придётся затронуть другое.


Разработчики думают наперёд, и это удорожает разработку вразы. Но если бы не думали, подорожало бы вдесятки десятков раз.


Почему вы просто не возьмёте и не придумаете уже один нормальный язык, на котором все будет работать?


А почему люди не начнут говорить на одном языке?


А если серьёзно: унас тысячи классов задач. Разные языки по-разному подходят подразные задачи. Унас миллионы очень разных разработчиков. Часть изних отлично подойдёт, чтобы делать простенькие приложения, а часть чтобы пилить рокет саенс. Вторым нужен очень сложный язык, иначе получится непроизводительно. А первые такой просто не смогут освоить. А нужны-то и те и другие!


Есть причины и поглубже. Наши языки программирования отлично подходят, чтобы описывать формальные системы вроде математических уравнений. Процессы людей и их делишек они описывают очень плохо. Потому что языки программирования сами посебе формальная система, причём она куда беднее, чем те же человеческие языки. Ненавижу эту отвратительную метафору, но программирование условного Doom наC++ это натягивание совы наглобус.


Вязыке нет терминов и понятий воюющих между собой живых существ. Машина будет знать только то, что внесли внеё программисты. Если пуля врезается встену, она останавливается. А если стена резиновая, то отскакивает. А если пластиковая, прошибает насквозь. Сколько возможных материалов, толщин и вообще конфигураций стен вообще может существовать? Сколько изних должны описать мы? Мы пишем облегчённое подобие мировой физики, чтобы не описывать все кейсы вручную, но даже это подобие бесконечно сложное. Если вы хотите, чтобы увас была стрелялка, похожая нареальность увольняйте программистов, и нанимайте Богов. Эти ребята потянут физику такого качества.


Опять баги! Почему вы не можете писать без них, неучи?


Баги это чтобы бизнес не подумал, что сможет обойтись безнас.


А если серьёзно: баги это почти всегда ошибка не только разработчика, это ошибка системы. Баг это когда у нас что-то работает не так, как нам кажется, оно должно работать вэтот момент. Вследующий момент будет казаться по-другому. И сколько людей, столько и видений, как оно должно работать.


Витоге это безвыигрышная ситуация, где влюбом ПО утебя всегда бесконечное количество неправильных, счьей-то точки зрения, поведений.


У большинства изнас понесколько десятков разных проектов закарьеру, мы, конечно, стараемся вникать впредметную область, но никогда не сможем гарантировать, что действительно её понимаем. А те, кто её понимают, никогда не смогут прочитать наш код. Это создаёт разрыв, и чем сложнее процесс, тем он больше. Мы бы может и учли большую часть возможных ошибок, если бы доконца понимали, что именно делаем. Но мы ведь не понимаем дляэтого нам надо быть большими экспертами вдвух несвязанных областях сразу. А жизнь слишком коротка, чтобы даже одно дело изучить как следует.


Какой ещё новый язык? Какой ещё современный фреймворк? Нам не доигрушек! Почему не можете просто писать начём есть?


Работа должна приносить удовольствие. Мы хотим поиграть вигрушки.


А если серьёзно: все новые инструменты появляются только длятого, чтобы решить проблему, которая не решена встарых. Мы боремся задесятые доли процента оптимизации, и вцелом, это вообще единственный способ борьбы схаосом роста требований и индустрии. Мы отвечаем этому хаосу мощью и универсальностью своих новых инструментов. И надистанции видим подход работает. Чтобы сделать простое десктопное окно настаром WinApi, надо было написать сто строк кода. А сейчас одну.


Индустрия растёт и развивается бешеными темпами, унас появляется куча инструментов, которые, поидее, должны облегчить наш труд. Так вот, даже чтобы просто неплохо знать все инструменты, которые тебе нужны вработе, ты уже должен где-то отыскать 40часов всутки. Унас их конечно нет, поэтому можете быть уверены ни один изваших программистов не знает доконца даже те штуки, которые использует, пока делает те штуки, которые вы ему сказали. Пропускная способность человеческих мозгов сейчас недостаточно хороша, чтобы поддерживать возможность быть хорошим программистом. Наши мозги не подходят дляэтой работы, но другого варианта унас тоже нет.


Почему программисты так много получают? Ходите, кофе пьёте! За что вам платят!?


Потому что можем.


Но если серьёзно: потому что простые вещи, которые мы так долго и так плохо делаем, автоматизируют человечеству процессы, которые стоят намного дороже, чем отделы программистов. Это просто экономика. Даже 1С бухгалтерия автоматизировала человеческий труд намногие миллионы долларов.


А кроме автоматизации мы ещё делаем вещи, которыми люди буквально живут.


А если ещё серьезнее: потому что унас, блин, сложная работа. Очень сложная. Когда ты только вкатываешься виндустрию, ты должен учиться вообще всё свободное время. Большая часть этих знаний наиностранном языке выучить который некоторые уже считают зарыночный навык.


Ты как слепой котенок тыкаешься виндустрию, не понимаешь, что изучать, как, накаком уровне. Башка идёт кругом отколичества вещей, которые туда закачиваешь. Причём впрограммировании теория не работает, пока сам не сделаешь всё руками, а это долго и сложно.


Мы любим жаловаться, что джуны ничего не знают, но заэтим ничего уже есть гигантское количество знаний и нейронных связей. Досвоей первой работы я год корпел надконсольными шахматами, которые писал, чтобы изучить С++. Там было несколько тысяч строк кода, они работали каким-то чудом, потому что страшно толстого талмуда Программирование наязыке С++ не хватило, чтобы ответить даже намалую часть моих вопросов, как делать. Форумы, стековерфлоу, разные версии компилятора, стандарты, разные IDE те дни были большим мучением длямоих мозгов.


Я вообще справился сэтим только потому, что было очень интересно. Потом произошло чудо, и я получил первую работу программистом. Когда начинаешь работать, учиться становится легче. Но приэтом, когда я приходил домой, я не сидел и не смотрел сериалы сженой, я продолжал работать и учиться.


Мы все проходим большой и сложный путь и, если отбросить всю иронию, делаем реально сложные дорогие вещи. Если форма делается две недели, а не день, значит были причины. И обывательской интуиции не всегда хватает, чтобы их понять.

Подробнее..

Перевод Телеком (каким мы его знали) мёртв

18.03.2021 18:13:59 | Автор: admin

Original text Telecom (as We Knew It) Is Dead by Miguel Monforte | March 15, 2021.

Время от времени организация по стандартизации 3GPP удивляет всех смелыми шагами в выборе странных технологий. Так было с RCS, IMS и SIP. Когда они впервые объявили об эволюции ядра 5G как облачной архитектуры с HTTP в качестве основного протокола связи, это вызвало некоторое удивление специалистов.

С выпуском Release-15 исчезло все, что олицетворяло традиционные телекоммуникационные компании. Больше никаких специальных протоколов для повышения эффективности в периоды большого объема трафика. Больше никаких тестов на совместимость с различными поставщиками и новыми протоколами. Король телекоммуникаций мертв, и больше не будет: Да здравствует король! потому, что сегодня даже ребенок, использующий node.js, может построить ядро 5G на своем ноутбуке.

Добро пожаловать в будущее.

Движение к облачному миру означает приветствовать поставщиков технологий и игроков в ранее загадочном и обнесенном стеной саду: мобильном ядре. Последние 20 лет только высококвалифицированные компании производители решений имели возможность участвовать в создании и развитии ядра мобильных операторов. Сложные телекоммуникационные протоколы, строгие требования к качеству и долгосрочные обязательства по поддержанию в рабочем состоянии унаследованных систем сделали ИТ-компании непригодными для выполнения подобных задач. Существует множество примеров систем, работающих в сетях связи в течение 10 и более лет и все потом, что установка исправлений программного обеспечения и обновления оборудования сопряжены с риском сбоя и являлись весьма серьезными задачами.

В прошлом телекоммуникационная отрасль перенимала инновации от ИТ-вендоров (некоторые из них были более продуманными, чем другие). Но в этот раз отрасль, похоже, с головой погружается в современные фреймворки, микросервисы и популярные протоколы.

Исторически сложилось так, что некоторые из этих нововведений (например, SIP) применялись в телекоме без должной осмотрительности и позже были признаны непригодными для решений беспроводной связи. В качестве наиболее свежего примера HTTP оказался неоптимальным для доставки, когда дело дошло до сетей с негарантированным качеством (например, мобильных сетей, страдающих непрогнозируемыми потерями и задержками). В результате был разработан новый протокол HTTP/2. Однако специалисты довольно быстро осознали (многие в комитете H2 IETF до того, как он был широко внедрен), что HTTP/2 имеет свои собственные ограничения (они как бы просто переместили блокировку HOL в TCP на транспортном уровне, что означало, что потеря пакетов сделала ситуацию ... хуже). И вот, Google решил (снова) возглавить мир с помощью QUIC. В итоге это привело к стандартизации HTTP/3, который был построен на основе QUIC без потери существующей семантики HTTP/2.

Облачная среда, микросервисы, HTTP, автоматическое масштабирование, узлы edge - это больше похоже на архитектуру современного крупномасштабного поставщика контента, чем на платформу оператора связи. На самом деле, мы не говорим об эволюции существующих платформ в 5G, мы говорим о полной революции, когда мы, по сути, отбрасываем все телекоммуникационные знания и вместо этого используем новую стороннюю платформу. Хотя это вызовет воодушевление у маркетинговых команд, стремящихся объединить предложения с ТВ, потоковой передачей, рекламой, играми и т.п., это может стать кошмаром при работе с высокой нагрузкой по протоколам, далёким от телекоммуникаций.

Хотя ни у кого нет хрустального шара, чтобы заглянуть в будущее, было много признаков того, что рынку предстоят серьезные изменения. Каждый из этих признаков был простым повторением эволюции рынка после анонса Release-15. Не так давно Microsoft приобрела две давно существующие фирмы, чтобы внедрить компоненты телекоммуникационного стека в свое облако. Есть уверенность, что это просто вопрос времени, когда другие крупные облачные провайдеры заявят о своих преимуществах аналогичным образом. Мы можем наблюдать множество других тактических приобретений, например приобретение гигантом Amdocs компании Opennet, нишевого вендора имеющего при этом критически важный опыт облачных внедрений.

Как быстро Oracle, которая уже много лет смещает акцент на облачный бизнес, дополнит свою линейку решений 5G, чтобы составить конкуренцию Microsoft? Как Amazon и Google смотрят на своих конкурентов и будут ли они просто приглашать лучших в своем классе партнеров (как например делает Nokia) или начнут трансформироваться? Время покажет, но, похоже, у них есть огромное преимущество перед традиционными поставщиками и операторами связи. Почему? Потому что они являются экспертами в таких технологиях, как CI/CD, сквозная оркестровка сервисов, микросервисы на основе контейнеров, zero-latency cold starts serverless решений и многие другие современные концепции горизонтально масштабируемой инфраструктуры. Они вполне неплохо понимают, что нужно делать, чтобы добиться успеха в этом новом мире telecom-as-a-service, они создавали и адаптировали эту самую новую культуру и подходы. А традиционные производители телеком решений в этом смысле находятся в рядах догоняющих и еще не известно сумеют ли выжить, чтобы набрать нужную скорость.

Так каковы же последствия облакофикации мобильного ядра? Будет ли это способствовать быстрому внедрению бизнес-моделей, включающих упомянутые выше технологии? Увеличит ли это износ старых технологий в пользу ядра 5G, которое обрабатывает варианты использования во всех частях корпоративного бизнеса? Пока еще слишком много вопросов, чтобы прогнозировать конкретные результаты, но ясно одно. Скоро грядут серьезные изменения - они будут долгими и глубокими. И нам с вами повезло жить в интересные времена!

Подробнее..

Никто не хочет ждать 5 лет почему разработчикам лучше не анонсировать свои игры слишком рано

17.06.2021 18:06:38 | Автор: admin

Видеоверсия статьи:

10 июня From Software наконец-то показала долгожданный геймплейный трейлер Elden Ring и объявила дату релиза. Если вспомнить, что игру анонсировали 9 июня 2019 года и кроме CGI-трейлера за два года мы не слышали об игре ровным счётом ничего, возникает вопрос: в чём был смысл столь раннего анонса?

Похоже, что такой подход к выпуску ААА-проектов становится нормой. Достаточно хотя бы вспомнить громкие анонсы The Elder Scrolls 6 и Starfield летом 2018 года и последующее гробовое молчание разработчиков по поводу примерной даты релиза и выхода сколь-нибудь вменяемого трейлера. И лишь на презентации состоявшейся 13 июня текущего года Microsoft и Bethesda наконец-то объявили дату релиза Starfield 11 ноября 2022 года, сопроводив анонс, опять же, не очень информативным трейлером.

Вспомним также The Last of Us Part II, которая вышла спустя четыре года после анонса; Days Gone анонсированную в 2016 году и вышедшую лишь в 2019; God of War 2018 года, анонсированную в 2014; S.T.A.L.K.E.R. 2; Fable 4; Beyond Good and Evil 2; ну и, конечно же, Cyberpunk 2077, которую мы ждали целых 7 лет.

Это проекты, которые первыми пришли мне на ум. Уверен, что вы сможете вспомнить и привести ещё десятки аналогичных примеров.

У разработчиков и издателей, конечно, естьпричиныдля ранних анонсов своих проектов.

В первую очередь сюда можно отнести возможность принимать предзаказы на анонсированную игру. Обеспечение игре хороших шансов на стартовые продажи является важным условием её дальнейшего успешного существования. А чем больше времени остаётся до релиза, тем выше шансы издателя на продуманный маркетинг и качественную предпродажную подготовку.

Но, как мы видим, далеко не у всех издателей получается грамотно управлять ожиданиями игроков и выстраивать правильную маркетинговую стратегию на протяжении столь длительного промежутка времени. К тому же предзаказы начинают принимать только после объявления точной даты релиза.

Сейчас предзаказы уже не имеют для игроков особого смысла. Если раньше они были необходимы, чтобы игроки могли гарантированно получить дисковую копию игры в день релиза, то сейчас без проблем можно купить игру в цифре. А если вы играете на Xbox, то можете предзагрузить любую игру даже без оформления предзаказа.

Сегодня очевидно, что предзаказы приносят ощутимую пользу только издателю и разработчику, которые получают возможность заранее оценить спрос и в некоторых случаях начать получать деньги ещё до того, как игра будет готова. К тому же сам факт большого количества предзаказов помогает продвигать игру.

Не стоит забывать, что после анонса создатели имеют возможность получать обратную связь от игроков. И эта возможность не только мотивирует их, но и позволяет корректировать ход дальнейшей разработки, что повышает шансы игры на коммерческий успех.

Ещё одна причина ранних анонсов попытка избежать незапланированных утечек информации об игре, которая может иметь нежелательный, искажённый характер.

Не будем выпускать из вида и такие менее очевидные, но от этого не менее важные причины, как:

Возможность обсуждать свои проекты с друзьями, родственниками и знакомыми за пределами студии;

Упрощение найма талантливых людей в команду;

Налаживание деловых отношений с партнёрами и упрощение взаимодействия с коллегами из индустрии в целом.

Но зачем нам, игрокам, знать об игре задолго до её выхода? Бывали ли у вас случаи, когда долгое ожидание какой-то игры повышало ваш к ней интерес? Как правило, такого не происходит. В реальности: мы видим анонс, испытываем радостное волнение, строим в голове радужные планы на скорый релиз, но из-за последующего долгого ожидания душевно перегораем или обнаруживаем, что очень сильно завысили свои ожидания.

Вместе с тем довольно часто мы сталкиваемся и с противоположной ситуацией, когда из-за большого промежутка времени между анонсом и релизом на нас вываливают слишком много информации, что вполне способно испортить первое впечатление об игре.

И если вы любите игры так же, как и я, то знаете насколько сложно избегать новостей и не смотреть трейлеры по ожидаемой игре. У меня это с трудом получилось сделать всего раз в ожидании Mafia 3.

Которая оказалась очень большим разочарованием...Которая оказалась очень большим разочарованием...

По моему мнению, активная пиар-кампания может погубить игру, завысив ожидание до такой степени, которую разработчики просто не в силах оправдать. Хороший пример Cyberpunk 2077.

Аргумент о том, что той же Bethesda пришлось анонсировать TES 6, дабы успокоить фанатов очень сомнительный. Прошло три года с момента анонса игры и до сих пор о ней не было ни одной новости по существу. А в январе этого года инсайдер, который ранее предсказал выход Half-Life: Alyx,сообщил, что ожидает релиз TES 6 не ранее 2026 года. Если Bethesda хотела успокоить своих фанатов столь ранними анонсами, то не думаю, что у неё это получилось. Скорее это сработало в обратную сторону.

Основной мой посыл состоит в том, что ранние анонсы игр неэффективны. И есть издатели, которые это хорошо понимают и доказывают эффективность противоположной стратегии. Например, такие серии как Battlefield, Call of Duty, Assassin's Creed и Far Cry, как правило, выходят спустя полгода-год после анонса и прекрасно продаются. Вообще, по себе замечаю, что чем короче ожидание анонсированной игры, тем больше удовольствия от неё я, в конечном счёте, получаю.


Подведём итог. Сегодня становится нормой анонсировать игру CGI-трейлером, а потом годами хранить полное молчание. Получается замкнутый круг: с одной стороны, издатели анонсируют игры, чтобы привлечь к ним внимание людей, с другой оказываются не в состоянии последовательно их продвигать и работать с ожиданиями аудитории. В итоге они не только теряют то самое внимание потенциальных игроков, но и вызывают справедливое возмущение у большинства из них.

Подробнее..

Категории

Последние комментарии

  • Имя: Макс
    24.08.2022 | 11:28
    Я разраб в IT компании, работаю на арбитражную команду. Мы работаем с приламы и сайтами, при работе замечаются постоянные баны и лаги. Пацаны посоветовали сервис по анализу исходного кода,https://app Подробнее..
  • Имя: 9055410337
    20.08.2022 | 17:41
    поможем пишите в телеграм Подробнее..
  • Имя: sabbat
    17.08.2022 | 20:42
    Охренеть.. это просто шикарная статья, феноменально круто. Большое спасибо за разбор! Надеюсь как-нибудь с тобой связаться для обсуждений чего-либо) Подробнее..
  • Имя: Мария
    09.08.2022 | 14:44
    Добрый день. Если обладаете такой информацией, то подскажите, пожалуйста, где можно найти много-много материала по Yggdrasil и его уязвимостях для написания диплома? Благодарю. Подробнее..
© 2006-2024, personeltest.ru