Pull to refresh
-1
0
Send message

Зачем Программисту Микроконтроллеров Линейная Алгебра (или Как Найти Угол Между Векторами?)

Level of difficultyEasy
Reading time7 min
Views9K

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

Это всяческие встраиваемые системы, где есть подвижные, вращающиеся детали: PTZ камеры, поворотные платформы для радаров, турели, ветрогенераторы, солнечные панели, SDR обработка и прочее.

В данном тексте я приведу простое и понятное решение задачи вычисления угла между векторами на языке программирования Си.

Читать далее
Total votes 18: ↑18.5 and ↓-0.5+19
Comments104

Иногда лучше делать, а не планировать

Level of difficultyEasy
Reading time7 min
Views43K

Пожилой рабочий на строительстве «Эмпайр-стейт-билдинг» в 1930 г., источник. Вся стройка от подготовки стройплощадки до торжественного запуска лифтов заняла 410 дней

В последнее время часто приходится слышать про новую модель управления — избыток административных кадров, не имеющих отношения к основному производству. К сожалению, это особенно ярко проявляется в IT-индустрии, где количество менеджеров среднего звена сильно превышает стандартные показатели. Например, в компании Google доля менеджеров уже достигла 15% от общей численности персонала, то есть по одному менеджеру на пять-шесть работников. Это заметно превышает средний показатель в сфере услуг 1 к 15.

Избыток менеджеров в компании ведёт к негативным последствиям:

  • засилье KPI с последующей деградацией продукта, которое по менеджерской логике должно увеличивать DAU;
  • деградация корпоративной культуры из-за офисных интриг и карьеризма;
  • снижение продуктивности разработчиков из-за бесконечных совещаний, созвонов, отчётности и использования ПО для «повышения эффективности» (таск-трекеры, тайм-трекеры, календари и проч.);
  • цифровое истощение и выгорание сотрудников.

Это стандартные издержки от переизбытка менеджеров. Иногда даже единственный менеджер приносит больше вреда, чем пользы.
Читать дальше →
Total votes 186: ↑175 and ↓11+164
Comments103

Профессия «компьютер»

Reading time9 min
Views4.4K

Сложно представить, что 70–150 лет назад приходилось прокладывать маршруты, вести бухгалтерию, производить сложные вычисления (а каких-то 60 лет назад уже и запускать в космос людей), без использования компьютеров. Так как же решались задачи, выполнение которых сегодня невозможно представить без использования современных технологий?

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

На иллюстрации: компьютер XV века по версии Midjourney.

Читать далее
Total votes 19: ↑17 and ↓2+15
Comments11

Как организовать систему оплаты в компаниях, занимающихся разработкой

Level of difficultyMedium
Reading time16 min
Views6.3K

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

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

Не платите за то, сколько людей под руководством или сколько строк кода они написали. Платите им за генерируемые результаты.

Эта философия сильна и наделяет свободой. Неважно, если вы сотрудник, вносящий индивидуальный вклад (individual contributor, IC), занимаетесь техническим руководством или управлением командой. Важно то, насколько ваш вклад влияет на прибыль бизнеса.

В этом посте предлагается многоуровневая система, которую можно применять к IC, техническим руководителям и руководителям команд.
Читать дальше →
Total votes 50: ↑46 and ↓4+42
Comments7

Программисты всё вымирают и вымирают

Level of difficultyEasy
Reading time18 min
Views124K

Да вымереть не могут.

Откуда это всё пошло? Чем так условные «программисты» не угодили? И почему именно программисты?

Читать далее
Total votes 397: ↑385 and ↓12+373
Comments583

Как повысить эффективность коммуникаций в команде: находим верные аргументы

Reading time6 min
Views2.4K

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

О том, как их развить, рассказываем под катом.

Читать далее
Total votes 18: ↑17 and ↓1+16
Comments0

Почему ваш проект тонет или как начать фиксировать требования, когда у вас ничего нет

Level of difficultyMedium
Reading time10 min
Views8.9K

В какой-то определенный момент после старта нового проекта, когда «временный» MVP почти готов, весь интересный код уже написан, пакеты еще свежие и обновляются, команды начинают замедляться в Time to Market.

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

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

И вот мы здесь, с молодым, но уже «легаси» проектом, никто не понимает, как он работает, и нет места, где можно почитать требования, чтобы не отвлекать коллег.

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

Давайте разбираться
Total votes 21: ↑19 and ↓2+17
Comments26

