Новый пост: Как сделать ИТ-Россию великой, и зачем нам стремиться к зарплате/доходу в миллион рублей в месяц.
VK
Лаборатория Программирования Сергея Бобровского. Пост со стены.
Как сделать ИТ-Россию великой? Зачем? Ну например США заявили, что их цель — понизить доход России о... Смотрите полностью ВКонтакте.
🔥13🫡6❤2🤔2👍1
Пять лет не заглядывал в линкедин, вчера посмотрел, и вот что я написал там в 2019-м =>
"Обучаю MLTT, HoTT, индуктивным типам, процесс-алгебрам/pi-калкулусу, кодированию топосов, hopf fibrations и прочей попсе, которая сделает вас полностью unemployable." )))
Но сам сервис стал совсем зашкварным. Вот кстати фишечка, как скрыть все "рекомендуемые" посты:
https://www.linkedin.com/#%23span:has-text(/Suggested/):upward(4)
"Обучаю MLTT, HoTT, индуктивным типам, процесс-алгебрам/pi-калкулусу, кодированию топосов, hopf fibrations и прочей попсе, которая сделает вас полностью unemployable." )))
Но сам сервис стал совсем зашкварным. Вот кстати фишечка, как скрыть все "рекомендуемые" посты:
https://www.linkedin.com/#%23span:has-text(/Suggested/):upward(4)
🤓7👍4🔥4😁1
Для курсантов в раздел "Элитный программист" добавил 37-й материал "Как справляться с некомпетентными новичками".
К программистам придираются далеко не только нетехнические менеджеры и офисные начальники. Я уже сбился со счёта, сколько раз наблюдал, как опытные программисты возмущаются глупыми ошибками, которые допускали младшие разработчики. Но это тоже ситуация, с которой можно справиться, взяв ответственность на себя.
Например, сеньоров раздражает, когда джуниоры не используют git, или фигачат комиты сразу в мастер, не пишут юнит-тесты, задают глупые вопросы, ответы на которые можно нагуглить за пять минут...
Действительно, возня со всем этим отнимает у старших немало времени и сил. И вот что с этим делать ...
и 38-й - "Как справляться с назойливыми рекрутерами".
Рекрутеры в исходной задумке -- это здорово. Подразумевается, что вам как профессиональному разработчику больше не нужно подавать множество заявок на вакансии вручную. Остальное сделают рекрутеры, и те из них, которые полагают, что вы подходите на доступные им вакансии, начнут звонить вам.
Но рекрутеры -- это обычные продавцы, работающие по заказу ...
На курс карьеры добавлен 83-й материал "Как проходить стажёрство/испытательный срок". Главное, что вам надо делать, когда вас взяли стажёром или на испытательный срок -- это понять 5 важных принципов...
К программистам придираются далеко не только нетехнические менеджеры и офисные начальники. Я уже сбился со счёта, сколько раз наблюдал, как опытные программисты возмущаются глупыми ошибками, которые допускали младшие разработчики. Но это тоже ситуация, с которой можно справиться, взяв ответственность на себя.
Например, сеньоров раздражает, когда джуниоры не используют git, или фигачат комиты сразу в мастер, не пишут юнит-тесты, задают глупые вопросы, ответы на которые можно нагуглить за пять минут...
Действительно, возня со всем этим отнимает у старших немало времени и сил. И вот что с этим делать ...
и 38-й - "Как справляться с назойливыми рекрутерами".
Рекрутеры в исходной задумке -- это здорово. Подразумевается, что вам как профессиональному разработчику больше не нужно подавать множество заявок на вакансии вручную. Остальное сделают рекрутеры, и те из них, которые полагают, что вы подходите на доступные им вакансии, начнут звонить вам.
Но рекрутеры -- это обычные продавцы, работающие по заказу ...
На курс карьеры добавлен 83-й материал "Как проходить стажёрство/испытательный срок". Главное, что вам надо делать, когда вас взяли стажёром или на испытательный срок -- это понять 5 важных принципов...
👍12🔥5🫡3❤1
...и по СильнымИдеям:
Добавлен 80-й материал "Инварианты и качественный код".
Понятие инварианта (изучали на треке ООАП) неотделимо от качественного кода. Идея в том, что инвариант может быть нарушен только в том случае, если в вашей программе есть ошибка.
Мы как бы закладываем в программу некие неоспоримые утверждения, которые обязательно должны соблюдаться -- в идеале, на уровне невозможности компиляции кода, если инварианты нарушены, но такое возможно пока в основном в языках с зависимыми типами. Но "придумывание" инвариантов -- это искусство ...
И 81-й -- про миграции (ORM-ы с роллбэком). Это сложно, но на практике оказывается ещё сложнее )))
Почему down-миграции, которыми так хвастают многие фреймворки -- дескать это чуть ли не ключевая их фича -- на практике не работают. Разбираем 4 неочевидных подводных камня (в дополнение к highload-курсу по транзакциям).
Добавлен 80-й материал "Инварианты и качественный код".
Понятие инварианта (изучали на треке ООАП) неотделимо от качественного кода. Идея в том, что инвариант может быть нарушен только в том случае, если в вашей программе есть ошибка.
Мы как бы закладываем в программу некие неоспоримые утверждения, которые обязательно должны соблюдаться -- в идеале, на уровне невозможности компиляции кода, если инварианты нарушены, но такое возможно пока в основном в языках с зависимыми типами. Но "придумывание" инвариантов -- это искусство ...
И 81-й -- про миграции (ORM-ы с роллбэком). Это сложно, но на практике оказывается ещё сложнее )))
Почему down-миграции, которыми так хвастают многие фреймворки -- дескать это чуть ли не ключевая их фича -- на практике не работают. Разбираем 4 неочевидных подводных камня (в дополнение к highload-курсу по транзакциям).
🔥12👍3🫡2❤1
Rust это отличный DSL для блокчейнов.
А метапрограммирование по воздействию на мозг куда круче любых веществ.
А метапрограммирование по воздействию на мозг куда круче любых веществ.
🤔14😁4🫡4❤3
Лучшие тесты выполняются дважды: один раз с моками, другой -- без.
Тест без мокинга наиболее полный, но может упустить некоторые важные моменты. Если вы вызвали API и он вернул правильный результат, это ещё не значит, что вы отправили ему правильный запрос. Вы можете получить неприятные побочные эффекты.
Скоро в СильныхИдеях выложу мощный контринтуитивный материал про правильный подход к организации тестирования крупных систем.
Тест без мокинга наиболее полный, но может упустить некоторые важные моменты. Если вы вызвали API и он вернул правильный результат, это ещё не значит, что вы отправили ему правильный запрос. Вы можете получить неприятные побочные эффекты.
Скоро в СильныхИдеях выложу мощный контринтуитивный материал про правильный подход к организации тестирования крупных систем.
🔥14🤔5🙏3❤1🫡1
Понемногу активирую Волшебный МультиПендаль 2024.
Существенно обновил "дипломный" проект, который в основном делают ребята, кто готовится к работе на бэкенде (для курсантов проект обязателен и бесплатен, но наверное сделаю и платную версию "для всех"). Фреймворк (разные для Java, Python, C#, Go, PHP...), CRUD, REST, отношения между модельками ORM (1-1, 1-многие, многие-многие), авторизация/видимость, пагинация, таймзоны, ui с бутстрапом, геоданные, и ещё немало другого по мелочам. Забираемся внутрь ORM, делаем бота, упаковываем в докер, деплоим.
Это то что было, и вот добавил ещё несколько темок: кэширование, логирование, документирование API, интеграционные тесты, ci/cd, транзакционная работа, микросервисы :)
Всего 34 задания (пока) получилось.
Кто проходил со мной этот проект, рекомендую доделать новые фишки.
Существенно обновил "дипломный" проект, который в основном делают ребята, кто готовится к работе на бэкенде (для курсантов проект обязателен и бесплатен, но наверное сделаю и платную версию "для всех"). Фреймворк (разные для Java, Python, C#, Go, PHP...), CRUD, REST, отношения между модельками ORM (1-1, 1-многие, многие-многие), авторизация/видимость, пагинация, таймзоны, ui с бутстрапом, геоданные, и ещё немало другого по мелочам. Забираемся внутрь ORM, делаем бота, упаковываем в докер, деплоим.
Это то что было, и вот добавил ещё несколько темок: кэширование, логирование, документирование API, интеграционные тесты, ci/cd, транзакционная работа, микросервисы :)
Всего 34 задания (пока) получилось.
Кто проходил со мной этот проект, рекомендую доделать новые фишки.
⚡31❤7👍4🫡3
При всех разговорах о сложных инженерных профессиях программисты в среднем намного умнее своих коллег из этих профессий. Потому что computer science = абстрактное мышление + решение "головоломок". Абстрактное мышление в целом скорее противоречит инженерным подходам, которые по определению ориентированы на практику и физическую реальность, но оно очень важно для того, чтобы быть умным.
Не зря многие сильные разработчики, хорошо подготовленные в cs, любят философию, а остальные инженеры-"прагматики" наоборот недолюбливают, считая хипстерством; однако ихний прагматизм работает плохо: по всему Подмосковью массовые отключения тепла и электричества. Потому что без формального кодирования соответствующих социально-трудовых процессов вот это вот всё и будет бесконечно продолжаться. А философия с использованием интуиционистской теории типов например позволяет даже гёделевские противоречия покрыть.
Меритократия наше всё.
P.S. Особенно AI-меритократия :) Слава роботам!
Не зря многие сильные разработчики, хорошо подготовленные в cs, любят философию, а остальные инженеры-"прагматики" наоборот недолюбливают, считая хипстерством; однако ихний прагматизм работает плохо: по всему Подмосковью массовые отключения тепла и электричества. Потому что без формального кодирования соответствующих социально-трудовых процессов вот это вот всё и будет бесконечно продолжаться. А философия с использованием интуиционистской теории типов например позволяет даже гёделевские противоречия покрыть.
Меритократия наше всё.
P.S. Особенно AI-меритократия :) Слава роботам!
✍22👍9😁6❤4🫡2
🏆8❤1
За какую сторону я -- не скажу , но для меня субъективно разница в основном, что в deb много чего под ключ, но работает часто фигово, а в rpm наоборот -- готовых пакетов поменьше, но работают гораздо устойчивее. И в результате нередко приходится мучиться вот так: "install vim-deb on RHEL".
Между прочим, скрипт-язык свежего vim 9.1 стал поддерживать ООП (даже с абстрактными классами) 😁
Между прочим, скрипт-язык свежего vim 9.1 стал поддерживать ООП (даже с абстрактными классами) 😁
🏆13👍8❤1🤔1
Хочу для учебного сервера домашнего игрокомпа взять Xeon E7-8890v4, б/у на авито стоит 20т )))
😁22👍10⚡6🤯2😎2
С надеждой жду, что как на смену JavaScript появился великолепный TypeScript (в чём, как обычно, заслуга не microsoft, а гениального Хейлсберга), вот чтобы и на смену SQL наконец появилось тоже что-то взрослое.
Потому что SQL и реляционная модель -- это несовместимые вещи. Например, строки-дубликаты в модели невозможны и недопустимы. А этот ваш NULL фактически создаёт многозначную логику. Вы же никогда не используете его, надеюсь?
Ну и сам по себе SQL -- это нечто совсем низкоуровневое, как Си, условно, ни одной нормальной абстракции в нём нету.
Потому что SQL и реляционная модель -- это несовместимые вещи. Например, строки-дубликаты в модели невозможны и недопустимы. А этот ваш NULL фактически создаёт многозначную логику. Вы же никогда не используете его, надеюсь?
Ну и сам по себе SQL -- это нечто совсем низкоуровневое, как Си, условно, ни одной нормальной абстракции в нём нету.
👍24🤔12❤9🫡3😁1
Кстати да, у меня такое бывало несколько раз :)
Фаундер задумывает очередной киллер-проект мечты, буквально они говорили: "боюсь, как дам рекламу, так набегут сотни тысяч пользователей, будут расхватывать такой продукт как горячие пирожки...", и моё скромное мнение, что хорошо бы сперва сделать A/B тестирование, посмотреть, а есть ли вообще желающие, оценить сколько будет стоит лид и т.д., полностью игнорировалось (что уже показатель того, что фаундер нуль, хотя они конечно считают себя гениями маркетинга), но зато полгода приличная команда пилила продукт, на который потом едва нашлось 10 пользователей ... Ну ок, мы-то получили хорошие денежки на зарплату :)
Поэтому в таких случаях, когда видите, что фаундер лох, максимально поддерживайте его иллюзию про горячие пирожки, а делайте так:
- пилите монолит, никаких микросервисов;
- только горизонтальное масштабирование (на курсе "Ясная Архитектура" даю соответствующий простой паттерн, сразу после разбора типовых хипстерских
говноархитектур :)
- максимально долго держитесь синхронной обработки.
Фаундер задумывает очередной киллер-проект мечты, буквально они говорили: "боюсь, как дам рекламу, так набегут сотни тысяч пользователей, будут расхватывать такой продукт как горячие пирожки...", и моё скромное мнение, что хорошо бы сперва сделать A/B тестирование, посмотреть, а есть ли вообще желающие, оценить сколько будет стоит лид и т.д., полностью игнорировалось (что уже показатель того, что фаундер нуль, хотя они конечно считают себя гениями маркетинга), но зато полгода приличная команда пилила продукт, на который потом едва нашлось 10 пользователей ... Ну ок, мы-то получили хорошие денежки на зарплату :)
Поэтому в таких случаях, когда видите, что фаундер лох, максимально поддерживайте его иллюзию про горячие пирожки, а делайте так:
- пилите монолит, никаких микросервисов;
- только горизонтальное масштабирование (на курсе "Ясная Архитектура" даю соответствующий простой паттерн, сразу после разбора типовых хипстерских
говноархитектур :)
- максимально долго держитесь синхронной обработки.
👍38🔥8✍5❤2🫡1
Какие-то бедолаги нагнали 2k ботов в этот канал. Я ни с кем не конкурирую, рекламы у меня тут не было и не будет, наборы по 2-3 человека бывают редко, в этом году даже не знаю, когда. Ну и стоит это, по рублю за бота, кто-то отдал 20 долларов лол ) Зачем? Сходил бы в кафе лучше.
Эти шутникам желаю всяческого добра и благополучия, но ни в коем случае не прибавления ума :) Потому что защита от подобных неадекватов сейчас хороший бизнес, и пусть он развивается и дальше. Причём я нашёл только один нормальный сервис по защите от накруток и очистке от папищеков по времени, и довольно дорогой. А ведь такой сервис запилить вообще несложно, и конкуренции, как я уже не раз говорил, для подобных (да и многих других) сервисов в России нету, потому что западные все недоступны; реально океан возможностей построить свой ит-бизнес.
Эти шутникам желаю всяческого добра и благополучия, но ни в коем случае не прибавления ума :) Потому что защита от подобных неадекватов сейчас хороший бизнес, и пусть он развивается и дальше. Причём я нашёл только один нормальный сервис по защите от накруток и очистке от папищеков по времени, и довольно дорогой. А ведь такой сервис запилить вообще несложно, и конкуренции, как я уже не раз говорил, для подобных (да и многих других) сервисов в России нету, потому что западные все недоступны; реально океан возможностей построить свой ит-бизнес.
❤36👍18🤔8❤🔥3✍2
Сегодня был пост про сишечку (что даже в ней надо учиться думать абстрактно, даже стандарты к этому принуждают), но в целом он про то, что, с одной стороны, надо обязательно двигаться в сильные абстракции, фп и cs, но, с другой стороны, невероятно полезно будет покодить на си, ассемблере, и особенно на rust. Например, maestro (лёгкое подмножество ядра Unix) сперва написали на Си, а потом переписали на Rust. Это однозначный тренд замены всего сишного, однако тут вас ждёт много боли и страданий :)
Когда вы возьмётесь за Rust, то будете долго офигевать, сколько вам реально потребуется узнать по самому языку (по языкам Java или Python например полно подробных справочников, но для рабочего программирования вам надо изучить совсем мало) -- но с Rust так не прокатит. А если вы плакали от мутных сообщений компилятора F#, то это до тех пор, пока вы не познакомитесь с компилятором Rust :) и будете часами мучиться с каким-нибудь "cannot return reference to temporary value"...
Тут от вас потребуется невероятно много программистской смекалки для того, чтобы решать самые тривиальные задачи ))) И это крайне полезно.
P.S. Я всегда топлю за то, чтобы изучать темки с высоким порогом входа, чтобы слабаки отваливались сразу 😎
Когда вы возьмётесь за Rust, то будете долго офигевать, сколько вам реально потребуется узнать по самому языку (по языкам Java или Python например полно подробных справочников, но для рабочего программирования вам надо изучить совсем мало) -- но с Rust так не прокатит. А если вы плакали от мутных сообщений компилятора F#, то это до тех пор, пока вы не познакомитесь с компилятором Rust :) и будете часами мучиться с каким-нибудь "cannot return reference to temporary value"...
Тут от вас потребуется невероятно много программистской смекалки для того, чтобы решать самые тривиальные задачи ))) И это крайне полезно.
P.S. Я всегда топлю за то, чтобы изучать темки с высоким порогом входа, чтобы слабаки отваливались сразу 😎
👍41🔥8🤔5✍3❤2
Мечты частично сбываются :)
"...чтобы и на смену SQL наконец появилось тоже что-то взрослое"
=> Vanna
"Chat with your SQL database. Accurate Text-to-SQL Generation via LLMs using RAG"
+ модельку можно дотренировывать на проектную специфику.
Ну да, из F# доступен LINQ, но хотелось бы например полиморфную систему типов в SQL.
А пока что каждый день, пока в мэйнстримовские базы данных не добавлена поддержка sum types, где-то плачет котик...
"...чтобы и на смену SQL наконец появилось тоже что-то взрослое"
=> Vanna
"Chat with your SQL database. Accurate Text-to-SQL Generation via LLMs using RAG"
+ модельку можно дотренировывать на проектную специфику.
Ну да, из F# доступен LINQ, но хотелось бы например полиморфную систему типов в SQL.
А пока что каждый день, пока в мэйнстримовские базы данных не добавлена поддержка sum types, где-то плачет котик...
👍31🤔6🔥5⚡2❤1
Божественное поучение от святого cs Эрика Мейера. Внимайте! 🙏
(Rx Ix это Reactive Extensions / Interactive Extensions)
(Rx Ix это Reactive Extensions / Interactive Extensions)
🤔31❤10✍5👍5👌3
Писать код легко, и именно поэтому это сложно.
🤯27😁10❤7✍3🤔2