Обложка канала

Экстраполяция IT. Страница 11

Канал об IT в целом и о программировании в частности.

  • Экстраполяция IT

    Иногда (а, если честно, почти всегда), очень тяжело остановиться программировать, особенно если очень остановиться надо. Вот сейчас кипит работа одним прототипом, где, казалось бы, хватило бы связанных между собою статических аштээмелек, чтобы посмотреть на работу прототипа и ещё и другим показать. Но вот оказывается, что одни и те же данные показываются на странице, скажем, юзера и на странице заказа. «Зачем же дублировать? Давайте данные в переменные вынесем». Потом оказывается, что юзеры между собой могут быть связанными и, дабы не усложнять себе и без того копипастсткую жизнь, выносим связи в пишем лёгкий и ненавязчивый map. Потом такой же map появляется в соседних страничках, потом счётчики тоже бы неплохо показать настоящие и приходится писать userts.count. И где-то потом становится очень тяжело остановиться. В какой-то момент приходит светлая идея, что если вот эти вот аккуратно оформленные и структурированные YML-файлы сложить в базу в нужные таблички, то станет чуточку проще. И в итоге я не замечаю как прототип превращается в полноценное приложение.
  • Экстраполяция IT

    ​​Противники гибкой методологии и приверженцы подхода «давайте сделаем всё за один раз, но качественно» приводят в пример строительство дома или проектирование автомобиля. Мол, там же смотрите как всё хорошо и делается всё за один раз. Короче, если этого не видно, не значит что этого нет.
  • Экстраполяция IT

    Продолжаем рубрику #экстракибернетика об интеллекте. И в этот раз цитата про язык. Как всегда, лайк и репост для продолжения. «Вообразим себе юношу из первобытного племени Ням-Ням. Назовем его для определенности Уу и проследим, как он выполняет функции разведчика. Уу лежит за толстым старым дубом и неотрывно следит за входом в пещеру на противоположном берегу реки. На восходе солнца сюда подошла группа мужчин из вражеского племени Мань-Мань. Они явно затеяли что-то нехорошее, наверное, оставить в пещере засаду. Они суетятся около пещеры, то входят в нее, то выходят, то исчезают в лесу, то снова возвращаются к пещере. Каждый раз, когда один враг входит в пещеру, Уу загибает один палец, когда один враг выходит из пещеры, он разгибает один палец. Когда враги уйдут, Уу будет знать, оставили ли они засаду и если оставили, то сколько человек. Уу побежит к своему племени и покажет им на пальцах, сколько врагов осталось в пещере. Почему наш герой имеет возможность, не заходя в пещеру, знать в каждый момент времени, сколько там врагов? Потому что с помощью своих пальцев он построил модель интересующей его части внешнего мира. А интересует его пещера и находящиеся в ней враги. Каждому врагу, находящемуся в пещере, соответствует в его модели загнутый палец. Загнутый палец — это имя врага в пещере, враг в пещере — это значение загнутого пальца. Операции над именами — загибание и разгибание пальцев — соответствуют входу и выходу врагов из пещеры. Это — язык. Его можно назвать языком пальцев, если иметь в виду физический материал, из которого построена модель, или языком чисел, если иметь в виду способ сопоставления имен значениям. И этот язык используется не только, а в нашем примере даже не столько для передачи информации, сколько для построения модели, которая нужна именно как модель — средство предвидеть события, средство узнать косвенно то, что нельзя узнать прямо. Если родное племя Ням-Ням далеко, а Уу не собирается никому сообщать, сколько врагов в пещере, он все равно имеет основания считать врагов, сгибая и разгибая пальцы. Это нужно ему самому для планирования своих действий. Коммуникативное использование языка, т. е. использование его как средства общения между людьми, дополняется некоммуникативным использованием языка в качестве средства построения моделей действительности. Тут-то, как говорят англичане, лягушка и прыгает в воду. Моделирующая функция языка — тот самый рубикон, из-за которого мы можем говорить о появлении на земле человека. Когда астроном определяет положение планет на небе, затем производит какие-то манипуляции над цифрами и в результате предсказывает, где будут планеты через заданный промежуток времени, он делает в сущности то же самое, что юноша Уу из племени Ням-Ням, когда он загибает и разгибает пальцы, наблюдая за входом в пещеру. Искусство, философия, наука — все это не что иное, как создание языковых моделей действительности
  • Реклама

  • Экстраполяция IT

    А тем временем у нашего бота для слэка уже больше пятиста инсталляций. Он получился настолько простым и очевидным, что совершенно непонятно как вообще было жить без него. Этим экспериментом мы пытались подтвердить (или опровергнуть, конечно же) несколько предположений. Например, одно из основных заблуждений, что система задач обязательно нужна исполнителю, чтобы правильно выбирать себе задачу на день, но это вообще не так. Система задач нужна тому, кто их ставит («начальнику» или «заказчику», кому как удобнее), чтобы не забывать кому когда ты что поручил 🙂 Или ещё мы предположили, что подавляющее большинство менеджмента сейчас происходит в чате, а не в таск-трекерах. Ну, это когда начальник задаёт кучу наводящих вопросов, уточняет что-то там, а потом в конце такой, «ну, сделаешь же»? Не подумайте неправильно, мы не сомневались, что такое существует. У нас были сомнения в повсеместности такого подхода. Сейчас сомнений нет. Самое забавное, что раньше мы были уверены, что в таск-трекерами совершенно не удобно пользоваться, поэтому ими не пользуются. Общие тормоза, простота интерфейса и всякое такое. А оказывается, таск-трекерами не пользуются (или пользуются из под палки), потому что есть чаты, где сильно удобнее делать всё то, что происходит в таск-трекерах, пусть немного и в хаотичном стиле. И последнее, чем хочется поделиться, так это разрдажающим сообщением «Ну чё, как дела?» от постановщика задачи в том же чате, в котором задача и ставилась. Похоже, от этого никуда не денешься, это можно только автоматизировать 🙂 #экстрапиар

    Message is a Task. Organize your tasks with Slack App without leaving Slack.

    Tasks for Slack
  • Экстраполяция IT

    Удивительно, насколько важную роль в формировании мнения отыгрывают стереотипы. И иногда они возникают по причине того, что желаемое выдаётся за действительное. Недавно вспоминали Эйнштейна, с его прекрасным «Сделай настолько просто, насколько это возможно, но не проще». Это абсурдное по своему смыслу высказывание обычно используют тогда, когда хочется указать на повышенную сложность решения. Типа «Проще можно было, нафига ты усложняешь? Вон, Эйнштейна послушай». Абсурдное оно потому, что намеренного усложнения просто ради самого усложнения никто и никогда не делает. Если вдруг встречается что-то, что с первого взгляда кажется чересчур сложным, то логично предположить, что ты что-то недопонял, раньше требования были другие или кто-то чего-то не знал, когда писал. И да, автор переусложнённого куска делал его настолько просто, насколько это казалось ему возможным и ни в коем случае не проще. А ещё цитата немного неверная. Наверное ошибка в переводе появилась. В оригинале он говорил «Всё следует упрощать до тех пор, пока это возможно, но не более того», что есть просто пересказанной Бритвой Оккама. К слову, Бритву Оккама тоже многие неверно используют. Лайк и репост, если хочешь продолжения рубрики #экстрастереотипы
  • Экстраполяция IT

    Никто не знает какая сингулярность нас ждет. Возможно, человечество никогда не придумает исскусственный интеллект, а просто возьмет количеством фонннеймановского кода. Вполне вероятно, что те абстракции, что сейчас не позволяют подняться на следующую ступень программирования и оперировать сложными макро-командами возьмут верх над квантовыми вычислениями и тщетными попытками смоделировать мозг. Сейчас проходит соревнования роботов, в котором роботам-участникам предлагается много чего такого делать, чего ждут все фантасты. И по скромной оценке экспертов, модели роботов на этом конкурсе года имеют интеллект примерно трехлетнего ребёнка. Да-да, вы ничего не перепутали. Трехлетнего. И, конечно же, такое сравнение просто-напросто спекуляция. Они, конечно, делают все действия, на уровне ребенка, но их интеллект не сравним ни с одним живым существом, потому как они не имеют возможности обучаться и адаптироваться. Тем не менее, одно из возможных сингулярностей будет состоять из множества тьюринг-полных конечных автоматов. Хотя, как представить себе саморазвивающийся конечный автомат понятия не имею. #перечитываяэкстраполяцию
  • Экстраполяция IT

    ​​Если вы собираетесь выполнять проект за один присест, у вас всегда будут проблемы. Лучшее, что можно с ним сделать — это разделить его на 6 этапов, и сложить их в отделы. А когда вы распределите его на 6 этапов, вот тогда можно просить предоплату. Только не надо прятать проект в дальний ящик, чтобы начальника не напугать. А вообще я слышал, что лучший способ - это скормить работу фрилансерам. Фрилансеров надо несколько дней не кормить, а после этого они возьмутся за проект за милую душу. Но для того, чтобы заказ хорошо выполнялся, надо сперва получить ТЗ и скоординировать правки. Конечно, этим можно заняться и потом, но кому охота потом править работу из чистого альтруизма? А проект они выполнят без проблем. Для того, чтобы за раз избавиться от одного задания надо как минимум 16 субподрядчиков, по-этому остерегайтесь владельцев фиктивных компаний. Тендер стоимостью в 20 тысяч фрилансеры сожрут примерно дней за восемь. Это значит, что один фрилансер пишет около 2 строк кода в минуту. Именно отсюда происходит присловие — «выгоревший, как Фрилансер».
  • Экстраполяция IT

    Все побежали и я побежал.

    Через тридцать минут мы будем в сами-знаете-в-чём осваивать разговорный жанр в рамках «Вечернего Лямбда Шоу». Назвали это «Lambda Talk Show #1» и я вообще понятия не имею как это название локализовать. Как оно пойдёт и попрёт ли я тоже не знаю, но надеюсь потом почитать ваши нетоксичные комментарии в чате.

    https://joinclubhouse.com/event/MzE4E11R
  • Экстраполяция IT

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

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

    Само собой, этот способ не будет работать в тех областях, где интервьюер дупля не отстреливает. Например, бренд-маркетолог собеседовать сеньорного программиста на кубернетосах будет крайне неэффективно.
  • Экстраполяция IT

    Тупой начальник.

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

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

    Очень часто разрабочики забывают о том, что код программы пишется для людей, а не для компьютеров. Компьютер в состоянии выполнить код любой запутанности и сложности, а вот человеческий мозг нужно беречь и заботиться о нём. Почти всегда лучше пару раз нажать ctrl+c, ctrl+v и сделать код симметричным и декларативным, чем выписывать мапы и редьюсы с лямбдами.

    Перефразируя Оккама:

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

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

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

    #перечитываяэкстраполяцию
  • Экстраполяция IT

    В эфире новая рубрика «Цитаты из худлита». Источник цитаты — книга, которую я читал, художественная литература. Название оставлять не буду, поиграем в игру такую, где нужно вспомнить произведение по цитате. Только чур не гуглить, а вспоминать из прочитанного. А если не читали, а захотелось, то наверняка найдёте ответ в чатике.

    Итак, история о поврежденном мозге.

    https://telegra.ph/Citata-o-povrezhdenii-mozga-12-22
  • Экстраполяция IT

    Писать понятный код.

    Рано или поздно любому разработчику приходится оценивать чужой код. Хорошие программисты могут интуитивно оценить код, но далеко не всегда аргументированно могут обьяснить почему. И вот тут начинаются определения, вроде «понятный», «интуитивный» или «хороший». Казалось, и хрен бы с ними, но вот такие программисты рано или поздно начинают проводить собеседования или насаждать решения в проекте. И вот тут начинается жопа. Остальные, менее опытные программисты начинают подстраиваться под субъективное качество кода, а собеседования проходят только те, кто смог подстроится под «можно лучше».

    1. Всё, что можно превратить в строгие правила, нужно превращать. Паттерны, линтеры, покрытие тестами, числовые значения — подходит всё, что не зависит от субъективного мнения.

    2. Любая дискуссия о качестве кода должна быть о нарушении правил или о расширении набора правил. «Вот так вот лучше» с куском кода в комментариях к пулл реквесту писать нельзя.

    3. Любую задачу можно решить несколькими способами.
  • Экстраполяция IT

    Писать идеальный код можно только одному или максимум вдвоём. Когда разработчиков много, код пишется без контроля одного сверхразума, который определяет что хорошо и что плохо и поэтому код можно сделать только «приемлемым», а не «идеальным». И важны тут две вещи: научиться жить с приемлемым, а не идеальным кодом и определять приемлемость кода без человеческого фактора.
  • Реклама

  • Экстраполяция IT

    Главное умение исполнителя — умение задавать вопрос «зачем» в ответ на декларативно поставленную задачу.

    Худшее, что может сделать разработчик — сделать то, что его просят и не понимать зачем это нужно.

    Худшее, что может сделать постановщик задачи — ответить «просто сделай и всё».
  • Экстраполяция IT

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

    В общем, ничего не меняется. Как сто лет назад всё было придумано до нас, так и сейчас тоже всё придумано до нас.
  • Экстраполяция IT

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

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

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