Всем привет!
Под мои недавним постом о развитии на работе было много обсуждений. Однако хотел бы сфокусировать свое внимание на self review (само проверке) кода.
Для тех, кто никогда так не делал, это все может показаться странным. Кажется, на что там смотреть, если я и так все помню?
Однако если научится снимать менять роль и смотреть на свой pull request со стороны — то можно заметить очень много недочетов и избавится от лишних комментариев.
Наверное самым простым способом будет провести ревью где-то через день. А не сразу после завершения задачи.
Попробуйте проанализировать, есть ли в коде такие места, которые по вашему мнению написаны не совсем хорошо и кажется, что можно найти вариант получше.
Не обязательно, что вы найдете более элегантное решение сами, но это по крайней мере даст вам пищу для размышления. Также можно спросить у коллег, как бы они подошли к данной ситуации.
Если коллег нету — то можно просто записать себе в заметки и попробовать подумать через некоторое время. Часто бывает, что идеи вам приходят не тогда, когда вы находитесь за компьютером.
Также полезное бывает взглянуть на большие фичи через каждые несколько месяцев. Зачастую в долгосрочной перспективе открывается много инсайтов на то, что было продумано не так уж и хорошо.
Да, не всегда стоит делать хорошое решение сразу, но в любом случае на свои ошибки посмотреть можно).
В целом, навык самоанализа полезен во всех сферах жизни.
Сам недавно понял, что всем даю такой совет для написания кода, но почему-то не применяю тот же принцип для улучшения своих видео.
Обычно быстро все пересматриваю только для расставленная таймкодов, хотя стоило бы после каждого видео составлять список улучшений. Вот теперь и начну этим заниматься).
#devtips #work
Под мои недавним постом о развитии на работе было много обсуждений. Однако хотел бы сфокусировать свое внимание на self review (само проверке) кода.
Для тех, кто никогда так не делал, это все может показаться странным. Кажется, на что там смотреть, если я и так все помню?
Однако если научится снимать менять роль и смотреть на свой pull request со стороны — то можно заметить очень много недочетов и избавится от лишних комментариев.
Наверное самым простым способом будет провести ревью где-то через день. А не сразу после завершения задачи.
Попробуйте проанализировать, есть ли в коде такие места, которые по вашему мнению написаны не совсем хорошо и кажется, что можно найти вариант получше.
Не обязательно, что вы найдете более элегантное решение сами, но это по крайней мере даст вам пищу для размышления. Также можно спросить у коллег, как бы они подошли к данной ситуации.
Если коллег нету — то можно просто записать себе в заметки и попробовать подумать через некоторое время. Часто бывает, что идеи вам приходят не тогда, когда вы находитесь за компьютером.
Также полезное бывает взглянуть на большие фичи через каждые несколько месяцев. Зачастую в долгосрочной перспективе открывается много инсайтов на то, что было продумано не так уж и хорошо.
Да, не всегда стоит делать хорошое решение сразу, но в любом случае на свои ошибки посмотреть можно).
В целом, навык самоанализа полезен во всех сферах жизни.
Сам недавно понял, что всем даю такой совет для написания кода, но почему-то не применяю тот же принцип для улучшения своих видео.
Обычно быстро все пересматриваю только для расставленная таймкодов, хотя стоило бы после каждого видео составлять список улучшений. Вот теперь и начну этим заниматься).
#devtips #work
👍57❤8🏆2🍓1
Сегодня узнал интересный момент, касательно анимаций.
Наверное все слышали, что для триггера анимаций нужно использовать вложенные
Например, такой код не будет анимировать ничего:
А такой:
Или такой:
Будут.
Я всегда думал, что это правило применимо для всех свойств. Но кажется, что это относится только к тем, которые триггерят reflow.
Например, после запуска вот этого кода, у вас также сработает анимация.
```
function animate() {
const div = document.querySelector("item");
div.style.color = "red";
div.style.transition = "all 1s ease";
div.style.color = "white";
}
```
Выглядит так, что браузер просто пытается оптимизировать лишние reflow, поэтому не запускает анимации для свойств, которые на него воздействуют.
Опять же, это просто предположения, но хочется подробнее про это все узнать. Может кто-то знает, с чем это связано?
UPD: В комментах @senheleet подсказал, что с color работает все, так как у нас по дефолту всегда есть какое-то значение. А с height по дефолту значение auto и от него нельзя начать анимацию.
#devtips #js
Наверное все слышали, что для триггера анимаций нужно использовать вложенные
requestAnimationFrame
или же производить forced reflow, чтобы браузер понял об изменении стилей.Например, такой код не будет анимировать ничего:
function animate() {
const div = document.querySelector("item");
div.style.height = "0px";
div.style.transition = "all 1s ease";
div.style.height = "500px";
}
А такой:
function animate() {
const div = document.querySelector("item");
div.style.height = "0px";
div.style.transition = "all 1s ease";
requestAnimationFrame(() => {
requestAnimationFrame(() => {
div.style.height = "500px";
});
});
}
Или такой:
function animate() {
const div = document.querySelector("item");
div.style.height = "0px";
div.style.transition = "all 1s ease";
div.getBoundingClientRect();
div.style.height = "500px";
}
Будут.
Например, после запуска вот этого кода, у вас также сработает анимация.
```
function animate() {
const div = document.querySelector("item");
div.style.color = "red";
div.style.transition = "all 1s ease";
div.style.color = "white";
}
```
Выглядит так, что браузер просто пытается оптимизировать лишние reflow, поэтому не запускает анимации для свойств, которые на него воздействуют.
Опять же, это просто предположения, но хочется подробнее про это все узнать. Может кто-то знает, с чем это связано?
UPD: В комментах @senheleet подсказал, что с color работает все, так как у нас по дефолту всегда есть какое-то значение. А с height по дефолту значение auto и от него нельзя начать анимацию.
#devtips #js
👍21❤8🏆3👌1🍓1
Сегодня смотрел, что нового происходит в мире JS.
Самое интересное, что я нашел — это выход nest.js v10 и svelte v4.
По поводу nest много сказать не могу, так как я почти не писал на нем.
А вот улучшения по размеру конечного бандла от свелта не плохи, учитывая то, что и так output был у него значительно меньше того же реакт (но меня больше удивило уменьшение размера самого пакета в 4 раза).
Хотя, кажется это только меня и заботило)
Если есть что-то интересное — тоже делитесь в комментариях.
https://svelte.dev/blog/svelte-4
https://trilon.io/blog/nestjs-10-is-now-available
#devtips #js
Самое интересное, что я нашел — это выход nest.js v10 и svelte v4.
По поводу nest много сказать не могу, так как я почти не писал на нем.
А вот улучшения по размеру конечного бандла от свелта не плохи, учитывая то, что и так output был у него значительно меньше того же реакт (но меня больше удивило уменьшение размера самого пакета в 4 раза).
Хотя, кажется это только меня и заботило)
Если есть что-то интересное — тоже делитесь в комментариях.
https://svelte.dev/blog/svelte-4
https://trilon.io/blog/nestjs-10-is-now-available
#devtips #js
❤12🔥8⚡1👎1🏆1🍓1
Сегодня помогал человеку с реализацией draggable canvas (по типу миро, но на html).
Столкнулся с проблемой, когда код внутри setState колбэка вызывался 2 раза.
Код выглядел примерно так:
Благо из-за серых логов быстро смог понять, в чем причина. Но все равно выглядит очень странно.
Да, по задумке колбэк должен быть pure function. Но почему нету никакого лога о том, что второй вызов выдал другой результат?
В общем, при обновлении стейта будьте внимательнее.
#devtips #react
Столкнулся с проблемой, когда код внутри setState колбэка вызывался 2 раза.
Код выглядел примерно так:
setPosition(position => {
const deltaX = e.clientX - prevMousePosition.x;
const deltaY = e.clientY - prevMousePosition.y;
prevMousePosition = {
x: e.clientX,
y: e.clientY,
}
return {
x: position.x + deltaX / scale,
y: position.y + deltaY / scale,
}
В итоге при первом вызове стейт вставал в правильное значение, а при втором — все сбрасывалось, так как prevMousePosition
был уже таким же, что и clientX/clientY из ивента.Благо из-за серых логов быстро смог понять, в чем причина. Но все равно выглядит очень странно.
Да, по задумке колбэк должен быть pure function. Но почему нету никакого лога о том, что второй вызов выдал другой результат?
В общем, при обновлении стейта будьте внимательнее.
#devtips #react
GitHub
React.StrictMode causes setState to fire twice · Issue #12856 · facebook/react
Do you want to request a feature or report a bug? Bug What is the current behavior? When wrapping a with React.StrictMode, setState is fired twice If the current behavior is a bug, please provide t...
👍18🏆2❤1👎1🔥1🍓1
Полезный совет для тех, кто хочет разобраться в библиотеке, смотря на исходный код.
Проще всего будет разобраться в основной задумке и понять, как все работает, смотря на первые версии.
Кода там намного меньше, так как еще не успели покрыть все возможные краевые случаи, работу в iframe и баги старых браузеров.
Но основная логика почти не меняется. А если даже там и происходят изменения — то их проще будет понять, посмотрев на первоначальный код и изменения, которые произошли уже после.
Сам сегодня при подготовке к новому видео зашел в версию React 0.3.0 и был удивлен тем, как там мало кода и как легко его читать.
В общем, если хотите начать разбираться в кишках вашего инструмента, то можно начать со старых версий.
#devtips #opensource
Проще всего будет разобраться в основной задумке и понять, как все работает, смотря на первые версии.
Кода там намного меньше, так как еще не успели покрыть все возможные краевые случаи, работу в iframe и баги старых браузеров.
Но основная логика почти не меняется. А если даже там и происходят изменения — то их проще будет понять, посмотрев на первоначальный код и изменения, которые произошли уже после.
Сам сегодня при подготовке к новому видео зашел в версию React 0.3.0 и был удивлен тем, как там мало кода и как легко его читать.
В общем, если хотите начать разбираться в кишках вашего инструмента, то можно начать со старых версий.
#devtips #opensource
❤61👍36🍓2👎1🏆1
Пока все про
Декораторы, улучшение туплов, работа с методами массивов и тд.
Уже давно не припомню, чтобы в одном релизе сразу столько болей моих правили (последнее что помню — это 4.1).
https://devblogs.microsoft.com/typescript/announcing-typescript-5-2-beta/#decorator-metadata
#devtips #typescript
using
говорят, команда TS подвезла нам очень классные фичи для грядущей версии 5.2.Декораторы, улучшение туплов, работа с методами массивов и тд.
Уже давно не припомню, чтобы в одном релизе сразу столько болей моих правили (последнее что помню — это 4.1).
https://devblogs.microsoft.com/typescript/announcing-typescript-5-2-beta/#decorator-metadata
#devtips #typescript
Microsoft News
Announcing TypeScript 5.2 Beta
Today we are excited to announce the availability of TypeScript 5.2 Beta. To get started using the beta, you can get it through NuGet, or through npm with the following command: npm install -D typescript@beta Here’s a quick list of what’s new in TypeScript…
👍22❤7🏆2🍓1
Одна важная вещь, которую нужно учитывать, если вы предпочитаете использовать типы вместо интерфейсов в TS - это отличие type intersection (`AType & BType`) от наследования интерфейсов.
Давайте для простоты понимания сразу взглянем на пример:
Как вы можете видеть, в кейсе с типами у нас нету overriding'а, то есть тип каждого из свойств тоже объединяется в единый результат, даже если они не совместимы.
В случае же с интерфейсами TS даст нам знать, что тип от которого мы наследуемся имеет другое несовместимой значение свойства, что не поведет за собой проблемы в других местах.
Решение у 2-х проблем одинаковое — использование Omit:
Не говорю, что нужно использовать одно или другое (я считаю тут просто нужно договориться на уровне проекта), но наследование у интерфейсов по лучше.
#devtips #typescript
Давайте для простоты понимания сразу взглянем на пример:
// с типами
type BaseModelType = {
test: string;
foo: string;
}
type MyModelType = {
test: {a: number};
} & BaseModelType;
type TestType = MyModelType['test'];
// ^?
// { a: number } & string;
// с интерфейсами
interface BaseModelInterface {
test: string;
foo: string;
}
interface MyModelInterface extends BaseModelInterface {
// ^^^^^^^^^^^^^^^^
// Interface 'MyModelInterface' incorrectly extends interface 'BaseModelInterface'.
// Types of property 'test' are incompatible.
// Type '{ a: number; }' is not assignable to type 'string'.ts(2430)
test: a: number;
};
type TestType1 = MyModelInterface['test'];
// ^?
// number
Как вы можете видеть, в кейсе с типами у нас нету overriding'а, то есть тип каждого из свойств тоже объединяется в единый результат, даже если они не совместимы.
В случае же с интерфейсами TS даст нам знать, что тип от которого мы наследуемся имеет другое несовместимой значение свойства, что не поведет за собой проблемы в других местах.
Решение у 2-х проблем одинаковое — использование Omit:
// с типами
type BaseModelType = {
test: string;
foo: string;
}
type MyModelType = {
test: {a: number};
} & Omit<BaseModelType, 'test'>;
type TestType = MyModelType['test'];
// ^?
// { a: number };
// с интерфейсами
interface BaseModelInterface {
test: string;
foo: string;
}
interface MyModelInterface extends Omit<BaseModelInterface, 'test'> {
test: number;
};
type TestType1 = MyModelInterface['test'];
// ^?
// number
Не говорю, что нужно использовать одно или другое (я считаю тут просто нужно договориться на уровне проекта), но наследование у интерфейсов по лучше.
#devtips #typescript
👍31❤2👎1🍓1
Очень крутая статья от GitHub о том, как они пилили новый code view (фича кстати очень удобная, был сильно рад, когда выкатили).
Так вот, тут рассказывается очень интересное решение проблемы с поиском по странице, когда у вас есть виртуализация.
Сам не раз сталкивался с подобной болью. Обычно решение было просто создать кастомный поиск. Но… сами понимаете, решение не из лучших.
А тут ребята на много дальше пошли, в общем, прочитаете сами)))
https://github.blog/2023-06-21-crafting-a-better-faster-code-view/
#devtips #js
Так вот, тут рассказывается очень интересное решение проблемы с поиском по странице, когда у вас есть виртуализация.
Сам не раз сталкивался с подобной болью. Обычно решение было просто создать кастомный поиск. Но… сами понимаете, решение не из лучших.
А тут ребята на много дальше пошли, в общем, прочитаете сами)))
https://github.blog/2023-06-21-crafting-a-better-faster-code-view/
#devtips #js
The GitHub Blog
Crafting a better, faster code view
The new GitHub Code View brings users many new features to improve the code reading and exploration experiences, and we overcame a number of unique technical hurdles in order to deliver those features without compromising performance.
👍20❤4🍓2🏆1💊1
На днях перед выступлением вспомнилась история того, как я первый раз рассказывал доклад на внутреннем митапе в Яндексе. Он был даже не на уровне компании, а чисто на уровне Облака, для фронтов.
У меня всегда было желание как-то попробовать себя в выступлениях, и когда я узнал, что не хватает спикеров — то сразу же подался с темой по TS.
До сих пор помню, как сильно волновался и как тяжело было готовить материал, так как на тот момент я только написал где-то 10 статьей на блоге и опыта подготовки презентаций не было. В целом даже power point’ом не пользовался.
Да и с контентом там смешно получилось, сначала собирал кучу материала, в итоге все на час вышло и пришлось вырезать. Сейчас конечно весело вспоминать, а тогда казалось, что вообще мало подготовил всего)))
Волновался перед выступлением тоже очень сильно, весь день спокоен не был (да и за день до тоже), пока не выступил, хотя уровень был не то чтобы сильно высокий.
В общем, веселого вспомнить можно много. Но одна вещь после этого поменялась.
Мне раньше всегда казалось, что у меня какие-то проблемы с речью, когда я начинаю объяснить технические темы. То “акаю” и “экаю” много, то много слов-паразитов, то термины путаю и тд. Поэтому я и начал писать статьи в блог, так как после 2-х видео понял, что запускать канал слишком сложно.
Однако после того, как я много раз повторял доклад, и после репетиций с друзьями, у меня получилось без проблем все рассказать. Причем я начал обращать внимание на все те недочеты в речи, на которые меня навели при репетициях.
Ну и дальше уже по накатанной, чем больше замечаешь свои ошибки, тем больше стараешься их не совершать. Также после этого начал увереннее себя чувствовать на меж командных созвонах. Казалось, что в сравнении с выступлением это мелочи.
По итогу через 2 месяца уже загрузил 3-й видос на канал про хук useCombinedRef. А дальше уже сами знаете думаю.
Часто слышу, что людям предлагают от компании выступить на конференции, либо рассказать что-то на внутреннем митапе. Но почти всегда все отказываются. Хотя кажется, что минусов нету, а плюсы, как в моем случае, могут быть очень большие.
Да, для тех, кто изначально с хорошими софтами, все это может выглядеть странно. Но все те, кто никогда не пробовал себя в роли докладчика — очень советую.
#devtips #softskills
У меня всегда было желание как-то попробовать себя в выступлениях, и когда я узнал, что не хватает спикеров — то сразу же подался с темой по TS.
До сих пор помню, как сильно волновался и как тяжело было готовить материал, так как на тот момент я только написал где-то 10 статьей на блоге и опыта подготовки презентаций не было. В целом даже power point’ом не пользовался.
Да и с контентом там смешно получилось, сначала собирал кучу материала, в итоге все на час вышло и пришлось вырезать. Сейчас конечно весело вспоминать, а тогда казалось, что вообще мало подготовил всего)))
Волновался перед выступлением тоже очень сильно, весь день спокоен не был (да и за день до тоже), пока не выступил, хотя уровень был не то чтобы сильно высокий.
В общем, веселого вспомнить можно много. Но одна вещь после этого поменялась.
Мне раньше всегда казалось, что у меня какие-то проблемы с речью, когда я начинаю объяснить технические темы. То “акаю” и “экаю” много, то много слов-паразитов, то термины путаю и тд. Поэтому я и начал писать статьи в блог, так как после 2-х видео понял, что запускать канал слишком сложно.
Однако после того, как я много раз повторял доклад, и после репетиций с друзьями, у меня получилось без проблем все рассказать. Причем я начал обращать внимание на все те недочеты в речи, на которые меня навели при репетициях.
Ну и дальше уже по накатанной, чем больше замечаешь свои ошибки, тем больше стараешься их не совершать. Также после этого начал увереннее себя чувствовать на меж командных созвонах. Казалось, что в сравнении с выступлением это мелочи.
По итогу через 2 месяца уже загрузил 3-й видос на канал про хук useCombinedRef. А дальше уже сами знаете думаю.
Часто слышу, что людям предлагают от компании выступить на конференции, либо рассказать что-то на внутреннем митапе. Но почти всегда все отказываются. Хотя кажется, что минусов нету, а плюсы, как в моем случае, могут быть очень большие.
Да, для тех, кто изначально с хорошими софтами, все это может выглядеть странно. Но все те, кто никогда не пробовал себя в роли докладчика — очень советую.
#devtips #softskills
❤35👍10🏆2🍓2⚡1💊1
Важный момент для тех, кто готов поработать на разных стеках (vue, react etc.) либо позициях (fullstack, frontend, lead). Если вы подаетесь не в бигтех, то лучше делать специализированное резюме под каждую позицию.
Причина тут простая — каждая компания хочет взять человека, который идеально подходит под их ситуацию (особенно во времена, как сейчас). Вы можете написать, что работали с React, Vue и тд. Но по итогу никто в подробности вдаваться не будет, и подумают, что вы не эксперт в этих технологиях.
Понятное дело, что это не везде так. Но кажется сделав несколько резюме вы ничего не теряете.
P.S. Недавно даже слышал от нескольких людей, что им отказ отправили из-за того, что у них опыта с Next нету. Очень сильно был удивлен, но видимо из-за состояния рынка у компаний есть большой выбор.
#devtips #job
Причина тут простая — каждая компания хочет взять человека, который идеально подходит под их ситуацию (особенно во времена, как сейчас). Вы можете написать, что работали с React, Vue и тд. Но по итогу никто в подробности вдаваться не будет, и подумают, что вы не эксперт в этих технологиях.
Понятное дело, что это не везде так. Но кажется сделав несколько резюме вы ничего не теряете.
P.S. Недавно даже слышал от нескольких людей, что им отказ отправили из-за того, что у них опыта с Next нету. Очень сильно был удивлен, но видимо из-за состояния рынка у компаний есть большой выбор.
#devtips #job
❤19🔥5👍3🍓2💊2🏆1
Всем привет!
Начал часто получать сообщения от подписчиков о том, что у них большая проблема с лайв кодингом во время собеседования.
К сожалению, тут никаково быстрого решения найти нельзя. Пока у вас мало опыта в разработке и в целом прохождении собеседований — такое будет происходить.
Да, у кого-то меньше, у кого-то больше, но тем ни менее, у всех оно есть.
Даже если вы уже опытный разработчик с опытом собеседований, то после долгого перерыва все равно надо «входить в колею».
Самое главное — это умение увести свои мысли в сторону проблемы и перестать негативно себя оценивать.
Также из небольших хаков могу посоветовать замедлить дыхание, делать большие вдохи. Когда дышите спокойно — тогда и в целом состояние становится более расслабленным. Если совсем стрессово, то помогает)))
Так что ничего другого не могу посоветовать, кроме как проходить больше собесов.
#devtips #job
Начал часто получать сообщения от подписчиков о том, что у них большая проблема с лайв кодингом во время собеседования.
К сожалению, тут никаково быстрого решения найти нельзя. Пока у вас мало опыта в разработке и в целом прохождении собеседований — такое будет происходить.
Да, у кого-то меньше, у кого-то больше, но тем ни менее, у всех оно есть.
Даже если вы уже опытный разработчик с опытом собеседований, то после долгого перерыва все равно надо «входить в колею».
Самое главное — это умение увести свои мысли в сторону проблемы и перестать негативно себя оценивать.
Также из небольших хаков могу посоветовать замедлить дыхание, делать большие вдохи. Когда дышите спокойно — тогда и в целом состояние становится более расслабленным. Если совсем стрессово, то помогает)))
Так что ничего другого не могу посоветовать, кроме как проходить больше собесов.
#devtips #job
❤34👍21💊4🍓2🏆1
Еще 3 новых proposal дошли до stage-3:
- https://github.com/tc39/proposal-source-phase-imports
- https://github.com/tc39/proposal-array-grouping
- https://github.com/tc39/proposal-promise-with-resolvers
Первое нововведение добавляет реально новый функционал. Правда кроме wasm пока не понял, где это может быть нужно. Но я думаю тут подскажут еще.
Что же касается Promise.withResolvers и array grouping — то кажется просто решили добавить пару утилит в сам язык) Мелочь, но может чуть упростить работу местами.
#devtips #js
- https://github.com/tc39/proposal-source-phase-imports
- https://github.com/tc39/proposal-array-grouping
- https://github.com/tc39/proposal-promise-with-resolvers
Первое нововведение добавляет реально новый функционал. Правда кроме wasm пока не понял, где это может быть нужно. Но я думаю тут подскажут еще.
Что же касается Promise.withResolvers и array grouping — то кажется просто решили добавить пару утилит в сам язык) Мелочь, но может чуть упростить работу местами.
#devtips #js
👍14❤8🔥3🍓2🏆1
Еще один простой и полезный совет для тех, кто проходит собесы.
Записывайте все свои собеседования! Уже давно практикую это дело. Очень помогает в разборе ошибок.
Не надо будет вспоминать какие задачи вам дали. Также часто можно заметить проблемы с точки зрения коммуникации — не понимание вопроса, не правильное использование терминов, плохая подача себя, как специалиста.
В плане разбора ошибок также советую кидать друзьям разработчикам, так как человек со стороны может дать полезную перспективу. Да и так обычно все рады посмотреть на то, какие вопросы задают в определенной компании.
А, ну и для записи проще всего будет скачать OBS — open source, под все платформы, куча гайдов в интернете.
В общем, всем советую.
#devtips #job
Записывайте все свои собеседования! Уже давно практикую это дело. Очень помогает в разборе ошибок.
Не надо будет вспоминать какие задачи вам дали. Также часто можно заметить проблемы с точки зрения коммуникации — не понимание вопроса, не правильное использование терминов, плохая подача себя, как специалиста.
В плане разбора ошибок также советую кидать друзьям разработчикам, так как человек со стороны может дать полезную перспективу. Да и так обычно все рады посмотреть на то, какие вопросы задают в определенной компании.
А, ну и для записи проще всего будет скачать OBS — open source, под все платформы, куча гайдов в интернете.
В общем, всем советую.
#devtips #job
❤30👍19👌3💊3🔥2🏆2🍓2
Сегодня хотел бы поговорить касательно такой вещи, как прокрастинация.
Очень часто за собой замечаю, что сложно делать какие-то дела/проекты, длительность которых больше одного дня.
Не знаю почему, но все время есть желание отложить что-то на потом, кажется, что там все просто и я успею все сделать.
Но, как сами понимаете, человек не очень хорош в оценке задач.
Даже с двумя видео в неделю изначально идея была в том, что я всю неделю готовлю материал по 1-2 часа, и потом за один день снимаю сразу 2 видео.
Но после нескольких проб я понял, что так у меня вообще все плохо идет.
Даже раньше, когда писал посты в свой блог, была та же проблема. Если не укладываюсь в один день — то обычно все сильно затягивается.
Лично для себя я понял, что лучше всего ставить себе ограничение на определенные задачи в виде одного дня. Если проект большой — то нужно делить на куски в рамках одного дня. Лучше всего, если эти куски будут не связанные.
С теми же видео, если у меня стоит подготовка большой темы, то намного лучше выходит, когда у меня первый день направлен на сбор материала и ответ на набор вопросов, которые мне хотелось бы разобрать. А второй уже на структуризацию и съемку. Если просто выделаю 2 дня — получается бардак какой-то.
Для кого-то может быть очевидно, но я почему-то не сразу к этому пришел.
#devtips #productivity
Очень часто за собой замечаю, что сложно делать какие-то дела/проекты, длительность которых больше одного дня.
Не знаю почему, но все время есть желание отложить что-то на потом, кажется, что там все просто и я успею все сделать.
Но, как сами понимаете, человек не очень хорош в оценке задач.
Даже с двумя видео в неделю изначально идея была в том, что я всю неделю готовлю материал по 1-2 часа, и потом за один день снимаю сразу 2 видео.
Но после нескольких проб я понял, что так у меня вообще все плохо идет.
Даже раньше, когда писал посты в свой блог, была та же проблема. Если не укладываюсь в один день — то обычно все сильно затягивается.
Лично для себя я понял, что лучше всего ставить себе ограничение на определенные задачи в виде одного дня. Если проект большой — то нужно делить на куски в рамках одного дня. Лучше всего, если эти куски будут не связанные.
С теми же видео, если у меня стоит подготовка большой темы, то намного лучше выходит, когда у меня первый день направлен на сбор материала и ответ на набор вопросов, которые мне хотелось бы разобрать. А второй уже на структуризацию и съемку. Если просто выделаю 2 дня — получается бардак какой-то.
Для кого-то может быть очевидно, но я почему-то не сразу к этому пришел.
#devtips #productivity
❤40👍16🔥8🍓2🏆1💊1
Сегодня поймал себя на мысли, что после 3-х стримов по солиду и подготовке видео по серверным компонентам (надеюсь выйдет на этой неделе), снова проснулось желание поразбираться в новых темах и потыкать незнакомые технологии.
Есть какое-то ментальные удовольствие, когда после дебаггинга и долго непонимания того, как все устроено, получается во всем наконец разобраться.
Это конечно не то же самое ощущение, когда ты только в первый раз учишься программировать, но все же очень похоже чувство.
Да и в целом считаю, что после того, как хорошо углубился в одну технологию/язык/фреймворк, есть смысл самому пощупать альтернативы. Это дает лучше понять плюсы и минусы вашего решения, да и кругозор расширяет.
В общем, думаю по чаще что-то подобное проводить в формате лайвов. Пока без четкого графика (и так уже есть загрузка по видосам и постам), буду сообщать тут за 1-2 дня.
Пока в планах в начале сделать более крупный проект на серверных компонентах. А дальше можно уже и что-то другое пробовать. Буду рад вашем идеям.
Ну а тем, кто как и я долго время работал с знакомыми технологиями — рекомендую тоже попробовать что-то новое (если вы конечно не новичок еще, в таком случае лучше углублять знания).
#devtips #learning
Есть какое-то ментальные удовольствие, когда после дебаггинга и долго непонимания того, как все устроено, получается во всем наконец разобраться.
Это конечно не то же самое ощущение, когда ты только в первый раз учишься программировать, но все же очень похоже чувство.
Да и в целом считаю, что после того, как хорошо углубился в одну технологию/язык/фреймворк, есть смысл самому пощупать альтернативы. Это дает лучше понять плюсы и минусы вашего решения, да и кругозор расширяет.
В общем, думаю по чаще что-то подобное проводить в формате лайвов. Пока без четкого графика (и так уже есть загрузка по видосам и постам), буду сообщать тут за 1-2 дня.
Пока в планах в начале сделать более крупный проект на серверных компонентах. А дальше можно уже и что-то другое пробовать. Буду рад вашем идеям.
Ну а тем, кто как и я долго время работал с знакомыми технологиями — рекомендую тоже попробовать что-то новое (если вы конечно не новичок еще, в таком случае лучше углублять знания).
#devtips #learning
❤26👍14🍓3🏆1💊1
Касательно сайд-проектов. Часто бывает, когда люди доходят до комфортного уровня на своей работе, им хочется перейти в разработку своих проектов.
Однако, если цель проекта — заработок денег, то подходить к нему стоило бы по другому, чем к обычному пет проекту, который пишется «по фану».
Основная проблема, которую я вижу, это время, которое уйдёт для проверки вашей идеи. В идеале оно должно быть как можно меньше.
Однако когда вы разрабатываете какой-то SaaS в одиночку и еще вне работы, то даже разработка MVP может занять несколько месяцев, а то и год. Особенно если вы будете делать все сами на модных технологиях.
И причем даже если вы и сделаете MVP, и он «не зайдёт», то не особо ясно, в чем проблема. Она находится в самой идеи или же у вас есть проблемы с реализацией — плохой маркетинг, не удобный интерфейс и миллион других проблем.
Я сам в какой-то момент по этой же причине перестал активно занимать сайд-проектами с целью заработка.
С точки зрения заработка, кажется, что самый оптимальный вариант, это построение какого-то скучного бизнеса/источника дохода, который точно будет приносить деньги при хорошей реализации. Например, выполнение крупных проектов на заказ или консалтинг.
А уже с этих денег можно и спонсировать более крупные идеи. Либо же просто увеличивать доход от туда.
Опять же, тут нужно еще смотреть на цель. Может вы просто хотите сами разрабатывать крутые продукты. Я тут все пишу чисто с финансовой точки зрения.
Не хочется, чтобы люди теряли много времени на разработку идеи, которая потом окажется не такой уж и нужной.
#devtips #work
Однако, если цель проекта — заработок денег, то подходить к нему стоило бы по другому, чем к обычному пет проекту, который пишется «по фану».
Основная проблема, которую я вижу, это время, которое уйдёт для проверки вашей идеи. В идеале оно должно быть как можно меньше.
Однако когда вы разрабатываете какой-то SaaS в одиночку и еще вне работы, то даже разработка MVP может занять несколько месяцев, а то и год. Особенно если вы будете делать все сами на модных технологиях.
И причем даже если вы и сделаете MVP, и он «не зайдёт», то не особо ясно, в чем проблема. Она находится в самой идеи или же у вас есть проблемы с реализацией — плохой маркетинг, не удобный интерфейс и миллион других проблем.
Я сам в какой-то момент по этой же причине перестал активно занимать сайд-проектами с целью заработка.
С точки зрения заработка, кажется, что самый оптимальный вариант, это построение какого-то скучного бизнеса/источника дохода, который точно будет приносить деньги при хорошей реализации. Например, выполнение крупных проектов на заказ или консалтинг.
А уже с этих денег можно и спонсировать более крупные идеи. Либо же просто увеличивать доход от туда.
Опять же, тут нужно еще смотреть на цель. Может вы просто хотите сами разрабатывать крутые продукты. Я тут все пишу чисто с финансовой точки зрения.
Не хочется, чтобы люди теряли много времени на разработку идеи, которая потом окажется не такой уж и нужной.
#devtips #work
❤24👍11🍓2💯1🏆1
На днях общался с одним из зрителей, который планирует устроиться работать фронтом. Все бы ничего, однако в качестве подготовки к работе он выбрал слишком академический подход, решив заучивать ответы на вопросы, которые дают на собеседованиях.
Подобный подход меня удивил, так как до этого я никогда даже и не слышал таких идей. Сразу же скажу, что так делать я бы крайне не советовал.
Да, перед прохождением собеседований стоит ознакомиться с вопросами, которые обычно задают. Но цель никогда не должна быть просто выучить их. Когда вы видите незнакомый вопрос — нужно найти и разобраться в темах, понимания которых вам не хватает для корректного ответа.
А все вопросы все равно не выучишь. Часто бывает собеседующие на основе вашего опыта и предыдущих ответов строят последующие вопросы и темы для обсуждения. В таком случае раскроются ваши реальные знания, а заученные ответы не смогут ничем помочь.
В конце концов главной целью должно быть умение решать проблемы посредством кода, так что написание сложных и неочевидных проектов даст намного больше пользы. Там и навыки реально прокачаете, и много теории разберете в ходе решения проблем.
#devtips #work
Подобный подход меня удивил, так как до этого я никогда даже и не слышал таких идей. Сразу же скажу, что так делать я бы крайне не советовал.
Да, перед прохождением собеседований стоит ознакомиться с вопросами, которые обычно задают. Но цель никогда не должна быть просто выучить их. Когда вы видите незнакомый вопрос — нужно найти и разобраться в темах, понимания которых вам не хватает для корректного ответа.
А все вопросы все равно не выучишь. Часто бывает собеседующие на основе вашего опыта и предыдущих ответов строят последующие вопросы и темы для обсуждения. В таком случае раскроются ваши реальные знания, а заученные ответы не смогут ничем помочь.
В конце концов главной целью должно быть умение решать проблемы посредством кода, так что написание сложных и неочевидных проектов даст намного больше пользы. Там и навыки реально прокачаете, и много теории разберете в ходе решения проблем.
#devtips #work
👍42❤9👌3🏆2🍓2
Весь код, который вы пишите — легаси. Пусть не сейчас, но рано или поздно он в него превратится. Обычно намного быстрее, чем вы ожидаете.
Этот тот совет, который я хотел бы дать себе когда только начинал свой путь в IT. Ведь когда нету большого опыта, легко можно поверить в утопию об идеальных проектах, где работают настоящие профессионалы, используются все паттерны и только современные технологии.
Все это, по крайней мере у меня, вызвало не здравое отношение к коду, который я пишу. Постоянно казалось, что работаю не над теми проектами, делаю что-то не так.
Хотя на самом деле почти все проекты, которые находятся в активной разработке, выглядят не самым лучшим образом. Да, есть исключения. Но зачастую проект оценивается не тем, насколько там все хорошо, а тем, насколько там мало легаси и плохих решений.
Писать не идеальный код нормально. Скорее даже логично и выгодно. Главное это делать так, чтобы ваши плохие решения не размазывались по всему проекту. Иначе их будет почти невозможно выпилить.
Даже если вы и напишите что-то быстрое, красивое и умное, через 2-3 месяца после вашего ухода кто-то накидает туда костылей, чтобы съэкономить себе пару часов. А через полгода-год вашего кода уже и не будет. Либо он вообще станет легаси, который никто трогать не хочет. Опять же, я может чут-чуть преувеличиваю, но обычно примерно так и происходит.
Ну и дам сразу дисклеймер, что я не призываю писать говно-код, совсем не думая о будущем. Да, старайтесь писать хорошо, применяйте по возможности оптимизации и паттерны, делайте очевидные улучшения, которые упростят работу с вашим кодом. Но не надо фокусировать только на “идеальности” вашего кода.
P.S. Сейчас вспомнилась аналогия из книги 7 навыков Стивена Кови, где он приводил пример с человеком, который тратит большую часть дня на подготовку здорового питания, тренировки и тд, чтобы в итоге прожить дольше. Но на самом деле почти вся его жизнь таким образом и уходит.
#devtips #work
Этот тот совет, который я хотел бы дать себе когда только начинал свой путь в IT. Ведь когда нету большого опыта, легко можно поверить в утопию об идеальных проектах, где работают настоящие профессионалы, используются все паттерны и только современные технологии.
Все это, по крайней мере у меня, вызвало не здравое отношение к коду, который я пишу. Постоянно казалось, что работаю не над теми проектами, делаю что-то не так.
Хотя на самом деле почти все проекты, которые находятся в активной разработке, выглядят не самым лучшим образом. Да, есть исключения. Но зачастую проект оценивается не тем, насколько там все хорошо, а тем, насколько там мало легаси и плохих решений.
Писать не идеальный код нормально. Скорее даже логично и выгодно. Главное это делать так, чтобы ваши плохие решения не размазывались по всему проекту. Иначе их будет почти невозможно выпилить.
Даже если вы и напишите что-то быстрое, красивое и умное, через 2-3 месяца после вашего ухода кто-то накидает туда костылей, чтобы съэкономить себе пару часов. А через полгода-год вашего кода уже и не будет. Либо он вообще станет легаси, который никто трогать не хочет. Опять же, я может чут-чуть преувеличиваю, но обычно примерно так и происходит.
Ну и дам сразу дисклеймер, что я не призываю писать говно-код, совсем не думая о будущем. Да, старайтесь писать хорошо, применяйте по возможности оптимизации и паттерны, делайте очевидные улучшения, которые упростят работу с вашим кодом. Но не надо фокусировать только на “идеальности” вашего кода.
P.S. Сейчас вспомнилась аналогия из книги 7 навыков Стивена Кови, где он приводил пример с человеком, который тратит большую часть дня на подготовку здорового питания, тренировки и тд, чтобы в итоге прожить дольше. Но на самом деле почти вся его жизнь таким образом и уходит.
#devtips #work
❤40👍15🔥4🏆1🍓1💊1
Под одним из моих прошлых постов про заучивание вопросов на собесе меня спрашивали, какие сложные проекты я бы мог посоветовать.
Несмотря на то, что для каждого понимание “сложный” может быть разным, давайте попробую дать несколько примеров, которые мне кажется могут помочь разобраться во многих важных темах.
0.1) Если вы начинающий, то можно написать любой проект, который вы еще не делали на курсах/туториалах. Из некоторых идей — аналог Trello, мини-чат, какое-то специфичное приложение для автоматизации ваших рутинных задач.
0.2) Любой npm пакет (для начало лучше брать что-то простое), которым вы пользуетесь, и не понимаете, как он работает.
1) Библиотека для анимаций под React или любой другой фреймворк. Кода там мало, если рассматривать простые flip анимации. Но очень много интересных кейсов. Я когда-то писал такое решение под React. Очень многому научился.
2) Простой конструктор сайтов. Да, такого уже много есть. Но сам по проработке проект далеко не очевидный. Нужно придумать формат, в котором хранятся ваши страницы, на основе этого формата рендерить компоненты. Ну и сам UI для сборки страниц. Начать лучше с простого, а дальше можно улучшать.
3) Server Dirven UI для форм. Чем-то похоже на конструктор сайтов. Правда тут больше сложностей с продумыванием формата самой схемы вашей формы. Как будет писаться валидация? Как будут работать связанные поля и тд.
А так вообще идей можно много придумать. Это первое, что мне пришло в голову. Чисто с точки зрения развития навыков мне было проще самому реализовывать библиотеки, так как ни о чем кроме кода там думать не нужно было. Но наверняка для некоторых людей это будет слишком скучно.
UPD: Делитесь вашими идеями интересных проектов в комментариях.
#devtips #sideprojects
Несмотря на то, что для каждого понимание “сложный” может быть разным, давайте попробую дать несколько примеров, которые мне кажется могут помочь разобраться во многих важных темах.
0.1) Если вы начинающий, то можно написать любой проект, который вы еще не делали на курсах/туториалах. Из некоторых идей — аналог Trello, мини-чат, какое-то специфичное приложение для автоматизации ваших рутинных задач.
0.2) Любой npm пакет (для начало лучше брать что-то простое), которым вы пользуетесь, и не понимаете, как он работает.
1) Библиотека для анимаций под React или любой другой фреймворк. Кода там мало, если рассматривать простые flip анимации. Но очень много интересных кейсов. Я когда-то писал такое решение под React. Очень многому научился.
2) Простой конструктор сайтов. Да, такого уже много есть. Но сам по проработке проект далеко не очевидный. Нужно придумать формат, в котором хранятся ваши страницы, на основе этого формата рендерить компоненты. Ну и сам UI для сборки страниц. Начать лучше с простого, а дальше можно улучшать.
3) Server Dirven UI для форм. Чем-то похоже на конструктор сайтов. Правда тут больше сложностей с продумыванием формата самой схемы вашей формы. Как будет писаться валидация? Как будут работать связанные поля и тд.
А так вообще идей можно много придумать. Это первое, что мне пришло в голову. Чисто с точки зрения развития навыков мне было проще самому реализовывать библиотеки, так как ни о чем кроме кода там думать не нужно было. Но наверняка для некоторых людей это будет слишком скучно.
UPD: Делитесь вашими идеями интересных проектов в комментариях.
#devtips #sideprojects
👍39❤3🔥3🏆3🍓2
Одна небольшая вещь, которая показалась интересной в solid js, это то, как работают binding’и в ивентах.
Для тех, кто не в курсе о чем речь, в solid есть 2 способа того, как вы можете описывать ваши ивент хендлеры:
Вообще в первый раз, когда я увидел такой синтаксис, решение мне показалось очень странным, так как можно просто самому написать колбэк и передавать аргументы в нужные позиции.
Однако в доке написано:
Поэтому мне стало интересно, как же это вообще работает. Если зайти в playground, то можно увидеть, что наш JSX скомпилится в что-то такое:
То есть как вы можете увидеть, обработчик ивента и сами данные биндятся на прямую в DOM элемент. Дальше, когда ивент доход до document (да, в solid тоже есть делегация ивентов) там из event.target берется сам обработчик и дата, которая была прикреплена к данному элементу (ссылка на код). Затем уже обработчик вызывается с правильной датой и ивентом.
В целом, не сказать, что это какая-то сильная оптимизация. Да и биндинг даты сам не реактивный. Но чисто с технической стороны меня такой трюк порадовал)))
#devtips #solid
Для тех, кто не в курсе о чем речь, в solid есть 2 способа того, как вы можете описывать ваши ивент хендлеры:
// первый способ
const handleClick = e => {...}
<div onClick={handleClick}></div>
// второй способ
const handleClick = (id, e) => {...}
<div onClick={[handleClick, item.id]}></div>
Вообще в первый раз, когда я увидел такой синтаксис, решение мне показалось очень странным, так как можно просто самому написать колбэк и передавать аргументы в нужные позиции.
Однако в доке написано:
This doesn't use bind or create an additional closure, so it is a highly optimized way of delegating events.
Поэтому мне стало интересно, как же это вообще работает. Если зайти в playground, то можно увидеть, что наш JSX скомпилится в что-то такое:
const _el$ = _tmpl$();
_el$.$$click = handleClick;
_el$.$$clickData = item.id;
То есть как вы можете увидеть, обработчик ивента и сами данные биндятся на прямую в DOM элемент. Дальше, когда ивент доход до document (да, в solid тоже есть делегация ивентов) там из event.target берется сам обработчик и дата, которая была прикреплена к данному элементу (ссылка на код). Затем уже обработчик вызывается с правильной датой и ивентом.
В целом, не сказать, что это какая-то сильная оптимизация. Да и биндинг даты сам не реактивный. Но чисто с технической стороны меня такой трюк порадовал)))
#devtips #solid
❤14👍11🍓2💊2🔥1🏆1