Лаборатория Математики и Программирования Сергея Бобровского – Telegram
Лаборатория Математики и Программирования Сергея Бобровского
1.29K subscribers
1.19K photos
24 videos
930 links
ЛаМПовое с Бобровским
Download Telegram
Хорошее соревнование в минимализме вакансий :)

Видимо, фуллстек хотят:
Стэк: Java, JavaScript, Go
Денег: $4500-7000
Remote
Fintech startup (Boston)
===

В принципе, совершенно адекватное предложение, ну разве что PostgreSQL немного специфична:
Backend Senior
Стэк: Java, PostgreSQL, Spring, Linux
Денег: $3000-4000
Moscow, Russia
Ищем Senior/Lead Java Developer в продуктовую компанию
===

Ну а кто помучился с поиском и никого не нашёл, начинают удалять лишние запросы:
Стэк: Java, Kotlin
Денег: $3000-4000
Remote
Revolut ищет талантливых и амбициозных разработчиков (Москва, Берлин, Лондон, Краков)

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

Вообще, правильный стек в вакансиях, это что-то типа
Python + SQL + Linux
или
Java + Android
или
C# + .NET Core
или
JavaScript + Node.js
==
$3000

За каждое дополнительное слово к этому накидывайте по $1000-$1500.
Илон Маск по сути пересказывает принципы продуктивного самонаучения Алана Кэя, ну и по большому счёту, советской научной школы (самое главное -- это фундамент и широта взглядов под зонтиком единой научной методологии), которую потом западные и китайские университеты скопировали, так как ранее упирались в практическую отдачу (схема финансирования через гранты к тому подталкивала).
https://entrepreneurshandbook.co/elon-musks-2-rules-for-learning-anything-faster-cf9a79fba35

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

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

2) Вы не можете хорошо запомнить и продуктивно освоить то, что не с чем соединить.

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

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

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

Ты можешь сделать то же самое. Тебе просто нужно принять его два правила: сначала сформировать мощные фундаментальные стволы интеллекта, а потом неустанно трудиться над налаживанием прочных связей между деревьями знаний.
В последнее время на Javy что-то везде наезжают, каналы java memes прям плодятся, считаю, несправедливо. Да, бумеры её традиционно недолюбливают, но в основном "по старой памяти", когда были ужасающие java-апплеты в браузерах, а сама она в плане изучения была куда сложнее плюсов, ну и реально тормозила. Но сегодня, про проблемы с быстродействием можно забыть, особенно на фоне популярности питона, а когда выкатили Java 8, вообще стало норм.

Объективно, из 5-7 ведущих мэйнстримовских языков Java -- ну, топчик с т.зр. кампутер сайенса, т.к. Тьюринг-полнота её системы типов была доказана ещё лет пять назад, по моему. А вот в C# например генерики это фича, которая разрешается в рантайме (претензии, точнее, к CLR), ну и вообще type-checking шарпа is NP-hard.
А вот CSS -- ТП :) Продуктивнее всего кстати доказать, является ли система типов некоторого языка ТП -- это реализовать на ней комбинаторную логику, SKI calculus.
Ну вот, классика метапрограммирования: Scala type level encoding of the SKI calculus
https://michid.wordpress.com/2010/01/29/scala-type-level-encoding-of-the-ski-calculus/

Это я к тому, что как только возникает достаточно серьёзный проект, завязанный на формальные методы, когда верификацию, пруфы-скрипты, надо выгонять в прикладной код, вот и оказывается, что кроме Java и взять-то особо нечего. В этой вашей гошечке система типов -- днище 90-х годов; даже если динамические языки брать, то в питончике замыканий нормальных никогда не было, и т. д.
👍1
Антон работал до 30 лет продажником, а потом двинул в дата-сайнс.
1,5 года на обучение,
перепробовано 11 курсов,
потрачено 163 тысячи на освоение профессии.
Устроился в итоге в банк, вместе с премией получает 160-170т.
https://journal.tinkoff.ru/become-analytic/
А что если в ящик Шрёдингера поместить не котика, а компьютер, считающий некоторую задачу? Фактически, можно его не запускать, и тем не менее получить результат вычислений. Компьютер ждёт, пока кто-то не нажмёт "Старт", но при этом выдаст результат. С точки зрения ограниченного здравого смысла это невозможно, однако эксперименты с подобными -- так называемыми контрфактуальными вычислениями — успешно проводились физиками ещё 15 лет назад.

https://www.osp.ru/cw/2006/08/376287

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

И вот шикарный свежачок
https://fqxi.org/community/forum/topic/3345

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

