Eric Von Reinhard, работавший ведущим программистом в швейцарском Google, в качестве лучшего языка программирования на перспективу в 2022-м рекомендует изучать Python.
Отмечу только в дополнение к вот этому его аргументу
"Companies compete all the time and they look for fresh developers who know a modern language… not the old Java and C++."
что Python тащит сегодня с собой вообще всё, начиная с 1991 года, и почти всё из этого всего вам никогда не понадобится.
Отмечу только в дополнение к вот этому его аргументу
"Companies compete all the time and they look for fresh developers who know a modern language… not the old Java and C++."
что Python тащит сегодня с собой вообще всё, начиная с 1991 года, и почти всё из этого всего вам никогда не понадобится.
Ну, началось! А я уже не один год говорю -- нейросетки это хорошо, но мир таки захватит AI на формальной логике :)
В The NetHack Challenge 2021 (программы, мастерски играющие в легендарную рогульку) победил с ощутимым отрывом AutoAscend -- чистый символьный AI. Нейросетки тут не конкуренты, потому что они не умеют "думать стратегиями" и скорее всего никогда не научатся.
Я на нетхак потратил когда-то наверное тысячу часов :) До Амулета Йендора добирался...
P.S. И немного о грустном: в свежем Tortoise "The Global AI Index" Россия в мировой AI-гонке остаётся стабильно в третьем десятке, 32-е место.
Мир с помощью AGI (символьного :) через 2-3 десятилетия захватят США + Великобритания, или Китай, на 99%. Довольно внезапно с 12-го на 5-е место (за год!) поднялся Израиль. Впрочем, нифига не внезапно: он на первом месте в мире по относительному финансированию темы AI и на душу населения, и по исследовательским работам.
В The NetHack Challenge 2021 (программы, мастерски играющие в легендарную рогульку) победил с ощутимым отрывом AutoAscend -- чистый символьный AI. Нейросетки тут не конкуренты, потому что они не умеют "думать стратегиями" и скорее всего никогда не научатся.
Я на нетхак потратил когда-то наверное тысячу часов :) До Амулета Йендора добирался...
P.S. И немного о грустном: в свежем Tortoise "The Global AI Index" Россия в мировой AI-гонке остаётся стабильно в третьем десятке, 32-е место.
Мир с помощью AGI (символьного :) через 2-3 десятилетия захватят США + Великобритания, или Китай, на 99%. Довольно внезапно с 12-го на 5-е место (за год!) поднялся Израиль. Впрочем, нифига не внезапно: он на первом месте в мире по относительному финансированию темы AI и на душу населения, и по исследовательским работам.
+15 "Разворачиваемость" вашего проекта (скорость лёгкость простота его деплоя) -- это одна из неотъемлемых, ключевых, абсолютно обязательных целей любого правильного проектирования.
Читаю "Real-World Cryptography" David Wong -- очень классный учебник, рекомендую и по теме, и не только: много bad/best practices, которые отлично подходят к повседневному программированию. Каждому уважающему себя миддлу-сеньору желательно изучить, в спокойном темпе главка в месяц, в алгоритмы/код особо можно не погружаться, достаточно понимания, всё очень хорошо объясняется, с картиночками для малышей :)
Узнал из этой книги, что Майкл Хайден, бывший директор АНБ и ЦРУ, заявил “We kill people based on metadata” :) В связи с этим вопрос, насколько вы доверенная сторона, насколько ваши ИТ-системы спроектированы так, что гарантируется (в идеале формально) что к этим метаданным нету нежелательного доступа, что они не могут быть скомпрометированы, сфальсифицированы? Викиликс вот говорит, что в АНБ дела с этим не очень... Впрочем, везде с этим не очень; более попсовую по теме можно почитать "The Perfect Weapon" David Sanger.
В частности, одну из рекомендаций Вонга для повседневных нужд перефразирую так:
Вежливое программирование -- это идея проектной абстракции, проектных интерфейсов, которые трудно реализовать плохо. Будьте вежливы.
Узнал из этой книги, что Майкл Хайден, бывший директор АНБ и ЦРУ, заявил “We kill people based on metadata” :) В связи с этим вопрос, насколько вы доверенная сторона, насколько ваши ИТ-системы спроектированы так, что гарантируется (в идеале формально) что к этим метаданным нету нежелательного доступа, что они не могут быть скомпрометированы, сфальсифицированы? Викиликс вот говорит, что в АНБ дела с этим не очень... Впрочем, везде с этим не очень; более попсовую по теме можно почитать "The Perfect Weapon" David Sanger.
В частности, одну из рекомендаций Вонга для повседневных нужд перефразирую так:
Вежливое программирование -- это идея проектной абстракции, проектных интерфейсов, которые трудно реализовать плохо. Будьте вежливы.
Сегодня довольно активно применяется GraphQL, довольно часто ребята кто у меня занимается эту СУБД упоминают.
Ну, GraphQL -- это своего рода WSDL/SOAP для миллениалов и поколения Z :)
(рассказывал про это всё)
Что будет следующим? web3 , что-то типа WSDL с сильной типизаций, с акцентом на семантику, и уж совершенно точно не JSON-ы.
Ну, GraphQL -- это своего рода WSDL/SOAP для миллениалов и поколения Z :)
(рассказывал про это всё)
Что будет следующим? web3 , что-то типа WSDL с сильной типизаций, с акцентом на семантику, и уж совершенно точно не JSON-ы.
Чем отличается гуру от хорошего сеньора (10+ лет опыта)? Если вы сеньор, то вы (или какой-то другой сеньор) можете вписаться в подавляющее число ИТ-проектов самого разного профиля, и помочь большому количеству людей практически в любом таком проекте.
Если вы гуру (20+ лет опыта), то вы можете вписаться уже лишь в относительное небольшое число весьма специфических ИТ-проектов :) и при этом только вы тот единственный человек, кто может помочь небольшому количеству людей в этих конкретных проектах.
Если вы гуру (20+ лет опыта), то вы можете вписаться уже лишь в относительное небольшое число весьма специфических ИТ-проектов :) и при этом только вы тот единственный человек, кто может помочь небольшому количеству людей в этих конкретных проектах.
Я вообще большой сторонник TDD, всегда к нему призываю, всегда рекомендую, потому что это первый шаг в направлении TLA+ (мышление спецификациями) и полноценных формальных методов в перспективе. Однако всё же надо честно признать, что когда тимлид вроде как по моим рекомендациям пытается "внедрять" TDD в своей команде, в 70% случаев получается карго-культ )))
Код становится ещё более хрупким, чем получался раньше до TDD, а у разработчиков при этом создаётся ложное чувство повышенной надёжности проэкта. Вроде бы все сущности аккуратно спроектированы, хорошо изолированы, все сомнительные места покрыты моками...
Только вот интерфейсы всех компонентов, сюрприз! оказываются в итоге спроектированы так, чтобы успешно проходить тесты, а не быть удобными в работе )))
Ну блин, ребята... Поизучайте сперва материалы из Сильных Идей про три уровня думания о программе. Как уходить от кода (и от тестов для уровня кода) на логический уровень абстракций, которых в коде не может быть по определению, и которые и надо учиться выражать в виде формальных спецификаций, реализуемых далее в виде тестов...
Ok, это моя недоработка :) В следующем году будем с этим очень плотно разбираться.
Код становится ещё более хрупким, чем получался раньше до TDD, а у разработчиков при этом создаётся ложное чувство повышенной надёжности проэкта. Вроде бы все сущности аккуратно спроектированы, хорошо изолированы, все сомнительные места покрыты моками...
Только вот интерфейсы всех компонентов, сюрприз! оказываются в итоге спроектированы так, чтобы успешно проходить тесты, а не быть удобными в работе )))
Ну блин, ребята... Поизучайте сперва материалы из Сильных Идей про три уровня думания о программе. Как уходить от кода (и от тестов для уровня кода) на логический уровень абстракций, которых в коде не может быть по определению, и которые и надо учиться выражать в виде формальных спецификаций, реализуемых далее в виде тестов...
Ok, это моя недоработка :) В следующем году будем с этим очень плотно разбираться.
Сейчас можно найти действительно много весьма неплохих курсов по конкретным технологиям/фреймворкам (особенно на английском :), так что можно непосредственно по темам своей работы прокачиваться очень здорово и быстро, и получать серьёзные конкурентные преимущества и перед коллегами в коллективе, и в целом на рынке труда.
Я бы даже сказал, что эта схема работает так продуктивно, что похожа на жульничество :)
Я бы даже сказал, что эта схема работает так продуктивно, что похожа на жульничество :)
8 когнитивных багов начинающих архитекторов распределённых систем:
- сеть работает надёжно;
- задержка нулевая;
- полоса пропускания бесконечна;
- сеть безопасна;
- топология сети неизменяема;
- стоимость трафика нулевая;
- сеть гомогенна (только винда например :);
- для суппорта сети достаточно одного админа на удалёнке.
Бонус: "больше не воспроизводится".
Ну, недетерминированные системы пытаться покрывать классическими детерминированными тестами, очевидно, просто глупо. Правильно: проектировать систему в детерминированных моделях, допускающих распределённые вычисления.
- сеть работает надёжно;
- задержка нулевая;
- полоса пропускания бесконечна;
- сеть безопасна;
- топология сети неизменяема;
- стоимость трафика нулевая;
- сеть гомогенна (только винда например :);
- для суппорта сети достаточно одного админа на удалёнке.
Бонус: "больше не воспроизводится".
Ну, недетерминированные системы пытаться покрывать классическими детерминированными тестами, очевидно, просто глупо. Правильно: проектировать систему в детерминированных моделях, допускающих распределённые вычисления.
+16 Важные коаны проектирования :)
- плоское лучше, чем вложенное;
- разреженное лучше, чем плотное.
Да, и конечно, если реализацию вашей схемы проектирования вам сложно словесно объяснить хотя бы котику -- значит, сама идея плоха. Переделывайте :)
- плоское лучше, чем вложенное;
- разреженное лучше, чем плотное.
Да, и конечно, если реализацию вашей схемы проектирования вам сложно словесно объяснить хотя бы котику -- значит, сама идея плоха. Переделывайте :)
"Чем более масштабируема сеть, тем более централизованной она становится, и в конечном итоге все эти ваши "масштабируемые" криптовалюты будут делать то же самое, что и обычный процессинг кредитных карт" (с) Гради Буч
все криптопроэкты -- это зашкваренные версии классических highload-архитектур, старайтесь не вляпаться в 2022-м :)
с Наступающим! 🎄
все криптопроэкты -- это зашкваренные версии классических highload-архитектур, старайтесь не вляпаться в 2022-м :)
с Наступающим! 🎄
По мотивам Unix:
- заставьте каждый компонент делать хорошо ровно одну вещь;
- делайте каждую функцию фильтром, естественно компонуемым/комбинируемым с другими функциями;
- чистый код лучше чем умный код;
- храните данных в "плоских" текстовых файлах (просто, читабельно, легко редактируемо);
- меньше по размеру это значит лучше (лучше много независимых модулей чем один монолит; только не забывайте, что если у вас 10 слабо изолированных микросервисов, как-то связанных в фоне друг с другом, вы легко можете получить 3,628,800 монолитов).
- заставьте каждый компонент делать хорошо ровно одну вещь;
- делайте каждую функцию фильтром, естественно компонуемым/комбинируемым с другими функциями;
- чистый код лучше чем умный код;
- храните данных в "плоских" текстовых файлах (просто, читабельно, легко редактируемо);
- меньше по размеру это значит лучше (лучше много независимых модулей чем один монолит; только не забывайте, что если у вас 10 слабо изолированных микросервисов, как-то связанных в фоне друг с другом, вы легко можете получить 3,628,800 монолитов).
Когда я учился, преподаватели математики говорили, что такие темы, как теория простых чисел или косинусные преобразования, совершенно бесполезны на практике.
Сегодня практически вся криптография базируется на простых числах, а всё видео что гонится безумными объёмами по интернету, жмётся косинусными преобразованиями.
Поэтому любому цивилизованному обществу крайне важно развивать фундаментальную математику :)
Следствие: изучать фундаментальные вещи в своей карьере полезно в частности и в том плане, что с одной стороны, вероятность, что они выстрелят в прикладном плане, вроде как невысока, но с другой, если они выстрелят, вы выиграете на порядки больше среднего уровня. А без их изучения вероятность крупного выигрыша по жизни просто всегда будет равна нулю.
Сегодня практически вся криптография базируется на простых числах, а всё видео что гонится безумными объёмами по интернету, жмётся косинусными преобразованиями.
Поэтому любому цивилизованному обществу крайне важно развивать фундаментальную математику :)
Следствие: изучать фундаментальные вещи в своей карьере полезно в частности и в том плане, что с одной стороны, вероятность, что они выстрелят в прикладном плане, вроде как невысока, но с другой, если они выстрелят, вы выиграете на порядки больше среднего уровня. А без их изучения вероятность крупного выигрыша по жизни просто всегда будет равна нулю.
Мы часто шутим или жалуемся, что дескать программирование сегодня -- это просто "копипастинг из StackOverflow". Однако практически не задумываемся, а как мы можем более лучше поддерживать копипастинг из StackOverflow в наших проектах.
Я серьёзно. Если это обычный рабочий процесс, то мы должны искать и находить способы его улучшить. Вот тут AI однозначно может хорошо помочь.
Я серьёзно. Если это обычный рабочий процесс, то мы должны искать и находить способы его улучшить. Вот тут AI однозначно может хорошо помочь.
Программисты в 1980-х: "Всё есть указатель на непрерывный буфер значений... потому что Cи".
Программисты в 1990-х: "Всё есть объект, потому что бизнес-логика и базы данных".
Программисты в 2000-х: "Ясность кода и паттерны проектирования, потому что железо дёшево, и любой может писать код".
Программисты в 2010-х: "Мы проводим ежедневные митинги, чтобы выяснить, какой JavaScript-фреймворк нам попробовать сегодня, потому что мы гибкая команда".
Программисты в 2020-х: " Всё есть указатель на непрерывный буфер значений... потому что дата-ориентированный дизайн и кэширование".
В каком десятилетии застряла ваша компания? :)
Программисты в 1990-х: "Всё есть объект, потому что бизнес-логика и базы данных".
Программисты в 2000-х: "Ясность кода и паттерны проектирования, потому что железо дёшево, и любой может писать код".
Программисты в 2010-х: "Мы проводим ежедневные митинги, чтобы выяснить, какой JavaScript-фреймворк нам попробовать сегодня, потому что мы гибкая команда".
Программисты в 2020-х: " Всё есть указатель на непрерывный буфер значений... потому что дата-ориентированный дизайн и кэширование".
В каком десятилетии застряла ваша компания? :)
В каком десятилетии застряла ваша контора?
Anonymous Poll
8%
1980-е
25%
1990-е
33%
2000-е
20%
2010-е
14%
2020-е
+16 Полезное: algorithm for passing programming interviews , очень рекомендую выучить эту модель решения типовых задачек по алгоритмам.
Бонус: как за одну неделю подготовиться к прохождению интервью по System Design в MMANGA.
Только конечно важно понимать, что скилл прохождения интервью по System Design -- далеко/совсем не то же самое, что скилл System Design в реальном проекте, когда на вас вся ответственность за архитектуру :)
Всё что вы учите для собеседований -- это пока просто карго-культ, т.к. вы особо не понимаете, а нафига вообще это всё вам надо знать, и просто механически изучаете, не имея опыта правильного применения в подходящих контекстах.
Бонус: как за одну неделю подготовиться к прохождению интервью по System Design в MMANGA.
Только конечно важно понимать, что скилл прохождения интервью по System Design -- далеко/совсем не то же самое, что скилл System Design в реальном проекте, когда на вас вся ответственность за архитектуру :)
Всё что вы учите для собеседований -- это пока просто карго-культ, т.к. вы особо не понимаете, а нафига вообще это всё вам надо знать, и просто механически изучаете, не имея опыта правильного применения в подходящих контекстах.
Очень хорошая бесплатная игра Bitburner — медитативный хакерский киберпанк с программированием на JavaScript :)
Steampowered
Bitburner on Steam
Bitburner is a programming-based incremental game. Write noscripts in JavaScript to automate gameplay, learn skills, play minigames, solve puzzles, and more in this cyberpunk text-based incremental RPG.
На тему программирования видео принципиально не смотрю, а вот мотовидео помногу регулярно, и так удачно...
"Как стать программистом в 30+"
Очень честно и реалистично, рекомендую!
"Как стать программистом в 30+"
Очень честно и реалистично, рекомендую!
YouTube
Как стать программистом в 30+
В IT после 30. Реальные истории, мотивация, советы. Стать программистом после 30 реально!
Станьте спонсором канала, и вы получите доступ к эксклюзивным бонусам. Подробнее:
https://www.youtube.com/channel/UC2yo_VGfPcRlQLvuAAJ9fpQ/join
Съемку проводил на камеру…
Станьте спонсором канала, и вы получите доступ к эксклюзивным бонусам. Подробнее:
https://www.youtube.com/channel/UC2yo_VGfPcRlQLvuAAJ9fpQ/join
Съемку проводил на камеру…
В продолжение темы, авторитетные люди рекомендуют:
"Pragmatic System Design"
From preparing for System Design interviews to Architecting Real World Systems
"Pragmatic System Design"
From preparing for System Design interviews to Architecting Real World Systems
Системы типов современных языков даже уровня Java тьюринг-полные, поэтому если научиться правильно готовить статическую типизацию, то она может работать как юнит-тесты со 100% покрытием.
По Пирсу хотя бы, система типов -- это синтаксический метод доказательства отсутствия определённых поведений программы.
По Пирсу хотя бы, система типов -- это синтаксический метод доказательства отсутствия определённых поведений программы.