Есть проблема? Нет проблем. Инструменты принятия решений

Level of difficultyEasy
Reading time7 min
Views8.7K

Привет, Хабр! Меня зовут Ирина Ремизова, я куратор департамента системного анализа Sportmaster Lab, где, собственно, и курирую системных аналитиков, развивая их и рассказывая про инструменты принятия решений.

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

Начнём мы с ББМ. Это аббревиатура из трех слов, которая представляет собой три реакции человека при принятии решения. Боль (приобретение или потеря), боязнь сделать неправильное решение (верно или неверно) и муки (а что было бы, если…).

Почему бывает так трудно? 

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

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

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

Читать далее
Total votes 36: ↑31 and ↓5+26
Comments9

Waterfall, Agile, Scrumban — плюсы и минусы, или Что не так с эталонными подходами к разработке

Reading time12 min
Views14K

Сегодня в методах разработки ПО исключения не подтверждают, а скорее заменяют правила. Чистокровный Аgile днем с огнем не сыщешь ни в одной компании. Зато плодятся разные гибридные методологии. Некоторые проджекты задаются совсем уж крамольным вопросом: зачем нужны эталонные системы, если на практике все работают по-разному?

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

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

Читать далее
Total votes 38: ↑36 and ↓2+34
Comments38

Программирование и мораль, или причем здесь атомная бомба

Reading time9 min
Views8.3K

Часто приходится слышать: наука вне политики, наука вне идеологии, потому наука никак с моралью не связана, и рассматривать вопросы морали или политики в науке – это попросту глупо. Действительно, на первый взгляд, так и есть. Если, к примеру, я – клеточный биолог, то какая связь между тем, за кого я голосую на выборах, и тем, что я исследую в микроскоп? Разве может быть хоть какая-то связь? Любому же понятно, что нет….

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

Я хотел бы рассмотреть один красочный пример из истории 80-летней давности. Он касается гиков того времени, «красноглазиков» 30-40-х годов 20-го века, – квантовых физиков. Они во многом, как и мы, современные программисты-исследователи из мира IT, не сильно заботились вопросами того, какие последствия принесут их исследования и наработки: положительные или отрицательные, а если отрицательные, то насколько.

Между ними тогдашними и нами сегодняшними очень много общего: и в психологии, и в месте в обществе, и в отношении к исследованиям, и даже в такой, казалось бы, мелочи, как пренебрежение изучением общественных дисциплин. Смотря на 80 лет назад, в них я вижу себя и людей, которые меня окружают в программистском и исследовательском сообществе здесь и сейчас. Они создали атомную бомбу – совершенное и смертоноснейшее оружие. Причем практически не задумываясь о последствиях. А что создаем прямо сейчас мы?

Читать далее
Total votes 71: ↑46 and ↓25+21
Comments574

Размышления о мире. Часть 1: Панкомпьютационализм

Level of difficultyEasy
Reading time10 min
Views7.2K

Отбросьте невозможное — и то, что останется, каким бы невероятным оно ни казалось, должно быть истиной
"Знак четырех", Артур Конан Дойл

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

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

Читать далее
Total votes 18: ↑13 and ↓5+8
Comments37

История студии Remedy. Судьба под контролем

Level of difficultyEasy
Reading time17 min
Views5.1K
image

Расставание с крупным издателем, потеря прав на своё главное детище, а именно Alan Wake, прощание с большими бюджетами на разработку – для многих игровых студий подобные обстоятельства были бы равны гвоздям в крышку гроба. Для многих, но не для студии Remedy.

Они не просто не отчаялись после разрыва отношений с Microsoft, но были рады данному событию. Ведь они вновь свободны, вольны прокладывать себе путь самостоятельно, без советов и наставлений «умных» дядек в пиджаках. Каковы были испытания на пути финнов и чего они достигли на этом этапе – сегодня и обсудим.
Читать дальше →
Total votes 37: ↑34 and ↓3+31
Comments21

Георгий и хлебная фабрика

Level of difficultyEasy
Reading time7 min
Views14K

«Мужики! Я вам запрещаю выпускать меньше 200 тонн хлеба в сутки», — примерно это 92 года назад заявил Георгий Марсаков, и перевернул игру, создав инженерное чудо. Что же такого он придумал?

Давайте разбираться.

Читать далее
Total votes 92: ↑89 and ↓3+86
Comments87

О глупости «программирования на естественном языке»

