Пересчитаемся, кто тут кто?
Anonymous Poll
57%
Front
12%
Back
21%
Fullstack
4%
Devops
0%
Product
1%
Project
2%
C-level
1%
Devops
0%
Mobile
1%
Design
Что происходит в момент, когда мы вызываем setState?
Многие говорят, что обновляется state. Но это не совсем так.
Приведу пример
Работа с функциональными компонентами создаёт иллюзию, будто мы оперируем с императивным подходом: то, что мы видим, — это и есть реальность. Но это лишь фасад. На самом деле React использует декларативный подход.(Я вообще молчу, что у нас count объявлена константой и чисто физически не может изменится)
Что это значит? Это значит, что мы говорим React, какое состояние компонента хотим получить. А дальше начинается магия: React планирует изменения, запускает рендер, и мы не знаем точно, когда состояние действительно обновится и изменения попадут в реальный DOM.
Внутренности процесса
Когда React обновляет дерево компонентов, он делит эту работу на кусочки. Почему? Чтобы уложиться в определённое время — около 16.6 мс на кадр при 60 fps. Если React не успевает, он приостанавливает процесс и продолжает позже.
Но на этом всё не заканчивается. Когда рендер завершён, React сверяет новое дерево с предыдущим (reconciliation). Только после этого, одной синхронной задачей, обновляется реальный DOM — это называется "коммит".
Если интересна такая "внутрянка" React ставьте🔥 и я раскрою глубже, как происходит render, сверка, что такое Fiber и т.д.
BEARlogin dev — подпишись!
#react #advices #собеседования
Многие говорят, что обновляется state. Но это не совсем так.
Приведу пример
const [count, setCount] = useState(0)
function updateCount(value) {
setCount(value);
console.log(count); // в этом месте много людей на собесе говорили мне, что console.log выведет значение value
}
Работа с функциональными компонентами создаёт иллюзию, будто мы оперируем с императивным подходом: то, что мы видим, — это и есть реальность. Но это лишь фасад. На самом деле React использует декларативный подход.
Что это значит? Это значит, что мы говорим React, какое состояние компонента хотим получить. А дальше начинается магия: React планирует изменения, запускает рендер, и мы не знаем точно, когда состояние действительно обновится и изменения попадут в реальный DOM.
Внутренности процесса
Когда React обновляет дерево компонентов, он делит эту работу на кусочки. Почему? Чтобы уложиться в определённое время — около 16.6 мс на кадр при 60 fps. Если React не успевает, он приостанавливает процесс и продолжает позже.
Но на этом всё не заканчивается. Когда рендер завершён, React сверяет новое дерево с предыдущим (reconciliation). Только после этого, одной синхронной задачей, обновляется реальный DOM — это называется "коммит".
Если интересна такая "внутрянка" React ставьте
BEARlogin dev — подпишись!
#react #advices #собеседования
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥62👎1
Камрад в коментах упоминул про случай, когда у нас множество обновлений, описанный в доке реакта и который любят спрашивать на собесах.
У нас есть функция которая вызывает последовательно обновления state.
Вопрос: чему в итоге будет равен count и сколько раз будет вызван render?
Чтобы разобраться в этом, нужно понять как вообще планируются обновления.
Такие вызовы — это тоже самое, что написать setCount(0 + 1) три раза.
Очередь обновлений можно упрощенно показать так (подробней эту тему раскрою в постах про Fiber)
И когда React переходит к фазе рендеринга, он проходит по этом списку и применяет count равным 1 все три раза.
В итоге рендер будет вызван 1 раз, а count = 1
Но если мы применим функциональные обновления
То очередь обновлений будет выглядеть так
Во время рендеринга:
Первое обновление: count = 0 + 1 = 1.
Второе обновление: count = 1 + 1 = 2.
Третье обновление: count = 2 + 1 = 3.
В итоге render будет вызван всегда 1 раз в этих случаях, но в функции обновления мы будем всегда получать результат предыдущего обновления в параметры функции и в таком случае инкремент будет работать правильно.
Другой вопрос, что будет если обновлений запланируется, ну скажем 100 000 сразу. Такой случай рассмотрю в следующих постах.
ставьте🔥 если зашло :)
BEARlogin dev — подпишись!
#react #advices #собеседования
У нас есть функция которая вызывает последовательно обновления state.
const [count, setCount] = useState(0);
const handleClick = () => {
setCount(count + 1);
setCount(count + 1);
setCount(count + 1);
};
Вопрос: чему в итоге будет равен count и сколько раз будет вызван render?
Чтобы разобраться в этом, нужно понять как вообще планируются обновления.
Такие вызовы — это тоже самое, что написать setCount(0 + 1) три раза.
Очередь обновлений можно упрощенно показать так (подробней эту тему раскрою в постах про Fiber)
baseQueue = {
action: 1,
next: {
action: 1,
next: {
action: 1
}
}
}И когда React переходит к фазе рендеринга, он проходит по этом списку и применяет count равным 1 все три раза.
В итоге рендер будет вызван 1 раз, а count = 1
Но если мы применим функциональные обновления
setCount((prev) => prev + 1);
setCount((prev) => prev + 1);
setCount((prev) => prev + 1);
То очередь обновлений будет выглядеть так
baseQueue = {
action: (prev) => prev + 1,
next: {
action: (prev) => prev + 1,
next: {
action: (prev) => prev + 1
}
}
}Во время рендеринга:
Первое обновление: count = 0 + 1 = 1.
Второе обновление: count = 1 + 1 = 2.
Третье обновление: count = 2 + 1 = 3.
В итоге render будет вызван всегда 1 раз в этих случаях, но в функции обновления мы будем всегда получать результат предыдущего обновления в параметры функции и в таком случае инкремент будет работать правильно.
Другой вопрос, что будет если обновлений запланируется, ну скажем 100 000 сразу. Такой случай рассмотрю в следующих постах.
ставьте
BEARlogin dev — подпишись!
#react #advices #собеседования
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥30
FSD: дело было не в бобине...
Часто слышу критику FSD: "Слишком много папок, слишком много правил, это избыточно!".
Но хочу сказать, что FSD — это не про количество папок. Это про направление зависимостей и архитектурные границы.
Ты не обязан сразу строить многоэтажный небоскрёб, если у тебя пока маленький проект. Начать можно просто.
С чего начинать?
На старте достаточно трёх слоёв:
1. app/ — конфигурация приложения: роутинг, провайдеры, глобальные стили.
2. shared/ — переиспользуемые, не связанные с бизнесом компоненты, утилиты, стили и т.д.
3. pages/ — страницы приложения и используемые ими компоненты.
Сначала можно оставить всё в pages, если функциональность используется только там.
Но как только начинаешь дублировать код, либо твой слайс хочет что то импортировать у соседей, то логично вынести его в widgets.
А затем продолжаешь углублять структуру. Например, если два widget используют схожую логику или функциональность, то логично вынести её в features. Дальше это движение продолжается по мере необходимости.
Что касается entities и shared, то здесь есть определённая специфика. Об этом я расскажу в следующих постах.
Вынос в новый сегмент какого то функционала не является самоцелью. Я бы сказал, даже наоборот — если можно не выносить и остаться в рамках одного слайса — оставайтесь.
Таким образом FSD подходят для любых проектов на старте, позволяя сразу закладывать возможности для масштабирования и помогает соблюдать принципы низкой связанности и высокого зацепления.
Ставьте🔥 , если хотите больше практических примеров и советов по FSD.
BEARlogin dev — подпишись!
P.S. советую этот экстеншн для генерации слайсов https://marketplace.visualstudio.com/items?itemName=SbokyZahodi.fsd-slices
#архитектура #frontend #fsd
Подготовлю к собесам, помогу с рабочими задачами и росту хардов/софтов. Уперся в потолок с з/п, ответственностью?
Если необходимо менторство - пишите @bearlogin
Часто слышу критику FSD: "Слишком много папок, слишком много правил, это избыточно!".
Но хочу сказать, что FSD — это не про количество папок. Это про направление зависимостей и архитектурные границы.
Ты не обязан сразу строить многоэтажный небоскрёб, если у тебя пока маленький проект. Начать можно просто.
Кстати, само название FSD (Feature-Sliced Design), на мой взгляд, не совсем корректно. Это не "дизайн, разделенный на фичи". Скорее, это методология, которая помогает структурировать код, организуя его вокруг бизнес-функционала и уровней ответственности, позволяя соблюдать принципы Low coupling и High cohesion.
Можете в комментариях предложить своё название. Лично я бы назвал это Business-Sliced Design — чтобы невозможно было интерпретировать методологию упрощённо и требовалось изучение её сути.
С чего начинать?
На старте достаточно трёх слоёв:
1. app/ — конфигурация приложения: роутинг, провайдеры, глобальные стили.
2. shared/ — переиспользуемые, не связанные с бизнесом компоненты, утилиты, стили и т.д.
3. pages/ — страницы приложения и используемые ими компоненты.
src/
app/
App.tsx
routes.ts
shared/
ui/
Button/
index.tsx
pages/
catalog/
ui/
CatalogPage.tsx
ProductList.tsx //кандидат на вынос
index.ts
recommended/
ui/
RecommendedPage.tsx
ProductList.tsx
index.ts
Сначала можно оставить всё в pages, если функциональность используется только там.
Но как только начинаешь дублировать код, либо твой слайс хочет что то импортировать у соседей, то логично вынести его в widgets.
src/
app/
App.tsx
routes.ts
shared/
ui/
Button/
index.tsx
widgets/
product-list/
ui/
ProductList.tsx
model/
useProducts.ts
index.ts
pages/
catalog/
ui/
CatalogPage.tsx
index.ts
recommended/
ui/
RecommendedPage.tsx
index.ts
А затем продолжаешь углублять структуру. Например, если два widget используют схожую логику или функциональность, то логично вынести её в features. Дальше это движение продолжается по мере необходимости.
Что касается entities и shared, то здесь есть определённая специфика. Об этом я расскажу в следующих постах.
Вынос в новый сегмент какого то функционала не является самоцелью. Я бы сказал, даже наоборот — если можно не выносить и остаться в рамках одного слайса — оставайтесь.
Таким образом FSD подходят для любых проектов на старте, позволяя сразу закладывать возможности для масштабирования и помогает соблюдать принципы низкой связанности и высокого зацепления.
Ставьте
BEARlogin dev — подпишись!
P.S. советую этот экстеншн для генерации слайсов https://marketplace.visualstudio.com/items?itemName=SbokyZahodi.fsd-slices
#архитектура #frontend #fsd
Подготовлю к собесам, помогу с рабочими задачами и росту хардов/софтов. Уперся в потолок с з/п, ответственностью?
Если необходимо менторство - пишите @bearlogin
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥31👎10👍9😱1🗿1
Вот кто ставит 👎, вы там покажитесь, комент напишите, или вы на бобину обиделись? 😀 Или это один человек 6 аккаунтов зарегал, сидит ставит?
Прост тема холиварная, понимаю, ну давайте похоливарим.
Прост тема холиварная, понимаю, ну давайте похоливарим.
😁10💯3👎1
Пока я не очень в состоянии писать полноценные посты, буду делиться интересной инфой, что нашел.
Сегодня вот интересная инфа по задержкам https://gist.github.com/jboner/2841832. При этом в комментах есть свой "юмор", типа расчета задержек в бананах 😀
Сегодня вот интересная инфа по задержкам https://gist.github.com/jboner/2841832. При этом в комментах есть свой "юмор", типа расчета задержек в бананах 😀
Gist
Latency Numbers Every Programmer Should Know
Latency Numbers Every Programmer Should Know. GitHub Gist: instantly share code, notes, and snippets.
🔥2👍1
Еременко Павел Андреевич.pdf
41.3 KB
Помогите Паше найти работу
Ребят, бро ищет работу фронтом или фулстеком в React или React+NodeJs в целом по хардам крепкий джун, но при этом хорошо решает бизнес задачи, есть аналитическое мышление.
Кому не сложно, закиньте вашим HR, поможем всем миром, как говориться :)
ЛС Паши @eremenko_pa
#frontend #react #nodejs #nestjs #резюмешка
Ребят, бро ищет работу фронтом или фулстеком в React или React+NodeJs в целом по хардам крепкий джун, но при этом хорошо решает бизнес задачи, есть аналитическое мышление.
Кому не сложно, закиньте вашим HR, поможем всем миром, как говориться :)
ЛС Паши @eremenko_pa
#frontend #react #nodejs #nestjs #резюмешка
👍3
Зачем нужен useSyncExternalStore
Вопреки расхожему мнению, оно нужно не только для подключения внешних стейт-менеджеров.
Эта штука в целом работает с внешними источниками состояний.
Что такое этот источник состояния? В целом интерфейс евойный состоит издвух трех функций:
1. subsribe - которая используется, чтобы подписаться на изменение чегобытонибыло
2. getSnapshot - которая используется, чтобы получить то самое чтобытонибыло
3. getServerSnapshot - которая используется, чтобы это самое чтобытонибыло на стороне сервере
При ближайшем рассмотрении весьма и весьма полезная штукенция...
Рассмотрим пример с созданием хука для отслеживания изменения ширины окна
Или вот восхитительная тема с mediaQuery
А в чем разница под капотом? Онакак суслик, ее не видно, но она есть.
1. Поддержка Concurrent Rendering — гарантирует согласованность состояния даже при приостановке или перезапуске рендера.
2. Мгновенная синхронизация — состояние всегда актуально на момент рендера, без задержек, свойственных setState.
3. Меньше лишних ререндеров — React сравнивает значения из getSnapshot и вызывает рендер только при изменении.
4. Поддержка SSR и гидрации — позволяет задать серверное состояние через getServerSnapshot, устраняя расхождения между сервером и клиентом.
В общем, интересная тема, на мой взгляд, нужно брать!
Подготовлю к собесам, помогу с рабочими задачами и росту хардов/софтов. Уперся в потолок с з/п, ответственностью?
Если необходимо менторство - пишите @bearlogin
BEARlogin dev — подпишись!
#собеседования #react
Вопреки расхожему мнению, оно нужно не только для подключения внешних стейт-менеджеров.
Эта штука в целом работает с внешними источниками состояний.
Что такое этот источник состояния? В целом интерфейс евойный состоит из
1. subsribe - которая используется, чтобы подписаться на изменение чегобытонибыло
2. getSnapshot - которая используется, чтобы получить то самое чтобытонибыло
3. getServerSnapshot - которая используется, чтобы это самое чтобытонибыло на стороне сервере
При ближайшем рассмотрении весьма и весьма полезная штукенция...
Рассмотрим пример с созданием хука для отслеживания изменения ширины окна
//Без useSyncExternalStore
function useWindowWidth() {
const [width, setWidth] = useState(window.innerWidth);
useEffect(() => {
const handleResize = () => setWidth(window.innerWidth);
window.addEventListener("resize", handleResize);
return () => window.removeEventListener("resize", handleResize);
}, []);
}
export default function WindowWidthComponent() {
const width = useWindowWidth();
return <div>Ширина окна: {width}px</div>;
}
//Вариант с useSyncExternalStore
import { useSyncExternalStore } from "react";
function useWindowWidth() {
// Подписка на изменения
const subscribe = (callback) => {
window.addEventListener("resize", callback);
return () => window.removeEventListener("resize", callback);
};
// Читаем текущее состояние
const getSnapshot = () => window.innerWidth;
return useSyncExternalStore(subscribe, getSnapshot);
}
export default function WindowWidthComponent() {
const width = useWindowWidth();
return <div>Ширина окна: {width}px</div>;
}
Или вот восхитительная тема с mediaQuery
import { useSyncExternalStore } from "react";
function useMediaQuery(query) {
const mediaQuery= window.matchMedia(query);
const subscribe = (callback) => {
mediaQuery.addEventListener("change", callback);
return () => mediaQuery.removeEventListener("change", callback);
};
const getSnapshot = () => mediaQuery.matches;
return useSyncExternalStore(subscribe, getSnapshot);
}
export default function MediaQueryComponent() {
const isLargeScreen = useMediaQuery("(min-width: 1024px)");
return (
<div>
{isLargeScreen ? "Большой экран" : "Маленький экран"}
</div>
);
}А в чем разница под капотом? Она
1. Поддержка Concurrent Rendering — гарантирует согласованность состояния даже при приостановке или перезапуске рендера.
2. Мгновенная синхронизация — состояние всегда актуально на момент рендера, без задержек, свойственных setState.
3. Меньше лишних ререндеров — React сравнивает значения из getSnapshot и вызывает рендер только при изменении.
4. Поддержка SSR и гидрации — позволяет задать серверное состояние через getServerSnapshot, устраняя расхождения между сервером и клиентом.
В общем, интересная тема, на мой взгляд, нужно брать!
Подготовлю к собесам, помогу с рабочими задачами и росту хардов/софтов. Уперся в потолок с з/п, ответственностью?
Если необходимо менторство - пишите @bearlogin
BEARlogin dev — подпишись!
#собеседования #react
🔥9
Тут пишем отзывы по менторской работе со мной. Только отзывы, остальные сообщения удаляю.
Zustand подписка только на конкретные изменения стора
Если вам нужно подписаться на изменение какой то части стора, то используйте миддлварь subscribeWithSelector
Теперь подписка сработает только при изменении count, а изменения user её не триггерят.
--
Подготовлю к собесам, помогу с рабочими задачами и росту хардов/софтов. Уперся в потолок с з/п, ответственностью? Помогу с ростом грейда от миддла до синьора.
Если необходимо менторство - пишите @bearlogin
BEARlogin dev — подпишись!
#react #zustand
Если вам нужно подписаться на изменение какой то части стора, то используйте миддлварь subscribeWithSelector
import { create } from "zustand";
import { subscribeWithSelector } from "zustand/middleware";
const useStore = create(
subscribeWithSelector((set) => ({
count: 0,
user: { name: "Alice", age: 25 },
increment: () => set((state) => ({ count: state.count + 1 })),
}))
);
// Подписка ТОЛЬКО на `count`
useStore.subscribe(
(state) => state.count,
(newCount, prevCount) => {
console.log(`Счётчик изменился: ${prevCount} → ${newCount}`);
}
);Теперь подписка сработает только при изменении count, а изменения user её не триггерят.
--
Подготовлю к собесам, помогу с рабочими задачами и росту хардов/софтов. Уперся в потолок с з/п, ответственностью? Помогу с ростом грейда от миддла до синьора.
Если необходимо менторство - пишите @bearlogin
BEARlogin dev — подпишись!
#react #zustand
👍3🔥3
Луговской_Андрей_Александрович_2.pdf
399.7 KB
Экзитнулся
Вчера я принял решение выйти из стартапа Funlee, которому отдал 2,5 года.
В итоге — дырка от бублика, испорченные отношения с семьей из-за постоянной занятости, бесконечные созвоны. Полное отсутствие заботы о людях, манипуляции в духе "чёрное — это белое", жизнь в режиме ожидания и обещания "вот-вот выстрелит, скоро в тайланде жить будем, порш поедем покупать тебе", игнорирование фактов и всех практик создания и вывода на рынок SaaS продуктов, а главное — полное отрицание фаундерами необходимости платить команде, пока стартап не начнёт генерировать миллионы.
В общем, кушать что то нужно и детей с женой кормить, поэтому выхожу на рынок.
- CTO, технический лидер, тимлид или архитектор. Код писать не стесняюсь и люблю.
- Технологии, языки схватываю быстро
- Рассмотрю и корпоративные компании, и стартапы, но только если фаундеры понимают ценность оплаты труда команды и нет токсичной атмосферы.
📌 Резюме прикрепил, если есть контакты HR — буду благодарен если скинете.
Вчера я принял решение выйти из стартапа Funlee, которому отдал 2,5 года.
В итоге — дырка от бублика, испорченные отношения с семьей из-за постоянной занятости, бесконечные созвоны. Полное отсутствие заботы о людях, манипуляции в духе "чёрное — это белое", жизнь в режиме ожидания и обещания "вот-вот выстрелит, скоро в тайланде жить будем, порш поедем покупать тебе", игнорирование фактов и всех практик создания и вывода на рынок SaaS продуктов, а главное — полное отрицание фаундерами необходимости платить команде, пока стартап не начнёт генерировать миллионы.
В общем, кушать что то нужно и детей с женой кормить, поэтому выхожу на рынок.
- CTO, технический лидер, тимлид или архитектор. Код писать не стесняюсь и люблю.
- Технологии, языки схватываю быстро
- Рассмотрю и корпоративные компании, и стартапы, но только если фаундеры понимают ценность оплаты труда команды и нет токсичной атмосферы.
📌 Резюме прикрепил, если есть контакты HR — буду благодарен если скинете.
😢23👍10😱2
Знаете, сейчас многие пишут: "Блин, а вот вдруг оно выстрелит, а ты не дождался. Не будет обидно?"
Но дело совсем не в этом.
Этот выход — это победа.
Я победил FOMO длиной в 2,5 года.
Это результат полугодовой трансформации.
Еще летом, в июле, я наткнулся на SkillsLab и начал изучать коммуникацию, манипуляции и практики противодействия.
Потом прочитал книгу Никиты Непряхина "Я манипулирую тобой".
И в какой-то момент я УВИДЕЛ.
Как будто шоры спали.
Я прозрел и наконец-то разглядел всю сеть манипуляций, психологического насилия и контроля, которой опутали меня и всю команду.
Это было как в Матрице — как будто принял красную таблетку.
После этого я пытался повлиять на ситуацию.
Прямо говорил фаундерам, что они манипулируют, что это вредит проекту, что люди выгорают из-за их подхода.
Но не достучался.
Таков был их ответ.
А дальше произошёл случайный, но ключевой момент.
Я наткнулся на пост Айюба, где он рассказывал, что работа с коучем помогла ему прочистить мозг.
До этого я уже искал коуча, но всё время натыкался на каких-то цыган.
Но тут Айюб поделился контактом.
Я написал и пошёл в работу.
Буквально за два занятия я начал приходить в себя.
Я понял, чего я хочу, куда двигаться, с кем работать и кем быть.
Мы разобрали всю ситуацию со стартапом.
И коуч задал мне один вопрос, который всё решил:
Я задумался и ответил:
"Ну… за миллион долларов в месяц."
Тогда последовал второй вопрос:
Я задумался. И сказал:
"Нет."
Тогда коуч повторила первый вопрос:
И в этот момент всё стало ясно.
Я ответил:
"Ни за сколько."
BEARlogin dev — подпишись!
#стартапы #манипуляции
Но дело совсем не в этом.
Этот выход — это победа.
Я победил FOMO длиной в 2,5 года.
Это результат полугодовой трансформации.
Еще летом, в июле, я наткнулся на SkillsLab и начал изучать коммуникацию, манипуляции и практики противодействия.
Потом прочитал книгу Никиты Непряхина "Я манипулирую тобой".
И в какой-то момент я УВИДЕЛ.
Как будто шоры спали.
Я прозрел и наконец-то разглядел всю сеть манипуляций, психологического насилия и контроля, которой опутали меня и всю команду.
Это было как в Матрице — как будто принял красную таблетку.
После этого я пытался повлиять на ситуацию.
Прямо говорил фаундерам, что они манипулируют, что это вредит проекту, что люди выгорают из-за их подхода.
Но не достучался.
"Выгорания не существует. Это просто слабые люди собрались и не смогли дойти на Эверест."
Таков был их ответ.
А дальше произошёл случайный, но ключевой момент.
Я наткнулся на пост Айюба, где он рассказывал, что работа с коучем помогла ему прочистить мозг.
До этого я уже искал коуча, но всё время натыкался на каких-то цыган.
Но тут Айюб поделился контактом.
Я написал и пошёл в работу.
Буквально за два занятия я начал приходить в себя.
Я понял, чего я хочу, куда двигаться, с кем работать и кем быть.
Мы разобрали всю ситуацию со стартапом.
И коуч задал мне один вопрос, который всё решил:
Андрей, за сколько ты был бы готов и дальше подвергаться психологическому насилию?
Я задумался и ответил:
"Ну… за миллион долларов в месяц."
Тогда последовал второй вопрос:
То есть ты утверждаешь, что люди имеют право применять психологическое насилие, если платят миллион долларов?
Я задумался. И сказал:
"Нет."
Тогда коуч повторила первый вопрос:
Андрей, за сколько ты был бы готов и дальше подвергаться психологическому насилию?
И в этот момент всё стало ясно.
Я ответил:
"Ни за сколько."
BEARlogin dev — подпишись!
#стартапы #манипуляции
🔥17😭5
Forwarded from artalog (artalar)
Раз Андрей высказался, то и мне пора: моя история участия в токсичном стартапе
Telegram
BEARlogin Dev
Экзитнулся
Вчера я принял решение выйти из стартапа Funlee, которому отдал 2,5 года.
В итоге — дырка от бублика, испорченные отношения с семьей из-за постоянной занятости, бесконечные созвоны. Полное отсутствие заботы о людях, манипуляции в духе "чёрное…
Вчера я принял решение выйти из стартапа Funlee, которому отдал 2,5 года.
В итоге — дырка от бублика, испорченные отношения с семьей из-за постоянной занятости, бесконечные созвоны. Полное отсутствие заботы о людях, манипуляции в духе "чёрное…
Жена звонит:
— Где твоя машина? На парковке нету...
Я завис... 🤔 Где машина-то?..
Вспоминаю: остановился у кафе, зашел, поел… и ушел домой пешком. 🚶♂️
Определенно пора отдохнуть. 😅
— Где твоя машина? На парковке нету...
Я завис... 🤔 Где машина-то?..
Вспоминаю: остановился у кафе, зашел, поел… и ушел домой пешком. 🚶♂️
Определенно пора отдохнуть. 😅
😁24💯5
Заменит ли AI разработчиков?
Думаю, каждый об этом задумывался. И слышал противоположные мнения: от того, что да, всех заменит железный болван, до того, что волноваться не о чем.
Но истина всегда не на максимумах или минимумах. Она посередине.
AI УЖЕ заменил разработчиков. Но не так, как ты думаешь.
Он не пришёл и не сказал: «Всё, кожаный мешок, твоё время ушло, теперь кодим мы». Он изменил систему.
Сильные разрабы стали ещё сильнее.
По сути, AI — это экзоскелет, который усиливает твои способности.
Если ты ходить не умеешь, экзоскелет не поможет. Скорее, твои навыки ещё больше атрофируются.
Так что AI не заменяет людей, но делает сильных сильнее, а слабых — бесполезными.
Так работает естественный отбор.
А вы что думаете по этому поводу?
P.S. я советую людям, которые сейчас проходят обучение на разраба - вырубайте AI помощников, совсем, наглухо.
Можно пользоваться только AI-чатами, чтобы лучше разобраться в какой то теме, и то, не факт что вам верно чатгпт все объяснит. Может такую ахинею занести, что на собесе просто ржать все будут.
—-
Делаю слабых сильными, чтобы вас не заменил AI или чтобы пройти испытательный срок и не вылететь, пишите в ЛС @bearlogin — разберемся :)
BEARlogin dev — подпишись!
Думаю, каждый об этом задумывался. И слышал противоположные мнения: от того, что да, всех заменит железный болван, до того, что волноваться не о чем.
Но истина всегда не на максимумах или минимумах. Она посередине.
AI УЖЕ заменил разработчиков. Но не так, как ты думаешь.
Он не пришёл и не сказал: «Всё, кожаный мешок, твоё время ушло, теперь кодим мы». Он изменил систему.
Сильные разрабы стали ещё сильнее.
По сути, AI — это экзоскелет, который усиливает твои способности.
Если ты ходить не умеешь, экзоскелет не поможет. Скорее, твои навыки ещё больше атрофируются.
Так что AI не заменяет людей, но делает сильных сильнее, а слабых — бесполезными.
Так работает естественный отбор.
А вы что думаете по этому поводу?
P.S. я советую людям, которые сейчас проходят обучение на разраба - вырубайте AI помощников, совсем, наглухо.
Можно пользоваться только AI-чатами, чтобы лучше разобраться в какой то теме, и то, не факт что вам верно чатгпт все объяснит. Может такую ахинею занести, что на собесе просто ржать все будут.
—-
Делаю слабых сильными, чтобы вас не заменил AI или чтобы пройти испытательный срок и не вылететь, пишите в ЛС @bearlogin — разберемся :)
BEARlogin dev — подпишись!
👍11🔥2👎1
Вопрос
Есть такой метод
Не спрашивая у chatgpt скажите, что тут не так?
Upd1. С кодом, входными данными все в порядке, дело в другом.
Ответ напишу в 13.30
Есть такой метод
class UserService {
...
async updateUser(id, data) {
await this.user.update(id, data);
await this.logger.log('User updated', id, data);
}
...
}Не спрашивая у chatgpt скажите, что тут не так?
Upd1. С кодом, входными данными все в порядке, дело в другом.
Ответ напишу в 13.30