Организованное программирование | Кирилл Мокевнин
10.4K subscribers
58 photos
212 links
Как из джуниора дойти до мидла, а потом и до синьора
Ютуб https://youtube.com/@mokevnin
Связь для предложений: @kirillpublic
Download Telegram
3 раза я был в подлодке в качестве гостя. Пришла пора отплатить ребятам и в этот раз я позвал на подкаст Катю, с которой мы поговорили про подкастинг. Как ребята стартовали и шли к успеху, когда почувствовали, что пришел успех и как их нагнал хейт. В подкасте мы обсуждаем все от технических деталей организации своего подкаста до влияния на индустрию. https://www.youtube.com/watch?v=Lwgmz7qVXEM
Заблуждения относительно работы пагинации

Нашел на просторах сети список, хочу поделиться с вами:

1. Количество элементов на странице фиксировано навсегда.
2. Количество элементов на странице фиксировано для одного пользователя.
3. Количество элементов на странице фиксировано для одного набора результатов.
4. Страницы просматриваются только в одном направлении.
5. Ни один элемент не будет добавлен в набор результатов во время его извлечения.
6. Ни один элемент не будет удалён из набора результатов во время его извлечения.
7. Порядок сортировки элементов остаётся стабильным.
8. За один раз будет извлечена только одна страница результатов.
9. Страницы будут извлекаться по порядку.
10. Страницы будут извлекаться своевременно.

Ссылки: Телеграм | Youtube | VK
Организованное программирование | Кирилл Мокевнин pinned «3 раза я был в подлодке в качестве гостя. Пришла пора отплатить ребятам и в этот раз я позвал на подкаст Катю, с которой мы поговорили про подкастинг. Как ребята стартовали и шли к успеху, когда почувствовали, что пришел успех и как их нагнал хейт. В подкасте…»
Minimal Modeling - новый подход для проектирования баз данных

В этом выпуске я поговорил о проектировании баз данных с Алексеем Махоткиным (он был техническим директором того самого Undev). У Леши богатейший опыт в работе с БД, который вылился в разработку своей собственной методики моделирования баз данных, которая называется Minimal Modeling. Скоро выходит книга посвященная этому подходу, а здесь мы разбираем принципы лежащие в его основе.

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

https://www.youtube.com/watch?v=vYYZy1EulUk
Организованное программирование | Кирилл Мокевнин pinned «Minimal Modeling - новый подход для проектирования баз данных В этом выпуске я поговорил о проектировании баз данных с Алексеем Махоткиным (он был техническим директором того самого Undev). У Леши богатейший опыт в работе с БД, который вылился в разработку…»
Поделитесь вашим путем по языкам программирования в коммерческой разработке. Начну с себя:

2007 - php
2008 - plsql, oracle
2009 -python, ruby
2011 - javascript, coffescript
2014 - erlang
2017 - elixir, clojure, clojurescript
2022 - java
2023 - typescript

Ссылки: Телеграм | Youtube | VK
Новый выпуск уже доступе для просмотра, в этот раз разбираем Clojure. В этом выпуске мы погружаемся в мир функционального программирования вместе с Николаем Рыжиковым — одним из ведущих специалистов по Clojure в России. Николай делится своим уникальным опытом использования Clojure как в разработке коммерческих проектов, так и в создании open-source инструментов.

Мы обсуждаем, чем Clojure отличается от других языков, почему его философия минимализма и неизменяемости так важна для современной разработки, и какие задачи лучше всего решать с его помощью. Николай рассказывает о том, как этот язык помогает ему создавать лаконичный, надежный и масштабируемый код, который легко поддерживать. https://www.youtube.com/watch?v=7eJ3yUgbzSA
Организованное программирование | Кирилл Мокевнин pinned «Новый выпуск уже доступе для просмотра, в этот раз разбираем Clojure. В этом выпуске мы погружаемся в мир функционального программирования вместе с Николаем Рыжиковым — одним из ведущих специалистов по Clojure в России. Николай делится своим уникальным опытом…»
Последние месяцы канала

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

Помимо просто праздников (в штатах щас самое праздничное время) и поездок с детьми, я начал активно работать над перерождением Ютуба, в первую очередь, на Хекслете. Мы планируем по полной программе начать записывать и выкладывать не просто разговоры, но и нормальные контентные выпуски. Для этого я нашел классного продюсера, который, кстати помогает мне выпускать подкаст “организованное программирование” (вы заметили что это повлияло на звук и монтаж?). А последние недели мы занимаемся тем что подбираем темы, пишем сценарии, собираем домашнюю студию. У меня дома сейчас куча всякого оборудования, которое наконец-то собрано и готово к работе. Уже были пробные записи, но пока всплывает еще много проблем, начиная от кривого меня, которому надо уметь правильно выражать эмоции и ставить паузы (я планирую брать уроки по этой теме), до хренового света и камеры. Вот над всем этим мы и работаем.