Reading time4 min
Views22K

От переводчиков. Хотя Эдсгер Дейкстра — одна из главных личностей в истории IT, эта его коротенькая публикация ранее не попадала на Хабр, да и сами мы узнали о ней лишь благодаря докладу на нашей конференции. Но при этом она выглядит очень любопытным документом эпохи, показывая, что ещё несколько десятилетий назад люди думали о перспективе писать программы на «обычном языке». Поэтому мы решили восполнить пробел и перевести.

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

Читать далее
Total votes 68: ↑65 and ↓3+62
Comments66

Здравствуйте, я ваша тетя

Level of difficultyMedium
Reading time9 min
Views6.4K

«В начале сотворил Бог небо и землю. Земля же была безвидна и пуста, и тьма над бездною, и Дух Божий носился над водою. И сказал Бог: да будет свет!»
Читать дальше →
Total votes 55: ↑51 and ↓4+47
Comments28

Приходите к нам на завод, у нас тяжело

Reading time10 min
Views137K
Короче, ИТ на заводе — это вам не романтика, особенно в нашем цифровом направлении.

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

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

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

Вот, к примеру, видеоаналитика:

  • Мы поняли, что ML в 50% задач не нужны. Нужна, например, камера, которая по цвету определяет, где есть железка, и смотрит её геометрию в реальности. Всё. Или другая камера, которая следит, чтобы в нужной зоне ничего не шевелилось.
  • Всё это прекрасно до первого солнечного зайчика. ML отлично показывают себя там, где вам лень строить крышу или ставить прожектор над конвейером.
  • У нас была идея, что мы можем сами в нейросети. Чуть не написали свой сервис для распознавания номеров вагонов. Казалось, делов-то на 20 минут, а у подрядчика это стоит 25 копеек за фото. Сделали свой, сферические вагоны в вакууме он определял хорошо. Потом приехало вот это:

image

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

Мы накалывались на получении данных (кто сказал, что прошивка станка без костылей?), на роботизации, инфраструктуре, связи, на всём. Мы облазили весь завод, испачкались в солидоле, мазуте и масле. Но стали делать то, что должны, — оптимизировать мир.
Читать дальше →
Total votes 276: ↑272 and ↓4+268
Comments278

Как выжать максимум из Confluence. Глава первая

Level of difficultyEasy
Reading time10 min
Views24K

Привет, Хабр! Я Ульяна, старший аналитик в направлении продуктового и системного анализа в отделе Tinkoff Mobile Core. Наш отдел разрабатывает общие технические решения — библиотеки, которые используются в мобильных приложениях экосистемы Тинькофф.

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

Документацию мы ведем в Confluence — и обычно, когда я рассказываю про Confluence, у многих он вызывает, мягко говоря, неприятные ассоциации. Миллион разделов, неудобная навигация, портянки бесконечного текста и многое другое, что отбивает желание даже открывать любую wiki. Но я спешу вас обрадовать — все может быть совсем иначе!

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

Читать далее
Total votes 21: ↑19 and ↓2+17
Comments11

Полный цикл создания устройства и работа с фабриками в Китае

Reading time11 min
Views20K
Меня зовут Андрей Холодный. Весь мой опыт связан с телекомом: я работал практически во всех крупных провайдерах связи и даже руководил своим стартапом. На моих проектах регулярно возникали задачи разработки и выбора поставщиков роутеров и ТВ-приставок. С конца 2018 года я применяю этот опыт в Яндексе: руковожу командой, которая координирует разработку и производство устройств с Алисой.



Под катом — конспект моего недавнего доклада. В нем два больших блока: про этапы разработки устройства и про общение с фабриками в Китае. Надеюсь, конспект будет полезен тем, кто начинает думать о производстве собственных устройств.
Читать дальше →
Total votes 48: ↑45 and ↓3+42
Comments17

Стань героем мемов! Делаем гифки со своим лицом с помощью нейросетей

Level of difficultyMedium
Reading time5 min
Views16K

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

Читать далее
Total votes 32: ↑29 and ↓3+26
Comments6

Проектирование отказоустойчивости IT-систем

Reading time11 min
Views19K

❓Как проектировать системы, которые будут толерантными для различного вида отказов и ошибок?

Что такое отказоустойчивость и стабильность?

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

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

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

Читать далее
Total votes 23: ↑22 and ↓1+21
Comments16
1
23 ...

Information

Rating
Does not participate
Registered
Activity