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

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

Экстраполяция IT
Программирование
Подписаться

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

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

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

Экстраполяция IT
Программирование
Подписаться
« Есть два подхода к программированию.

«Есть два подхода к программированию. Первый
- сделать программу настолько простой, чтобы в ней очевидно не было ошибок. А второй
- сделать её настолько сложной, чтобы в ней не было очевидных ошибок»

Экстраполяция IT
Программирование
Подписаться
Человечество до сих пор не знает что же такое интеллект.

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

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

В общем, говорить, что один человек умнее другого можно исключительно субъективно, никаких объективных критериев нет.

(лайк, если хочешь ещё об интеллекте)

Экстраполяция IT
Программирование
Подписаться

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


1. Командный дух. Мол, сплотить команду, думать, как один и чувство локтя можно только на расстоянии вытянутой руки друг от друга.


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


3. Производительность. Офис
- место концентрации рабочего процесса и сосредоточиться в офисе намного проще, чем у себя дома с иксбоксом и орущими детьми под рукой.

Остальное всё, как правило вырождается в один из этих пунктов или зависит от них. Например, «контроллировать сотрудников проще в офисе»
- совокупность первого и третьего пунктов, «не нужно тратить время на планирование разговоров, а просто подошёл и спросил»
- совокупность второго и третьего. Ну, и так далее.

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

Экстраполяция IT
Программирование
Подписаться
Зачем на собеседованиях тупые алгоритмические задачки?

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

И тут есть несколько правил.


1. У задачи должно быть больше одного решения. Даже самый умный человек в мире не всегда приходит к решению за короткое время. А если решение всего одно, то ответ «решил/не решил» выдаёт очень много ложноотрицательных результатов. Ещё лучше, если задачу можно решить достаточно большим количеством способов, чтобы сформировать градиент качества решений. Чтобы хоть как-то можно было бы сравнить два разных решения.


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


3. Задача должна быть максимально абстрактна. Это менее очевидно, но тестовые задачи, сформулированные на языке рабочих задач начинают решаться не тестовым способом, а рабочим. «Перебрать юзеров, чтобы отсеять лишних» с помощью чистых алгоритмов пытливым и ленивым мозгом очень быстро решается парочкой запросов в базу данных, а вот «найти числа из последовательности, удовлетворяющие условию» уже достаточно абстрактна, чтобы рефлексы не тянулись к SQL.


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

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

Дано: массив случайных натуральных чисел X в случайном порядке, среди которых могут быть дубликаты. И целое число C.Вопрос: может ли число C быть сформировано суммой двух элементов массива? Другими словами, существуют ли такие i, j, что X[i] + X[j] == C?Ответ нужно только true или false, сами числа знать не обязательно.Если захотите вдруг решить эту задачу
- вот вам специальных гист, чтобы проверить решение.

Экстраполяция IT
Программирование
Подписаться
У меня весьма странный способ познавать и изучать новую информацию.

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

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

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

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

У кого ещё какие способы? Делитесь в чатике.

Экстраполяция IT
Программирование
Подписаться
Как выучить что-то новое?

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

Вывод: хочешь освоить что-то новое, сделай так, чтобы от этого зависело твоё выживание.

Экстраполяция IT
Программирование
Подписаться
Совершенно очевидно, что за работу программиста нужно платить.

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

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

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

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

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

Экстраполяция IT
Программирование
Подписаться

С 0x100 праздником, коллеги!

Экстраполяция IT
Программирование
Подписаться
Одно из самых болезненных занятий в разработке — формулирование самой задачи.

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

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

Пока существуют люди, которые не могут однозначно сформулировать задачу, существуют и программисты. Так-то.

Экстраполяция IT
Программирование
Подписаться

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

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

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

Экстраполяция IT
Программирование
Подписаться

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


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


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


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


4. Некий базовый набор знаний все-таки получить можно, но он настолько фундаментален, что легко учится самостоятельно. Гит, основы юникса, алгоритмизация, немного математики. Плюс ещё некие основы для конкретной профессии. В веб-программировании, например, нужно понимать html, css, http и все такое прочее.


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


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

#экстраакадемия

Экстраполяция IT
Программирование
Подписаться

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

Некоторые такие подсказчики не ставят амбициозных целей и пытаются бить наверняка, подсказывая имена даже новых переменных по первой букве, всякие устоявшиеся конструкции, вроде has_many :projects, если рядом есть класс Project и всякие for i++ конструкции. Это здорово помогает и экономит время.

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

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

Экстраполяция IT
Программирование
Подписаться
Ладно, лето красное пропело и пора в онлайн возвращаться.

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

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

Экстраполяция IT
Программирование
Подписаться

На правах субботы и продолжении творческого поиска написал тут коротенький рассказ «Злодеи». Приятного чтения.

https://telegra.ph/Zlodei-05-15

Рейтинг авторов

  • "Записки Дизайнера" (про дизайн и только про него 157 157 157
  • (Не) только немецкий 157 157 157
  • #анямастерконтента 157 157 157
  • #Фудтех 157 157 157
  • 10 идей и трендов дня 157 157 157
Показать весь рейтинг
Загрузка ...