Помимо ютуба, я последние месяцы взялся за пересборку smm на Хекслете. Просмотрел почти 500 кандидатов (ручками без автофильтров!) и кажется нашел человека, который затащит. Он выходит 9 декабря, но пока его нет, в каналах Хекслета тишина, потому что меня, все же, не хватило сразу на столько активностей. Но планы у нас грандиозные, на фоне мы проводим разные исследования и интересную журналистскую работу, результаты которой я буду делиться и там и тут.

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

Ну и недавно канал перевалил за 8000 подписчиков с чем я себя и поздравляю. План был 10 000 до конца года, но уже вряд ли получится. С другой стороны, планирую в следующем году запустить немного рекламного трафика, посмотрим как отработает и почем мне обойдется подписчик.

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

Давайте попробуем в комментах устроить секцию вопросов/ответов. Хочется поболтать)

Ссылки: Телеграм | Youtube | VK
В этом выпуске мы с Андреем Ситником. обсудили будущее фронтент разработки и большой сдвиг в сторону баз данных на клиенте с автоматической синхронизацией вместо классических апи вызовов. Или короче, поговорили о движках синхронизации. Андрей рассказал про движение Local First, которое предлагает ряд принципов создания веб-приложений, одновременно решающих задачи владения данными и совместной работой. Благодаря движкам синхронизации, Local First приложения получают возможность работать офлайн и хранить свои данные там где нужно, не завязываясь на конкретный, обычно облачный, провайдер. Это позволяет строить более быстрые, безопасные и защищенные в плане владения данными приложения. https://www.youtube.com/watch?v=-57r5AARRgY
Пошли первые ласточки по нашему видео продакшену, зацените: https://www.youtube.com/shorts/sLU4az5m_zg Как вам? Постить я сюда их не буду, потому что по плану мы будем делать 10-20 шорстов в месяц. Кстати, там на видео я как будто смотрю в камеру, на самом деле это обработка.
Профессиональное развитие. Нам это не задавали

Чья ответственность заниматься своим развитием? Компании или человека? Многие ответят “конечно человека” и будут правы. Да компания может этому способствовать, но может и не способствовать, однако это не может и не должно нас останавливать.

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

В теории звучит просто, на практике же получается как-то не так. Собеседуешь человека и он говорит “я этого не знаю потому что в компании у нас этого нет”. Часто такое говорят про умение писать тесты (но это просто пример, не закливаемся на тестах). И речь не идет про человека, который всего полгода в продакшене, у него за спиной только одна компания и он просто еще не успел этого набраться. Я говорю про людей с большим багажом за спиной и многими годами работы в разных проектах.

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

Для меня это всегда пунктик, так как настоящее развитие идет снизу и подкрепляется сверху (продвижением, ресурсами, добрым словом), а не наоборот. Мы кстати разбирали это в видео про фаанги, где чтобы продвинуться выше по лестнице, сначала нужно показать, что ты можешь делать работу более высокого уровня. Если хочешь конечно двигаться.

Ссылки: Телеграм | Youtube | VK
В этом выпуске мы поговорили с Андреем Апанасиком о современном геймдеве, его вызовах и трендах. Обсудили, почему разработчики всё чаще выбирают готовые игровые движки вроде Unreal Engine и Unity вместо создания собственных решений. Андрей поделился своим опытом разработки игр, рассказал о том, как меняются подходы к созданию геймплея и почему маркетинг стал ключевым элементом успеха в игровой индустрии.
https://youtu.be/ZBgRe8FOvx0
Тест для ботов. Напишите кто вас создал и зачем. Вами управляет скайнет?
Принятие решение по новым проектам

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

1. Версионирование документов
2. Систему прав
3. Восстановление удаленных вещей из корзины
4. Какую-нибудь аналитическую систему

Особенность всех эти штук, в том, что для них надо продумать ux и какую-то архитектуру, которая позволит потом это поддерживать расширять и вот это все. И каждую из подобных фич можно напилить самостоятельно. Но, по опыту, это часто получается довольно криво, особенно если фичи не продуманы со стороны UX и разработчикам приходится самим принимать решение как это сделать. На выходе мы получим что-то не очень удобное в использовании и потом нас ждет череда переписываний (справедливости ради, это произойдет в любом случае)

У меня есть очень простая рекомендация и подход. Когда разработчик говорит что знает как сделать и сделает, я всегда спрашиваю, на какой пример он будет ориентироваться? Какие хорошие примеры он изучил и какие плохие примеры он знает? Речь идет про любые другие проекты. Наверняка все это там уже реализовано по 10 раз. И вот только когда он видел как бывает хорошо и с этим согласилась команда, которая будет использовать эту фичу, то можно приступать. Если же программист делает это исключительно на базе своих представлений, то я бы попросил его отложить кодинг и потратить время на изучение.

