Олег Громов печатает...
1.7K subscribers
74 photos
5 videos
148 links
о разработке софта, карьере разработчика, сайд-проектах, стартапах, о жизни и вообще
Download Telegram
Этот простой способ поможет вам...

Думаю каждый раз, когда пишу код:
- А тут взять существующий тип или создать новый?
- А вдруг в базе NULL, потому что я схему без гарантий сделал, а мне нужно значение?
- Вернуть ошибку или как-то обработать?

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

Теперь в начале работы я пишу себе небольшой TODO. Прям буквально по пунктами, что нужно сделать. Особенность каждого из этих пунктов в том, что я отлично понимаю, как его сделать. Достать ID из payload — да пожалуйста. Дифнуть 2 слайса — util.SliceDiffRight наготове.

Кайф в том, что такой подход позволяет работать по "прогрессивному джипегу". В задаче обычно 80-90% очевидных шагов, а над оставшимся нужно поразмышлять. Но если сразу схватиться кодить, то есть шанс перепутать одно с другим и потратить кучу времени на какую-то ерунду.

И вот, всего каких-то полтора десятилетия — и я допёр до работающего процесса.

👍 всегда так делаю
❤️ кайф, полезно
🌚 код пусть агенты пишут
27👍15🌚11
Чего не могу создать, того не понимаю — так Ричард Фейнман говорил.

John Ousterhout, автор курса CS 190: Software Design Studio в Стенфорде и прекрасной книги A Philosophy of Software Design, учит студентов на своём курсе так же: даёт задание написать реализацию протокола Raft или текстового редактора, проводит код-ревью и отправляет дорабатывать.

Для меня с детства наибольшим удовольствием было разобраться, как что-то в компьютере работает. Наверное именно поэтому я вообще в программирование и полез. И уже в 15 лет умничал на открытых лекциях на мехмате о ядре линукса. Неправильно, разумеется! 😂

Пару лет назад, когда у меня был перерыв в работе, я решил вспомнить C и написать простейшую хешмапу, динамические массивы и парсер JSON. До этого баловался и "свой реакт" делал, HTML-парсеры всякие.

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

Решил поделиться размышлениями, т.к. попалась хорошая статья с десятком идей для реализации: ядро ОС, виртуальная машина, компилятор, async-рантайм, эмулятор NES и проч. Правда, написать эмулятор Нинтендо за 3 недели (автор даёт свою оценку каждому проекту) кажется нереальным.

Может только кажется? Как только появится время, обязательно попробую ❤️
10👍5
Есть кто из гугла?

У них недавно появилось /v2beta API для управления Google Meet. Мит — это отдельная штука, звонок, привязанный к календарным событиям, со своими настройками. Например, именно для сущности meet, а не calendar event, можно добавить co-host (участника, у которого есть права включать запись, делать breakout rooms и т.п.).

Так вот, в нашей организации эта фича включена (мы попали в программу developer preview) и мы ей пользуемся. Доки на новый API выложили в гуглдок, но доступ к нему пропал пару недель назад 😂

Ссылки есть вот тут, в разделе Manage space members: space.members.create, space.members.delete, space.members.get и space.members.list.

Можно, пожалуйста, попинать там кого надо, чтобы починили ссылки?
😁8👏1
AI-революция в разработке софта

Все только и твердят о ней. Половина новостей на HackerNews про AI/LLM, деньги поднимают только AI-cтартапы, причём какими-то неприличными раундами. Агенты и копайлоты повсюду. Я согласен с оценкой "AI изменит разработку софта"; вероятно, даже уже изменил. И сам очень стараюсь победить формировавшиеся десятилетиями привычки и использовать LLM для всё большего количества тупых или неинтересных мне задач. Это всё-таки процентов 80-90 программирования.

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

🫣 Пример с работы: разработчик несколько дней подряд говорит, что работает над задачей, в последний день отсылает PR, где десяток комитов на полторы тысячи строк сделаны за 2 часа. Глаз цепляется за сообщения об ошибках с эмоджи (этого мы не делаем) и на русском (это провал, проект полностью англоязычный). Говорит, что "курсор написал", а русский язык "перевести забыл".

Да, хорошо, курсор написал — но он не проверил, а на ревью отправил. Мне, как техлиду, такой код зачем? Я и сам так написать могу.

🫠 Пример с собеседований: парень достаточно бодро начинает решать задачку, исследует доки на API, в это время копайлот в режиме агента создаёт ему шаблон проекта, добавляет всякие зависимости. Я впечатлён: выглядит как очень толковый, разумный подход.

Шаблон создан, какие-то кусочки кода написаны, разработчик тем временем путается в синтаксисе destructuring в JS (найм на JS/TS позицию) и, что ещё смешнее и печальнее, долго возится с отладкой ошибки от его собственной (ну, копайлотом написанной) ручки. Потому что там ответ от внешнего API обёрнут в ответ от cобственного бэкенда, и ошибка где-то по пути потерялась. Интуиции посмотреть именно туда, разумеется, нет, потому что код-то писал не он!

Закончить задачу он не успел, интервью не прошёл. Хотя люди, которые пишут код сами, успевают.

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

Если допустить — а это гигантское допущение!, — что код писать будут только машины, нам всё-таки придётся его читать, ведь ответственность не может быть на машине. А если самому не писать, то скоро и понимать разучишься. Причём происходит это, видимо, с той же пугающей скоростью, с какой Т9 убил орфографию, а телефоны — пунктуацию в сообщениях.

Что думаете об AI-революции в нашей профессии?
👍346🔥3🫡2
"Подросток" Достоевского