Тут же известная тема квантовых бомб Элицура-Вайдмана, когда есть бомбы, которые взрываются при любом факте их физического наблюдения (например, при попадании единственного фотона), однако в нашей реальности тем не менее возможно выяснить, какие конкретно бомбы рабочие, не взорвав их.
https://www.nkj.ru/archive/articles/17795/

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

Просветлённые, впрочем, научились этому ещё тысячи лет назад.

=

Резюме такое, что пока сами квантовые физики по мере исследования темы офигевают всё больше и больше :)
Удивительно, но я не нашёл перевода весьма сильной концепции Дядюшки Боба -- Transformation Priority Premise (TPP) аж 7-летней давности. Может в какой его книге есть?

https://blog.cleancoder.com/uncle-bob/2013/05/27/TheTransformationPriorityPremise.html

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

Дядюшка Боб ввёл трансформации в контексте его любимой TDD (разработка, управляемая тестированием), по мантре "чем более конкретны тесты, тем более общим получается код". Идея, что, применяя к коду последовательность трансформаций, мы получаем всё более и более общую (универсальную) систему.

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

То есть, новая схема TDD, расширяющая оригинал "красный/зелёный/рефакторинг":

упавший тест => трансформация => пройденный тест => рефакторинг => пройденный тест

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

Ещё тогда Дядюшка Боб говорил, что "the sequence of tests, transformations, and refactorings may just be a formal proof of correctness."
Тренды цифровизации и в ближайшее, и в отдалённое время, таковы, что продолжит быстро автоматизироваться всё больше и больше традиционных «работ». Огромный вклад в это всё вносит пока ещё сильно недооценённое машинное обучение, и на самом деле уже и высококвалифицированные «знаниевые» специалисты – айтишники, программисты, врачи, учителя, финансовые аналитики и т. д. и т. п. находятся под совершенно реальной угрозой быть заменёнными софтом.

Мы живём в эпоху машинного обучения и data science.

И упущение скилла Data Science, не говоря уже об AI/ML, может стать самой дорогостоящей ошибкой в вашей карьере.

Независимо от того, в какой области программирования вы специализируетесь.

Помните (скорее всего, нет))), как Билл Гейтс едва не прое… всю свою Microsoft, отказываясь верить в перспективы интернета в эпоху его зарождения? И до сих пор расплачивается тем, что ни один из микрософтовских браузеров так и не взлетел, а попытки его пропихнуть насильно, когда уже появились сильные конкуренты, привели к тому, что кривейший IE возненавидели почти все, а судебное разбирательство тянулось до 2000-го года, и Microsoft была вдобавок признана виновной в монополизме.

По моей методике 1-2-4-8 (всегда есть что-то одно самое-самое важное, что надо изучить в первую очередь), чтобы войти в DS, прежде всего надо изучить библиотеку NumPy.

https://numpy.org/doc/stable/user/quickstart.html
https://habr.com/ru/post/352678/

Набор ноутбуков по NumPy (без подсказок -- с подсказками -- с решениями)
https://github.com/rougier/numpy-100

В идеале лучше сделать все 100 задачек:)
Ну, с Всемирным днём логики! :) 💥💥💥
Матлогика, формальная философия и теории типов из computer science — всё это одно.
Программист, кодирующий некоторую модель мира с помощью, например, классов ООП, по сути занимается формальным кодированием некоторого наблюдаемого феномена.
Причём этот процесс двойственный: получающаяся модель определяет как внешнее, так и внутреннее — выражает уровень, силу рационального мышления самого кодировщика.
Базовый ранг, когда разработчика действительно можно считать зародышем Программиста — когда он способен представить любую свою модель в системе типов MLTT.
Ну и он становится формальным философом-джуниором, если например научился использовать h-уровни в HoTT.
Либа Pandas -- второй из трёх must have-навыков DS, который нужен каждому датасайентисту. А на самом деле data science -- уже абсолютно обязательный скилл любого уважающего себя программиста, игнорирование которого может стоить вам всей карьеры.

Ноутбуки (есть также с решениями как и для NumPy), там же ссылочки на быстрые старты, хорошо всё прописано
https://github.com/ajcr/100-pandas-puzzles

Ещё можно посмотреть
https://github.com/guipsamora/pandas_exercises
Сэнсей рассказал историю годичной давности -- точнее, её результат. Пригласили его помочь сделать сервис, который должен быть очень устойчивым, падение катастрофично для всей системы, но в команде кодили традиционно с багами в продакшене, и тимлид очень боялся вообще даже начинать разработку :)