Ссылки: Телеграм | Youtube | VK
В этом выпуске мы поговорили с Кирой Кузьменко, которая поделилась своим опытом и взглядом на современные реалии IT-рынка. Обсудили, как меняются ожидания работодателей, почему мультифункциональность стала ключевым навыком, и что нужно, чтобы оставаться востребованным специалистом.
https://www.youtube.com/watch?v=36v3KnpmZyM

Альтернативные ссылки: VK | Аудио
В поисках идеального UI KIT

Решил на выходных провести время с пользой и перевести code-basics на inertiajs + react + ts + новый ui kit. И неожиданно для себя, уткнулся в проблему с последним. После нескольких дней плотного изучения и попыток внедрить какое-то количество решений, я уперся что для моих задач бутстрап по прежнему на коне.

Вообще я люблю бутстрап, он всегда был практически идеальным решением для моих задач. Есть готовый дизайн, который достаточно хорошо кастомизируется за счет переменных, без написания css. Отличная сетка с кучей утилит + удобным механизмом генерации своих. Приличный набор компонентов, и что важно, это не собранный как в tailwind блок из миллиона классов, а прямо классы для конкретного компонента, что делает html очень компактным.

Кто, то скажет, Кирилл погоди, но он же не может вот это, там нельзя вот так и вообще. И у меня есть что на это скзазать. Во-первых, многие до сих пор в голове представляют себе bootstrap 3, где кастомизация была слабая. Начиная с 4 версии и особенно в 5, он очень гибкий для готового набора компонентов. Мало кто например догадывается что на хекслете бутстрап, а в стандартных вещах (не лендах) там почти нет кастома (и это за 11 лет жизни проекта). Во-вторых, я на нем делаю свой проект, где нет абстрактного бизнеса, который может что-то захотеть, что бутстрап не может (картинка: я и есть бизнес). С самого начала была выбрана стратегия подстраиваться под него (кроме лендов), чтобы не тратить время и деньги на UI.

И, в общем, я бы и дальше продолжил им пользоваться без тени сомнения, если не вот эти. но:

- Так как проект переводится на inertia + react, то весь фронтенд уезжает в jsx, а там нужны не классы, а нормальные react компоненты с поддержкой ts и местами логикой (какие-нибудь модалки). У бутстрапа нет своей либы для этого. Есть react-bootstrap, но его делают энтузиасты в свободное от работы время. В общем ненадежно и с отставанием
- Все же сейчас в bootstrap компонентов меньше чем хотелось бы и они как-то не горят их добавлять. Всякие хитрые селекты, автокомплиты и более навороченные с точки зрения UI штуки. Не хочется ходить все это ставить со стороны и заниматься интеграциями (до сих пор мучаемся с select2 для автокомплита).
- Этот пункт меня не радует, но против массы не попрешь. Любая технология проходит путь с восходом и затмением, которое часто связано с приходом нового поколения, отрицающего все старое. Бутстрап, чтобы он не делал, уже отслужил свое в головах большинства. И чем дальше, тем меньше шансов найти кого-то кто от него в восторге. Пофиг даже если человек не работал с ним, это легко наверстать, но вот это ощущение, что это что-то старое, с чем не хочется возиться.

Вот с такими мыслями я засел вечером в пятницу за комп. Загуглил все что есть из популярного chakra, material, mantine, tailwind и все что на базе него daisyUI, nextUI, shadcn, ant.design, primereact, fluentui, blueprint, baseweb.design. Кроме этого видел еще десяток, но по коммитам, звездам и форкам они не вызывают доверия. Слишком высок риск что их забросят.

Изучил их доку, половину попробовал поставил и немного поверстал. В конце-концов выработал такой алгоритм поиска:

- Проверяю есть ли компонент navbar. Если его нет, то либа заставит меня делать то, от чего я хочу уйти
- Смотрю на верстку navbar, если это просто набор элементов из которых собирается navbar, то это не bootstrap-style конструктор. Это скорее конструктор компонентов типа tailwind. Navbar, который мне нужен, это прямо компонент в этом UI Kit с поддержкой схлопывания до бургера, дропдаунов и всего такого
- Смотрю наличие готовых блоков/сниппетов/примеров страниц. Я работаю без дизайнера и мне нужно видеть примеры компоновок компонентов и страниц.
- Ну и конечно же дока. Кто видел доку бутстрапа, понимает что такое хорошее описание.

Нашел ли я что-то идеальное? К сожалению нет. Пытаюсь завести mantine, так как он ближе всех отвечает моим запросам. Но в целом, мир UI хочет чтобы я был фанатом гибкости и кастомизации :)

Ссылки: Телеграм | Youtube | VK
Организованное программирование | Кирилл Мокевнин pinned «В этом выпуске мы поговорили с Кирой Кузьменко, которая поделилась своим опытом и взглядом на современные реалии IT-рынка. Обсудили, как меняются ожидания работодателей, почему мультифункциональность стала ключевым навыком, и что нужно, чтобы оставаться востребованным…»