Последнее, что я читал из русской классики — "Смерть Ивана Ильича" Толстого, но то была повесть, а "Подросток" — это полноценный, длинный роман. Я выбрал его потому, что мне показалась интересной заявленная тема (становление подростка, одержимость некоей "идеей"), однако же настоящая тема оказалась совершенно другой.

Роман показался сложным. Смысл происходящего как будто бы постоянно ускользает, прячется в огромном количестве мелких событий, описанных в непривычных, высокопарных диалогах десятка действующих лиц. Всё это перемежается наивными и пафосными рассуждениями Аркадия, главного героя романа, подростка, о жизни, женщинах, качествах других героев. Понять, что происходит, что важно, а что второстепенно непросто. Да даже запомнить, кто с кем разговаривает!

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

Выбор имён показался удивительным: почему фамилия главного героя — Долгорукий, но не князь, а просто Долгорукий? Зачем есть два князя Сокольских (однофамильцы), которые друг с другом никак не связаны? Почему у дочери одного из Сокольских фамилия Ахмакова? Откуда взялась Настасья Егоровна (это, оказывается, ошибка то ли писателя, то ли издательства — вместо неё в первых частях была Дарья Онисимовна)? Распутать всё это сложно.

Но вот сама идея "Подростка" становится понятнее, если узнать, что происходило в конце XIX века в Российском государстве. Оказывается, император Александр II увлёкся княжной Долгорукой, с которой у него завязались любовные отношения. Всё это происходило больше десятилетия на глазах у всей страны, у них появились внебрачные дети (всё это при живой императрице!). Такой секрет Полишинеля, осуждать который, конечно же, никто не решался.

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

Больше всего мне понравился богатый русский язык (после привычного коверкания английского и чтения всяких статей), а также отсылки к истории России. Что такое выселки? Кто такая дворовая? А городовой? Сколько было русско-турецких войн? Кто такие Петрашевцы? Ну и так далее.

Мой вердикт: 5/10, читать стоит только от большой любви к писателю и психологическому роману.
🔥8👍51🤔1
Труизм из найма: лучше по ошибке не нанять квалифицированного разработчика, чем нанять неквалифицированного.

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

Что скажете?
13👍6😁1
Ура, впервые за много-много лет я выиграл что-то ценное! 😅
🏆32👏95🔥3😁1
Насколько хорошо вы знаете SQL?

Чтобы ответить, предлагаю взглянуть на 3 скриншота и прокомментировать/поставить реакцию, в какой момент вам становится сложно распарсить написанное.

Мне сложновато распарсить:

🌚 — обычный селект (Level 1)
🤔 — джойны и подзапросы (Level 2)
🏆 — оконные функции и рекурсивные CTE (Level 3)
🔥 — hold my beer, я тебе покажу сложный запрос в комментариях!
🏆41🤔11🔥9🌚4
Объясняю, почему спрашиваю.

Во-первых, cиквел с нами давно (50+ лет) и надолго. Как бы его ни критиковал дядюшка Боб за неуместность в качестве API к БД — с чем я согласен, на самом деле. Это становится очевидно, когда вместо потуг с ORM пишешь запрос на сотню строк руками (кайф, в коде было бы сильно хуже) или когда вместо ORM пытаешься собрать один корректный запрос, конкатенируя 50 строчек (не кайф, не надо так делать).

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

Ну и наконец, я уже давно задумал небольшой интерактивный SQL-тренажёр (похожий на SQLZoo и подобные, но попродвинутее) на основе SQLite, который прекрасно компилируется в wasm и работает в браузере вообще без тормозов с БД до десятков мегабайт. Это, с одной стороны, всё ещё игрушечная БД, но с другой — уже достаточно данных, чтобы в них было любопытно покопаться и сделать нетривиальные задания.

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

А у вас с сиквелом какие отношения?
8
Есть всего два сложных вопроса в компьютерных науках: инвалидация кэша и присвоение имен

Фил Карлтон

Многоуважаемый мистер Карлтон явно не работал с таймзонами.
😁18👍5🔥1
Друзья, а есть ли среди вас или ваших близких 🚀 начинающие разработчики, которым не удаётся найти работу?

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

👉 Заполняйте форму: https://forms.gle/3dy98JQkoATkTva49 👈
Или перешлите тем, кому актуально.

Спасибо! 🙏
🔥9👍1
С праздником, коллеги! Сидите с ровной спиной ❤️
11👍10🫡4
"Первый шаг в любом деле дарит ощущение подъёма, на который мы буквально подсаживаемся" — очень понравилось и откликнулось 🥲

Из заметки Why we rarely finish what we start.
13
Хот-тейк про Liquid Glass! 🥲

С каждым годом я всё более несогласен с тем, что делает Apple с моими устройствами.

Дело не в том, что в Windows Vista придумали ту же полупрозрачность ещё в 2007 году. И не в том, что через неё ничего не видно, а блюр превращается в грязь, когда под ним есть текст.

Для меня компьютер — это инструмент. Как дрель или станок, только посложнее. Мне не нужно, чтобы менялась форма ручки, цвет провода, шрифт циферок на дисплее или его положение. Нужно, чтобы инструмент работал, улучшалась надёжность, удобство, появлялись полезные функции — и не страдали важные старые.

Мне не нужны звуки и торчащие из углов экрана виджеты. ОС должна быть как первая версия Chrome, которая после IE 8 удивила отсутствием привычных панелек и кнопок. Она должна оставаться незаметной, чтобы я мог пользоваться компьютером так, как мне нужно, а не отбиваться от назойливых визуальных эффектов.

Но в Apple решили, что оптимизировать нужно презентации, а не реальный пользовательский опыт. Интересно, почему?
10👏4🤔3👍2🔥1
Опять интернет поломался 🥲
👏8😁6🤝5