На первый экспериментальный деплой в прод давалось 6-9 месяцев от начала разработки, и с максимальной страховкой в случае чего сразу откатиться обратно.

Сэнсей обучил двух тамошних ребят TLA+, как писать формальные пруфы и потом искать баги, и начал гонять по процессу до тех пор, пока что-то ошибочное фиксилось. А когда всё устаканилось, выгон из TLA+ модельки в java код оказался тривиальным (по чек-листу пройти фактически).

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

Процесс занял 4 месяца против 6-9, причём с учётом времени на обучение и дополнительное развёртывание очень детального мониторинга сервиса.

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

Особо радует, что такие практики никогда не станут мэйнстримом просто из-за традиционного тотального ИТ-бардака, поэтому даже в такой небольшой и специфичной нише легко находятся умные клиенты готовые очень хорошо платить за качество.
Отличная заметка
https://habr.com/ru/post/538356/
«Какие навыки стоит прокачать программисту в 2021 году чтобы зарабатывать больше»

Не хотел сперва тратить время, был уверен, что будет что-то в духе «питон java датасайнс …», но заглянул таки – очень всё верно!

1. (Разговорный) английский язык
2. Самопрезентация
3. Понимание финансов
4. Самоорганизация

«чтобы зарабатывать больше» -- совершенно точно никто вам больше платить не будет, если вы изучите новый фреймворк, а вот если пройдёте хороший тренинг по переговорам о зарплате и карьерному росту и сразу примените изученное там к своей жизни, то и с текущими хард-скиллами сможете получать гораздо больше.
В мой любимый прувер Lean, на котором я изучаю практику в HoTT, искусственный интеллект впервые сделал успешный пуллреквест! В частности, добавил два небольших пруфа в mathlib решателя.
https://github.com/leanprover-community/mathlib/pull/5796
Единственное, что немного омрачает -- AI этот не символьный, а увы, на базе GPT. Вот он:
https://github.com/jesse-michael-han/lean-gptf

Пичаль, что он натренирован с помощью закрытого OpenAI API, и сообщества, имеющие доступ к подобным ресурсам, будут получать огромное интеллектуальное преимущество перед всем остальным миром. А сегодня, оценки ACM/IEEE, преимущество в подобных исследованиях буквально в 9-12 месяцев может стать несокращаемым в принципе.
Сериал neXt хоть и шаблонный, но очень наглядный в эту тему.
Разве это не парадокс?

Я не стал богатым, всю жизнь программируя....

Но моё финансовое положение существенно улучшилось, когда я занялся ИТ-предпринимательством.

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

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

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

Программисту НИКОГДА ещё не было так просто начать и развивать бизнес, как сегодня.

Ага, и даже при карантинах и прочих сумасшедших событиях.

Некоторые ребята, начинавшие 15-20 лет назад вести простые ИТ-блоги,
сегодня превратили их в очень доходный бизнес. Никакие «пассивные инвестиции» не могли дать за эти годы такой процент, который люди получают, просто аккуратно и регулярно, минимум раз в неделю, ведя свой блог. Они получают огромные профиты: это может быть например поток клиентов с заказами, а главное, они сформировали хорошую репутация и высокую узнаваемость, которую не получить никакими другими способами.

А сегодня потенциал и перспективы для всех, кто регулярно развивает свой блог, ещё более радужны.

Ещё раз: сегодня у вас самые великолепные перспективы для построения своего программистского бизнеса с нуля без финансовых вложений.
Как же стать богатым программистом и начать своё ИТ-дело?

Вы можете вести блог по избранной теме программирования; можете организовать канал на ютубе (или даже в, извините, тиктоке) по какой-то технологии; можете начать вести подкаст по кодингу (подкасты кстати остаются отличной формой продвижения знаний наравне с другими, и таковыми останутся очень долго); можете открыть компанию по заказной разработке; можете организовать сайт или группу в соцсети по оказанию конкретных ИТ-услуг и легко их рекламировать; можете разработать платное мобильное приложение; можете организовать стартап и получить инвестиции и т. д. и т. п. Хотя конечно организация полноценной компании – дело не простое, но всё равно, возможности стать богатым программистом сегодня бесконечны.

Тем не менее, есть один важный момент, из-за которого как раз это и не получается у 90%...

Вам надо перестать думать как программист и начать думать как предприниматель. И это единственно надёжный путь к финансовому благополучию в современном мире.

И на самом деле это просто. Но, это и больно :)

В чём же различие в мышлении программиста-программиста и программиста-предпринимателя?