Затачиваясь же на технические фишки вместо (в жертву) коммуникативных с одной стороны вы рискуете не найти себе работу сразу после форс-мажорного увольнения, но с другой стороны вы становитесь способны на реализацию систем такой сложности и глубины, которая «техлиду» только снится
Всё так. Однако, принося в жертву коммуникативные способности, вы, прежде всего, рискуете тем, что ваши сложные и глубокие системы останутся неоцененными и тот самый форс-мажор получите именно вы.
Взгляните на ситуацию глазами менеджера, в принципе не способного (и не желающего) понимать всю сложность и глубину:
Дима — улыбчив, поддерживает беседу, проводит собеседования, каждую написанную свистосопелку сопровождает презентацией.
Вася — гик, сидит в углу, занимается непонятно чем, уходит от разговора.
допустим, что программист НЕ ДОЛЖЕН обладать сильными софт-скиллами
Если программист не хочет всю жизнь оставаться джуниором — увы, должен. Общение неизбежно. Не с клиентами, так с коллегами и руководством. Этого не надо бояться, этим надо пользоваться.
они там у себя дома сейчас уже строят околосветовой двигатель
Скажите, если вы в пределах одной планеты и одного биологического вида выделяете «мы» и «они» — зачем вам, в принципе, двигаться быстрее скорости света?
Когда мне было лет 5, я открыл для себя, что вот есть электродвигатель, преобразующий электричество в движение, а есть и генератор, который совсем наоборот. Вскоре меня осенило — почему же эти глупые взрослые не поставят их на один вал и не соединят проводами? Получится вечный двигатель (ну или вечная батарейка). Решение лежит на поверхности и только костность и инерционность мышления масс сдерживают прогресс!
Идея не покидала меня некоторое время, однако, я подсознательно чувствовал подвох и так никому ее и не озвучил…
К чему это я?
К тому, что с тех пор я вырос и жить стало скучно.
Читая такие статьи, я иногда завидую людям, каждую осень совершающим открытия, ставящие под сомнение теорию относительности. Им, пожалуй, совсем не скучно.
Возможно, вы сочли этот код простым, очевидным и достаточно безопасным?
Нет, от него глаза кровоточат и воняет за версту.
И где здесь, кстати, C++?
Кликбейтный заголовок настраивает на увлекательное чтиво о настоящих, кровавых багах и темных углах языка и стандартной библиотеки.
Вместо этого имеем кусок С WinAPI-specific кода из 2000 года, случайным образом присыпанный throw, new, vector и т.п., в котором — кто бы мог подумать! — есть баги, 95% которых C & WinAPI-specific.
практически невозможно замаскировать факт выкручивания винтов корпуса, если на них нанести каплю подобного разноцветного ужаса
А зачем кому-то разбирать ваш лаптоп? Это долго, муторно и вряд ли возможно, пока хозяин «отошел за кофе». Куда проще загрузить свою ОС с USB, а про настройку и пароль на BIOS в статье ни слова.
LUKS и VeraCrypt помогут, но сожрут ресурсы CPU и уронят IOPS
Прямо-таки «сожрут и уронят». Даже на устройствах 10-летней давности hardware-accelerated AES — несколько гигабайт в секунду.
очень сложно считывать социальные признаки людей, рассматривая их крохотные изображения на экране
А оно вообще надо?
Основная цель голосового общения — обмен информацией, а не «людей посмотреть, себя показать».
Мы не включаем видео, поэтому ситуаций, когда кого-то раздражает, что кто-то сидит у окна / на фоне ковра / смотрит не туда / небрит / не так одет и т.п. не возникает в принципе.
Не говоря о том, что 95% всех рабочих вопросов можно (и нужно) обсуждать в email.
я, скажем так, критически настроен к шаблонам. Ну, очень уж не глянулся мне когда-то их своеобразный «птичий язык», который, как показалось, сильно затрудняет восприятие кода и понимание алгоритма. [...]
Иное дело Python. Шаблонов в нем пока не заметил и это успокаивает.
Надеюсь, не испорчу вам удовольствие от Python, но там как бы вообще всё — «шаблоны», ибо duck typing.
Проблема как раз в том, что на каждой итерации никто проблемы не видит.
Через 10 итераций у функции 10 параметров по умолчанию, половина из них используется только если, например, первый параметр равен false, другая половина — если первый параметр равен true, а третий — 42. Новые параметры, естественно, добавляются в конец (чтобы не менять существующий код), даже если они используются куда чаще существующих. В результате, чтобы указать этот последний параметр, надо указать и все остальные, при этом см. выше — понять по сигнатуре, что там происходит, уже невозможно. В коде тут и там появляются шедевры вида function(false, true, false, false, false, true, true, true, false). В один прекрасный день кто-то забывает явно указать последний параметр в паре мест, но все компилируется и даже вроде бы работает, а через пару лет вы тщетно пытаетесь понять, что давно уволившийся автор хотел этим сказать.
Если не прорыв, то ради чего в статье подана история, достойная Голливуда? — «у компании стоимостью в триллионы долларов уходят месяцы длительной переписки, чтобы организовать слияние с AppGet, соглашения, личные встречи и собеседования в Редмонде, торги, бонусы, планирование переноса огромной кодовой базы (700 кб — это вам не шутки!), визит в штаб-квартиру в Сиэтле, переговоры, опять собеседования, все складывается хорошо, но что-то идет не так, дополнительно вмешивается коронавирус и только героическими усилиями Эндрю проект спасен, завтра прямой эфир на Build 2020!» Экранизацию можно разбавить партией в гольф, диалогами на крыше небоскреба, гонками на суперкарах по ночному городу, перестрелками и взрывающимся вертолетом. В главной роли Дуэйн Джонсон.
Вам показали версию 0.1, в планах к релизу первой версии uninstall и update будут в нем, это у них есть на гитхабе в роадмапе
От компании стоимостью в триллионы долларов в прямом эфире на Build 2020 как-то ожидаешь чего-то большего, чем wget со свистелками.
То, что делает Microsoft, называется культ карго: «в убунте ставят софт, набирая 'install' в терминале, и все говорят, что это круто, значит и у нас будет команда 'install' в терминале и мы тоже будем крутые». Но пакетный менеджер — он, внезапно, не про консоль, он про пакеты. Про то, что ПО устанавливается и удаляется централизованно и унифицированно, что управление зависимостями — автоматическое, и вы не получите dll hell, что у вас в системе не останется мусора и т.д. и т.п.
Ничего этого winget не предоставляет и вряд ли когда-либо будет.
Уже который день из каждого утюга доносится «Microsoft выпустила достойный менеджер пакетов», однако, может ли кто-то пояснить на пальцах, что же там такого достойного?
Удаления нет, зависимостей нет, пакетов (в привычном понимании этого слова) нет.
Есть поиск в бд и запуск по url точно того же самого exe/msi инсталлятора, который вы можете скачать и запустить руками, но теперь банановый с проверкой контрольной суммы и… всё.
Я видел проект, несколько лет разрабатываемый по принципу «работает — не трожь» или «патч должен быть минимальным».
— Код встречается в 20 разных местах? Нет, в функцию выносить не надо, правь все 20 мест как есть.
— Надо добавить параметр в функцию? Дай ему значение по умолчанию, чтобы не править все вызовы, даже если оно там бессмысленно.
— Код зависит от глобальных переменных? Нет, не надо ничего переделывать, просто добавь еще одну. Тестов у нас все равно нет.
— Что-то больше не используется? Ну и что, пусть будет. В крайнем случае закомментируй.
И так далее и тому подобное, повторенное многократно.
В результате получается прекрасная, компактная история в контроле версий, где все по делу.
Правда, непосредственно код при этом почему-то превращается в спагетти, правка багов требует медитации и телепатических способностей, а от предложений новых фич случается нервный смех и дергается глаз.
noexcept выше по стеку навешивать не надо. Никто и не предлагает, вообще-то
Как же никто не предлагает? Автор вон прямым текстом рекомендует «ставьте noexcept везде». А «везде» — это таки везде, в том числе и выше по стеку.
Поинт как раз в том, что возводить в абсолют не стоит, стоит думать, в том числе и о возможных последствиях.
Всё так. Однако, принося в жертву коммуникативные способности, вы, прежде всего, рискуете тем, что ваши сложные и глубокие системы останутся неоцененными и тот самый форс-мажор получите именно вы.
Взгляните на ситуацию глазами менеджера, в принципе не способного (и не желающего) понимать всю сложность и глубину:
Потом, возможно, все рухнет и окажется, что на Васе висела половина организации, но это потом.
Менеджеров, способных понять гика — слишком мало.
Идея не покидала меня некоторое время, однако, я подсознательно чувствовал подвох и так никому ее и не озвучил…
К чему это я?
К тому, что с тех пор я вырос и жить стало скучно.
Читая такие статьи, я иногда завидую людям, каждую осень совершающим открытия, ставящие под сомнение теорию относительности. Им, пожалуй, совсем не скучно.
Нет, от него глаза кровоточат и воняет за версту.
И где здесь, кстати, C++?
Кликбейтный заголовок настраивает на увлекательное чтиво о настоящих, кровавых багах и темных углах языка и стандартной библиотеки.
Вместо этого имеем кусок С WinAPI-specific кода из 2000 года, случайным образом присыпанный throw, new, vector и т.п., в котором — кто бы мог подумать! — есть баги, 95% которых C & WinAPI-specific.
Прямо-таки «сожрут и уронят». Даже на устройствах 10-летней давности hardware-accelerated AES — несколько гигабайт в секунду.
А оно вообще надо?
Основная цель голосового общения — обмен информацией, а не «людей посмотреть, себя показать».
Мы не включаем видео, поэтому ситуаций, когда кого-то раздражает, что кто-то сидит у окна / на фоне ковра / смотрит не туда / небрит / не так одет и т.п. не возникает в принципе.
Не говоря о том, что 95% всех рабочих вопросов можно (и нужно) обсуждать в email.
Сайт почему-то недоступен, ссылка на архив.
Надеюсь, не испорчу вам удовольствие от Python, но там как бы вообще всё — «шаблоны», ибо duck typing.
Nothing someone says before the word «but» really counts
Через 10 итераций у функции 10 параметров по умолчанию, половина из них используется только если, например, первый параметр равен false, другая половина — если первый параметр равен true, а третий — 42. Новые параметры, естественно, добавляются в конец (чтобы не менять существующий код), даже если они используются куда чаще существующих. В результате, чтобы указать этот последний параметр, надо указать и все остальные, при этом см. выше — понять по сигнатуре, что там происходит, уже невозможно. В коде тут и там появляются шедевры вида function(false, true, false, false, false, true, true, true, false). В один прекрасный день кто-то забывает явно указать последний параметр в паре мест, но все компилируется и даже вроде бы работает, а через пару лет вы тщетно пытаетесь понять, что давно уволившийся автор хотел этим сказать.
Действительно?
От компании стоимостью в триллионы долларов в прямом эфире на Build 2020 как-то ожидаешь чего-то большего, чем wget со свистелками.
То, что делает Microsoft, называется культ карго: «в убунте ставят софт, набирая 'install' в терминале, и все говорят, что это круто, значит и у нас будет команда 'install' в терминале и мы тоже будем крутые». Но пакетный менеджер — он, внезапно, не про консоль, он про пакеты. Про то, что ПО устанавливается и удаляется централизованно и унифицированно, что управление зависимостями — автоматическое, и вы не получите dll hell, что у вас в системе не останется мусора и т.д. и т.п.
Ничего этого winget не предоставляет и вряд ли когда-либо будет.
Удаления нет, зависимостей нет, пакетов (в привычном понимании этого слова) нет.
Есть поиск в бд и запуск по url точно того же самого exe/msi инсталлятора, который вы можете скачать и запустить руками, но теперь
банановыйс проверкой контрольной суммы и… всё.Где прорыв?
— Код встречается в 20 разных местах? Нет, в функцию выносить не надо, правь все 20 мест как есть.
— Надо добавить параметр в функцию? Дай ему значение по умолчанию, чтобы не править все вызовы, даже если оно там бессмысленно.
— Код зависит от глобальных переменных? Нет, не надо ничего переделывать, просто добавь еще одну. Тестов у нас все равно нет.
— Что-то больше не используется? Ну и что, пусть будет. В крайнем случае закомментируй.
И так далее и тому подобное, повторенное многократно.
В результате получается прекрасная, компактная история в контроле версий, где все по делу.
Правда, непосредственно код при этом почему-то превращается в спагетти, правка багов требует медитации и телепатических способностей, а от предложений новых фич случается нервный смех и дергается глаз.
Как же никто не предлагает? Автор вон прямым текстом рекомендует «ставьте noexcept везде». А «везде» — это таки везде, в том числе и выше по стеку.
Поинт как раз в том, что возводить в абсолют не стоит, стоит думать, в том числе и о возможных последствиях.