Сермяга в том, что темки моей Школы легко понимаются на уровне средних курсов хорошего университета, хотя их выпускники "без опыта" почему-то считаются джунами наравне с самоучками, хотя то, что они знают и умеют, обычно бывает мало понятно и многим миддлам (а то и сеньорам), вошедшим в ИТ без высшего образования, которые дальше своего веб-фреймворка ничего не видят и не хочут понимать :) Знание фреймворков и библиотек -- это дешёвка; покажите мне вашу реальную программистскую ценность, которая только приумножается с течением времени.
Например, функциональное программирование вообще не требует сложного обучения... если только вы не пришли к нему с тяжким наследием ООП и не ожидаете, что в ФП всё будет так же, как и то, что вы уже "знаете".
Печально, но Java/C#/Python... в мэйнстриме практически всегда используются как процедурные языки с анемичными моделями данных, оркестрируемыми "богоподобными" сервисами...
Например, функциональное программирование вообще не требует сложного обучения... если только вы не пришли к нему с тяжким наследием ООП и не ожидаете, что в ФП всё будет так же, как и то, что вы уже "знаете".
Печально, но Java/C#/Python... в мэйнстриме практически всегда используются как процедурные языки с анемичными моделями данных, оркестрируемыми "богоподобными" сервисами...
👍54🤔16❤6❤🔥5🫡2
Вот поэтому я всегда отговаривал, отговариваю и буду отговаривать от роста в тимлиды/ит-менеджеры/... Вы прокачали классное множество дорогостоящих технических скиллов под интраверта, и вдруг переходите в полностью экстравертированный "менеджерский" стек с нуля, где ничего не умеете, надо с этими капризными противными программистами возиться, текучка оперативка сжирает всё время, сотни писем в день... Зачем это вам?
Более того, на курсе карьеры выкладывал даже "Почему быть критически важным членом команды -- это плохо?".
Ну и, конечно, всегда лучше быть тем, кого стараются схантить, чем тем, кто за этим всем мучительно следит. Только имейте в виду, начальство всегда ищет, на кого бы им сгрузить эту муторную тимлидскую работу, и если вы сеньор, то 98% что уже кандидат. Красный звоночек, когда вас попросят "подменить тим/техлида пока он в отпуске". Это значит, вы не изучили материал по карьере "Как зарабатывать больше, не переходя в менеджеры/тимлиды/...", и дела ваши плохи :)
Вспомнилось в тему: когда гениального Андерса Хейлсберга (автор TurboPascal и Delphi) микрософт переманивала, обещая ему миллионные зарплаты, то демонстративно присылала Мерседес за ним прямо к офису Борланда :)
В целом, выиграл весь мир (получились не менее великолепные C# .NET и TypeScript), кроме конечно Borland.
Будь как Хейлсберг!
Более того, на курсе карьеры выкладывал даже "Почему быть критически важным членом команды -- это плохо?".
Ну и, конечно, всегда лучше быть тем, кого стараются схантить, чем тем, кто за этим всем мучительно следит. Только имейте в виду, начальство всегда ищет, на кого бы им сгрузить эту муторную тимлидскую работу, и если вы сеньор, то 98% что уже кандидат. Красный звоночек, когда вас попросят "подменить тим/техлида пока он в отпуске". Это значит, вы не изучили материал по карьере "Как зарабатывать больше, не переходя в менеджеры/тимлиды/...", и дела ваши плохи :)
Вспомнилось в тему: когда гениального Андерса Хейлсберга (автор TurboPascal и Delphi) микрософт переманивала, обещая ему миллионные зарплаты, то демонстративно присылала Мерседес за ним прямо к офису Борланда :)
В целом, выиграл весь мир (получились не менее великолепные C# .NET и TypeScript), кроме конечно Borland.
Будь как Хейлсберг!
👍63💯11❤5✍3🔥1
Хм: "Ranking Functional Programming Languages"
На самом деле это всё одно:
Elm -- это OCaml для детишек.
Haskell -- это ленивый OCaml.
Scala -- это мучительный OCaml :)
Gleam -- это отлакированный OCaml.
F# -- это корпоративный OCaml.
+
Swift -- это хипстерский OCaml.
Rust -- это системный OCaml.
TypeScript -- это веб-OCaml.
SML -- OCaml для бумеров.
Coq -- OCaml для нердов.
Просто выучите OCaml
На самом деле это всё одно:
Elm -- это OCaml для детишек.
Haskell -- это ленивый OCaml.
Scala -- это мучительный OCaml :)
Gleam -- это отлакированный OCaml.
F# -- это корпоративный OCaml.
+
Swift -- это хипстерский OCaml.
Rust -- это системный OCaml.
TypeScript -- это веб-OCaml.
SML -- OCaml для бумеров.
Coq -- OCaml для нердов.
Просто выучите OCaml
✍57😁17🫡9👍6❤3
Философский коан. Смартфон -- это ...
Anonymous Poll
14%
(is a) наследник от Компьютер (но что с Телефоном?)
58%
(has a) композиция Компьютер с Телефоном (или наоборот?)
28%
класс + два интерфейса (копипастить их реализации в разных классах?)
👍40🤔4❤3
Forwarded from воспоминания математиков
У Кузьмина была книжная полка и была лестница, по которой он лазил за книгами. На верхнем этаже среди этих книг стояла водка, он залезал наверх, добирался до водки, напивался, делал математические теоремы, а когда он уставал, он опять залезал по лестнице. И так весь день, до тех пор, пока у него хватало сил залезть доверху не упавши.
Таким методом Кузьмин доказал формулу Гаусса, которая с тех пор называется формула Гаусса-Кузьмина. Но потом он еще решил, что Гаусс все-таки давно жил, а вот есть проблемы Гильберта — и надо хоть одну решить. И он решил такую проблему Гильберта: будет ли число два в степени корня из двух алгебраическим или трансцендентным — то есть существует ли уравнение с целыми коэффициентами которому удовлетворяет это число.
Над этой задачей очень долго бился один генерал, из КГБ, который занимался криптографией в Москве. Это был главный начальник криптографической службы советского союза в военно-морском флоте — Александр Осипович Гельфонд. Он бился над ней несколько лет и смог доказать, что два в степени корень из минус двух — не алгебраическое число. Однако это не проблема Гильберта — это комплексное число, совсем другое. Он думал несколько лет над этой проблемой и у него ничего не получалось, он мне говорил, что совершенно отчаялся, думал, что это никогда не выйдет.
И тут появился Кузьмин, который, использовав свою лестницу, а также работу Гельфонда, понял, что к ней надо добавить, тем самым решив проблему Гильберта.
воспоминания В.И. Арнольда (из лекции «Об истории обобщенных функций»)
Таким методом Кузьмин доказал формулу Гаусса, которая с тех пор называется формула Гаусса-Кузьмина. Но потом он еще решил, что Гаусс все-таки давно жил, а вот есть проблемы Гильберта — и надо хоть одну решить. И он решил такую проблему Гильберта: будет ли число два в степени корня из двух алгебраическим или трансцендентным — то есть существует ли уравнение с целыми коэффициентами которому удовлетворяет это число.
Над этой задачей очень долго бился один генерал, из КГБ, который занимался криптографией в Москве. Это был главный начальник криптографической службы советского союза в военно-морском флоте — Александр Осипович Гельфонд. Он бился над ней несколько лет и смог доказать, что два в степени корень из минус двух — не алгебраическое число. Однако это не проблема Гильберта — это комплексное число, совсем другое. Он думал несколько лет над этой проблемой и у него ничего не получалось, он мне говорил, что совершенно отчаялся, думал, что это никогда не выйдет.
И тут появился Кузьмин, который, использовав свою лестницу, а также работу Гельфонда, понял, что к ней надо добавить, тем самым решив проблему Гильберта.
воспоминания В.И. Арнольда (из лекции «Об истории обобщенных функций»)
😁53🤔16❤9✍4👍4
Прекрасное, про рынок труда в Узбекистане:
- все банки и ритейл говорят, что нехватка КАЧЕСТВЕННОГО персонала более 60 процентов и это очень замедляет развитие
- при этом на каждую позицию тысячи откликов, но люди не проходят собеседование: крайне низкая квалификация и неумение быстро учиться
- очень низкая лояльность к любой компании: люди уходят в один день, если где-то аооьещаои зарплату на 100 долларов больше. Вопросы интересности проектов и своей репутации не останавливают от перехода
- экспатов все меньше и они все дороже.
Очень надеюсь, что и в русской айтишке скоро будет так же.
Хочите лояльности? Платите в джва раза больше. За деньги -- да.
Будь как узбеки!
- все банки и ритейл говорят, что нехватка КАЧЕСТВЕННОГО персонала более 60 процентов и это очень замедляет развитие
- при этом на каждую позицию тысячи откликов, но люди не проходят собеседование: крайне низкая квалификация и неумение быстро учиться
- очень низкая лояльность к любой компании: люди уходят в один день, если где-то аооьещаои зарплату на 100 долларов больше. Вопросы интересности проектов и своей репутации не останавливают от перехода
- экспатов все меньше и они все дороже.
Очень надеюсь, что и в русской айтишке скоро будет так же.
Хочите лояльности? Платите в джва раза больше. За деньги -- да.
Будь как узбеки!
🤝60😁22❤10👍6🤔4
Из очередных отчётов курсантов:
"Даже на фулл-тайме умудрился себе устроить полное погружение в курс
Сегодня ночью приснилось, что Сергей Игоревич называет мой код попыткой его троллить. а так же просит переделать код с использованием технологий, названных неизвестными аббревиатурами
Во сне прямо панику почувствовал"
(после занятия по vim :)
не-не, ну я с большим пониманием и доброжелательностью отношусь к начинающим :)
Кстати, если снятся неизвестные аббревиатуры, постарайтесь их запомнить, а потом погуглите: вас могут ждать интересные открытия :)
- Я осознанно вывела цифры с 0. Вывод проверила. Как я увидела, что нужно выводить с 0 до 10 объяснить не могу.
-- Самое тяжёлое задание за всё время обучения в школе. Я всё ещё не доволен тем, что получилось и при этом не понимаю, как я мог бы сделать его лучше.
-- Первый случай, который я вспомнил не просто краевой, а откровенно идиотский. Не так давно мне подчиненный программист приносит код и бэкенда портала, где по таблице пользователей в цикле проходят и что-то с чем то сверяют. Я сначала глазам не поверил, ну неужели мы вытаскиваем всех пользователей и что то проверяем в цикле?
да, черт возьми; программист тоже принес мне это посмотреть, потому что засомневался в своем здравомыслии и зрении.
Короче говоря, оказалось что это было "by design", ибо, почти цитирую - "мы так когда то сделали, потому что у нас портал один, а на одну и ту же почту должно быть возможно иметь аккаунты принадлежащие к разным организациям".Как решили? Ну, отлепили руки от лица через пару часов удивления, выполнили небольшую денормализацию в базе, и все таки сделали уникальный индекс по почте, так как это и должно было быть изначально.
-- Example 4 - документ может быть загружен с 3-мя разными состояниями, Pending, Error, Success.
Здесь нарушаем принцип LSP, поскольку приводим конкретную реализацию к заранее известному типу.
Верное решение - сделать метод обработки конкретного запроса на документ, в конкретном типе И использовать реализацию интерфейса, а не наследование.
Итого
1) Пойду перечитывать типы наследования из курсов по ООАП :)
-- Теперь понимаю,почему вы так за паттерн ... - когда даже на микроуровне убираются так элегантно ифы за счет ad hoc полиморфизма,хочется плакать от счастья… Очень классный материал!!
-- Третья неделя идёт, коллеги отмечают мой затравленный и озлобленный взгляд, а мне просто не нравится, что поток задач ворует у меня темпы развития в выбранном направлении.
"Даже на фулл-тайме умудрился себе устроить полное погружение в курс
Сегодня ночью приснилось, что Сергей Игоревич называет мой код попыткой его троллить. а так же просит переделать код с использованием технологий, названных неизвестными аббревиатурами
Во сне прямо панику почувствовал"
(после занятия по vim :)
не-не, ну я с большим пониманием и доброжелательностью отношусь к начинающим :)
Кстати, если снятся неизвестные аббревиатуры, постарайтесь их запомнить, а потом погуглите: вас могут ждать интересные открытия :)
- Я осознанно вывела цифры с 0. Вывод проверила. Как я увидела, что нужно выводить с 0 до 10 объяснить не могу.
-- Самое тяжёлое задание за всё время обучения в школе. Я всё ещё не доволен тем, что получилось и при этом не понимаю, как я мог бы сделать его лучше.
-- Первый случай, который я вспомнил не просто краевой, а откровенно идиотский. Не так давно мне подчиненный программист приносит код и бэкенда портала, где по таблице пользователей в цикле проходят и что-то с чем то сверяют. Я сначала глазам не поверил, ну неужели мы вытаскиваем всех пользователей и что то проверяем в цикле?
да, черт возьми; программист тоже принес мне это посмотреть, потому что засомневался в своем здравомыслии и зрении.
Короче говоря, оказалось что это было "by design", ибо, почти цитирую - "мы так когда то сделали, потому что у нас портал один, а на одну и ту же почту должно быть возможно иметь аккаунты принадлежащие к разным организациям".Как решили? Ну, отлепили руки от лица через пару часов удивления, выполнили небольшую денормализацию в базе, и все таки сделали уникальный индекс по почте, так как это и должно было быть изначально.
-- Example 4 - документ может быть загружен с 3-мя разными состояниями, Pending, Error, Success.
Здесь нарушаем принцип LSP, поскольку приводим конкретную реализацию к заранее известному типу.
Верное решение - сделать метод обработки конкретного запроса на документ, в конкретном типе И использовать реализацию интерфейса, а не наследование.
Итого
1) Пойду перечитывать типы наследования из курсов по ООАП :)
-- Теперь понимаю,почему вы так за паттерн ... - когда даже на микроуровне убираются так элегантно ифы за счет ad hoc полиморфизма,хочется плакать от счастья… Очень классный материал!!
-- Третья неделя идёт, коллеги отмечают мой затравленный и озлобленный взгляд, а мне просто не нравится, что поток задач ворует у меня темпы развития в выбранном направлении.
❤41👍16😁9🔥4🤔2
Не волнуйтесь, вы не одиноки :) Также в своё время лоханулись и GitLab, и Zinga, и Adobe, и Snap, и Pinterest, и многие многие другие.
К счастью, теперь доступны только российские облака, с ними в случае такого разбираться куда легче. Хоть бы вообще весь западный софт поскорее ушёл, и технически ничего особого в нём нету более чем полностью, а про ноухау вообще говорить смешно. Вопрос исключительно в грамотной организации процесса разработки(+ побольше денежек :) .
Вдобавок, сегодня много классных продуктов доступны как опенсорс, просто форкайте и плюйте на лицензии. copyleft 🦾
Рассказывал например, на каких прекрасных общедоступных решениях сегодня можно строить тяжёлые и стратегически верные облачные инфраструктурные сервисы в России.
К счастью, теперь доступны только российские облака, с ними в случае такого разбираться куда легче. Хоть бы вообще весь западный софт поскорее ушёл, и технически ничего особого в нём нету более чем полностью, а про ноухау вообще говорить смешно. Вопрос исключительно в грамотной организации процесса разработки
Вдобавок, сегодня много классных продуктов доступны как опенсорс, просто форкайте и плюйте на лицензии. copyleft 🦾
Рассказывал например, на каких прекрасных общедоступных решениях сегодня можно строить тяжёлые и стратегически верные облачные инфраструктурные сервисы в России.
✍44👍26😎3❤1🤔1
Документация по коду никому не нужна. Они хотят знать достаточно, чтобы быстро и безопасно изменять код, чтобы получить новые результаты, которые им нужны, и при этом ничего случайно не сломать. Документация -- особенно хрупкий и дорогой путь к этой цели.
-- Кент Бек* июнь 24
* мнение автора может не совпадать с мнением редакции
-- Кент Бек* июнь 24
* мнение автора может не совпадать с мнением редакции
✍49🤔15❤2💯2🤓2
Пацан испугался и потёр пост; пока он на веб-архиве ещё хранится, но 💯 рептилоиды со временем и архив целиком прикроют.
"How a single ChatGPT mistake cost us $10,000+"
We copy pasted the code it generated, saw everything worked fine, tried it in production, saw it also worked, and went on our merry way...
This problem became really well hidden because of our backend setup. We had eight ECS tasks on AWS, all running five instances of our backend (overkill, yes we know, but to be fair we had AWS credits). This meant any single user had a pool of potentially 40 unique IDs they could land upon...
Ознакомьтесь пока доступно, очень поучительно.
Но на самом деле это происходит из-за использования моделей программирования без их понимания. Разве сделали бы такое мои курсанты, занимающиеся на hard work например?
В этом десятилетии обучение software design пока ещё остаётся ключевым фактором...
"How a single ChatGPT mistake cost us $10,000+"
We copy pasted the code it generated, saw everything worked fine, tried it in production, saw it also worked, and went on our merry way...
This problem became really well hidden because of our backend setup. We had eight ECS tasks on AWS, all running five instances of our backend (overkill, yes we know, but to be fair we had AWS credits). This meant any single user had a pool of potentially 40 unique IDs they could land upon...
Ознакомьтесь пока доступно, очень поучительно.
Но на самом деле это происходит из-за использования моделей программирования без их понимания. Разве сделали бы такое мои курсанты, занимающиеся на hard work например?
В этом десятилетии обучение software design пока ещё остаётся ключевым фактором...
👍39⚡13❤8🤔6😁5
Динамическая типизация, кстати, здесь не при чём.
Скажете, в Java сделано "по-взрослому", значение захватывается как и положено в момент определения лямбда-выражения? Более того, компилятор сам напомнит:
"local variables referenced from a lambda expression must be final or effectively final".
Ну вот например пример на Java с final. Что выведет? :)
(пауза)
что-то такое: 1 9 8 7 3 0 4 6 5 2
Только теперь для понимания этого требуется пройти трек уже по параллельным вычислительным моделям :)
Спрашивали "а как этому всему правильно следовать на практике, чтобы таких косяков не допускать?"
Готовлю несколько новых курсов по software design, в течение лета.
Скажете, в Java сделано "по-взрослому", значение захватывается как и положено в момент определения лямбда-выражения? Более того, компилятор сам напомнит:
"local variables referenced from a lambda expression must be final or effectively final".
Ну вот например пример на Java с final. Что выведет? :)
(пауза)
Только теперь для понимания этого требуется пройти трек уже по параллельным вычислительным моделям :)
Спрашивали "а как этому всему правильно следовать на практике, чтобы таких косяков не допускать?"
Готовлю несколько новых курсов по software design, в течение лета.
🔥51🤔9👍6❤3🐳3
Товарищи фронтендеры, как вы обычно проверяете на неопределённость?
Anonymous Poll
63%
if (foe === undefined) { ...
8%
if (foe === void 0) { ...
29%
if (typeof foe === "undefined") { ...
🤔47🫡10🤯5❤1
Мне кажется, что качество программного обеспечения можно значительно повысить, просто платя программистам гораздо меньше, чем им платят сегодня. Это автоматически отсеет всех несносных хипстеров и самозванцев, что, как ни парадоксально, может привести к положительному результату.
Жаль, что спрос на программистов (пока) слишком высок.
Жаль, что спрос на программистов (пока) слишком высок.
😁41🫡19🤯16👍10🐳5
"Каждый десятый выпускник вуза получил ИТ-специальность", и это замечательно. Однако количество выпускников университетов по информатике, которые даже не знают, как создать приложение на Django или Spring, просто поражает.
👍59💯9❤7🫡5🔥1
обожаю командные строки:
The lazier way to manage everything docker
A simple terminal UI for both docker and docker-compose, written in Go with the gocui library (написана тем же автором 10 лет назад, и работает норм :)
The lazier way to manage everything docker
A simple terminal UI for both docker and docker-compose, written in Go with the gocui library (написана тем же автором 10 лет назад, и работает норм :)
👍55❤8😎6🤔1
Как есть программисты +x10 , так есть и -x10, причём один и тот же чел может регулярно плавать биполярочкой в этом диапазоне от одного края к другому. И чаще всего их локальная +x10 приводит к -x20 в целом. Такие "супер-программисты" практически всегда создают узкие места в проекте. Они концентрируют информацию только в своей голове, куда никто другой не может получить доступ, и пишут на основании такой "секретной" информации код, который никто не понимает. Причём проигрывают в итоге и они сами.
На курсе карьеры я специально делал материал "Почему плохо быть критически важным в проекте".
На курсе карьеры я специально делал материал "Почему плохо быть критически важным в проекте".
✍50👍11❤8😁5🤔2