Кодовая база
1.29K subscribers
17 photos
1 video
34 links
База во фронтенд разработке.

Написать в личку: https://xn--r1a.website/devmargooo
Download Telegram
Сегодня получила в работу таску, в которой написано:

1. Выяснить детали
2. Прикинуть
3. Реализовать

Эта задача наглядно иллюстрирует идею из поста выше: сейчас не нужны люди, которым требуется говорить, что сделать. Сейчас ищут людей, которые сами видят проблемы и решают их.
Как понять, что вы готовы к современному рынку поиска работы? Вас не смущает постановка задачи выше.
👍13💯8❤‍🔥6🤮3💩3👎21😁1
Вчера развлекала себя решением литкода и любопытства ради посмотрела, сколько же у меня решенных задач в аккаунте.

Девять. Всего девять задач за всё время существования аккаунта.

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

Честно говоря, я не знаю паттерны решения популярных алгоритмических задач. Я сохранила себе несколько методичек, но до сих пор их не прочла. Я не знаю алгоритмы — я их придумываю. Каждый раз, на каждом собеседовании. Получается не всегда — около 10% задач у меня не получается решить за ограниченное время собеседования (пока не получается 😈).

Я окончательно укрепилась во мнении, что ценность алгоритмов не в том, чтобы их “знать” или “помнить”. Ценность в том, чтобы изобрести их с нуля.

Кстати, поздравьте меня с десятой решенной задачей 🙂

#алгоритмы
1👍26💩22👎11🔥9🤮87🤡7
🩹Просто взять готовую либу, и причем здесь DDD

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

Честно говоря, код, написанный своими силами (а не готовая либа) — это самый лучший код.
Во-первых, он не содержит 100500 корнер кейсов — в нем только нужное вам.
Во-вторых, вы в любой момент можете изменить его поведение без необходимости делать МР в опенсорс.
В-третьих, вы не рискуете в произвольный момент времени столкнуться с тем, что важная зависимость вдруг стала deprecated.

У собственного кода есть только один недостаток: он дорогой. Взять либу сильно дешевле, чем реализовывать собственными силами.

Однако не для любого проекта самое главное — это дешевизна.

📌 DDD (domain driven design) выделяет три поддомена:

1️⃣ Основные поддомены (core subdomains) — ядро бизнес-модели. За счет них бизнес получает конкурентное преимущество на рынке. Такие поддомены содержат уникальную функциональность, несущую ценность для пользователя. Например, это рекомендательная система YouTube.

2️⃣ Универсальные поддомены (generic subdomains) отвечают за типовые решения и не дают конкурентное преимущество на рынке. Например, авторизация или оплата.

3️⃣ Вспомогательные поддомены (supporting subdomains) — поддомены, которые поддерживают бизнес компании и не являются конкурентным преимуществом на рынке. Например, красивый лендинг.

Как вы можете заметить, конкурентное преимущество дает только основной поддомен, и именно он обычно оттягивает на себя основные силы и деньги компании. Важно реализовать такие бизнес фичи не просто “шоб работало”, а чтобы это было лучше, чем у других.

В каком случае нельзя использовать внешнюю либу для подсветки текста (или кода как текста)? В том случае, если это основной поддомен. Например, вы пишите свой супермегавау онлайн редактор кода, в котором можно на лету кастомизировать подсветку кода.

На собеседованиях обычно хотят увидеть, как бы вы справились с основным поддоменом, потому что если вы справитесь с ним, то с другими справитесь наверняка.

Советую на досуге поразмышлять на тему, работа в каких бизнес доменах даст вам конкурентное преимущество на рынке труда и отстрочит вашу замену иишницей. Всех с наступающим! 🎄
Please open Telegram to view this post
VIEW IN TELEGRAM
22👍9🔥6👎5🤡5🤮2💯1🤨1
⚡️Больше не Фронтенд кухня.

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

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

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

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

Я верю, что знание базы позволит вам писать сегодня на React, завтра — на Vue или Angular, а послезавтра и вовсе стать фуллстек разработчиком. В этом году я планирую сделать в своих постах акцент на базу в веб-разработке, что поможет вам стать более гибкими на турбулентном рынке, быстро адаптироваться к изменениям и быть инженером, а не оператором фреймворка.

Да прибудет с вами база!
469❤‍🔥17👍12👏6🫡6👎3🔥2🤮2🤡2💯1
Основной принцип программирования

Основной принцип программирования не имеет ничего общего с написанием кода. Он заключается в решении утилитарной задачи.

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

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

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

Поэтому, когда вы не понимаете, как вам написать код хорошо, искать ответ нужно не в технологиях, а в вашей бизнес задаче. Вам нужно определить, как должна себя вести система. Никакого “хорошего” и “плохого” кода в вакууме не существует, потому что код всегда связан с конкретной задачей. Хороший код — это такой код, который хорошо решает поставленную задачу, а плохой код — тот, который решает ее плохо, пускай даже в нем соблюдаются все принципы дядюшки Боба и другие best practices.

У меня как-то был на консультации парень, который не мог понять, стоит ему хранить некоторые тексты в своем проекте на фронтенде или на бекенде. Я ответила, что каждый подход имеет свои преимущества. Первый вариант он может реализовать прямо сейчас без доработок, а для второго нужно больше усилий, но зато он сможет динамически менять тексты, например, через админку, без дополнительного деплоя. “Нет, я не понял,” — возразил он, — “мне на фронтенде этот код писать или на бекенде?”.

Еще один пример из практики я уже рассказывала: один парень на консультации на вопрос, зачем он написал конкретный код, ответил — чтобы задачу в жире закрыть. Как вы понимаете, в его случае проблема тоже была не в знаний Javascript, а в том, что он банально не знал, что ему нужно сделать.

📌 Решение всегда сначала появляется в голове, а уже потом в коде.

Невозможно запрограммировать то, чего в вашей голове нет. Волшебной таблетки не существует. Решение, как должна работать ваша система, вам придется принимать самостоятельно или вместе с командой.

Подытожу. Задачи программирования решаются сначала в голове, и только потом переносятся на код. Как решать эти задачи, буду писать далее. Спойлер — там дело снова не в знании языка программирования.
Please open Telegram to view this post
VIEW IN TELEGRAM
1👍2510🔥5🤡3👎2💩2🤮1
Кодовая база
Основной принцип программирования Основной принцип программирования не имеет ничего общего с написанием кода. Он заключается в решении утилитарной задачи. Программы, которые мы разрабатываем, имеют утилитарную цель. Они решают конкретные бытовые задачи:…
Кстати, прямо сейчас в одной социальной сети идет спор о том, что React ужасен, потому что “нужно отделять js от разметки”. Кому нужно? Зачем нужно? Для чего нужно?

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

Вопрос целесообразности — это самый важный вопрос
, а вопрос вкуса — дело десятое. А для того, чтобы код был целесообразен, у него обязана быть цель (утилитарная). А вот если цели нет, тогда “хорошего” кода получиться не может, а получится только очередной срач спор в интернетике.
1👍21🔥115👎3🤮3💩3💯3
Сегодня на мок собеседование приходила девочка с не очень большим опытом программирования, которая про алгоритмы и структуры данные только слышала краем уха. Когда мы дошли до задачи, в которой нужно было обойти дерево, она, сама того не зная, написала dfs. Я считаю, что это то, к чему нужно стремиться — выучить все алгоритмы долго и тяжело, да и можно забыть. Если алгоритм несложный, намного проще. будет вывести его прямо на месте.

Но если вы все-таки хотите что-нибудь выучить, то рекомендую изучить алгоритмы обходы деревьев (вышеупомянутый dfs и bfs). По моей личной статистике, они встречаются на собеседованиях чаще всего.
🔥2811👍6🤮4👎3💩2
Вчера общались с одним парнем про найм и он мне говорит:
— Даже не знаю, что сейчас рынку нужно: одни говорят, что тупо кнопки красить, другие — что нужны умные

Друзья, а кому сейчас нужны люди кнопки красить? В моем пузыре все ищут умных.
👍17🔥8😁64👎2💩2🤡2🤔1
Forwarded from Denis Uk
Нужны умные что бы понимали когда можно кнопки красить, а когда лучше подумать
16👍7🔥6🤷‍♂2👎2🤮2💩2
🙈 Оставьте эйчаров в покое!

Я долго сдерживалась, но кто-то должен вам это сказать.

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

Когда я про это впервые услышала, я сразу вспомнила анекдот про поручика Ржевского . Некоторые товарищи еще удивляются, что hr им после этого не отвечают. Мне тоже удивительно, потому что лично я бы сразу кликнула на кнопки “заблокировать” и “это спам”. Ребят, а вы сами-то любите, когда вам в личку пишут незнакомые люди и предлагают свои услуги? И не надо оправдываться, мол, у hr работа такая. Их работа — разбирать отклики там, где они вакансию публиковали, а личная телега — это для общения с близкими.

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

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

Всем хороших выходных! 🌺
Please open Telegram to view this post
VIEW IN TELEGRAM
2🤡5218🔥10💩7👎6🤓4😐3😈2🤮1
🎓 Теория vs практика

Иногда ко мне приходят на консультации ребята, которые говорят — я отлично знаю программирование в теории, а вот на практике что-то не получается. Я глубоко убеждена, что в промышленной разработке нет большой разницы между “теорией” и “практикой”, тем более что в нашей сфере теорией часто называют довольно прикладные вещи, типа механизма event loop или жизненного цикла события в React компоненте.

В дидактике выделяется несколько звеньев обучения:
🔴Постановка проблемы
🔴Восприятие новой информации
🔴Осмысление
🔴Закрепление
🔴Образование навыков
🔴Применение навыков на практике

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

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

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

По моему опыту обучения, ребята, у которых проблемы с применением теории на практике, чаще всего допускают одну или обе из этих ошибок:

1️⃣ Принимают новую информацию на веру, не пытаясь ее осмыслять. “Так правильно, потому что так сказал Роберт Мартин / я слышал в докладе на конференции / пацаны в курилке рассказывали”.

2️⃣ Пытаются изучать область, которая является надстройкой над более базовой областью. “Зачем мне учить джаваскрипт, я сразу буду учить реакт”.

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

В следующем посте поговорим о постановке проблемы и о том, почему это так важно для обучения.
Please open Telegram to view this post
VIEW IN TELEGRAM
18👍10🔥8👎1🤮1💩1
Как писать сопроводительные

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

📌 Самое главное в сопроводительном — показать, где ваши навыки перекликаются с ожиданиями нанимающей стороны.

Смотрите, какая штука. Когда наниматель, например, hr, разбирает отклики, у него в голове есть примерная картина кандидата, которого он хотел бы видеть. Задача hr — потратить на резюме минимум времени, чтобы определить в первом приближении, подходите вы под этот портрет или нет. Ваше резюме описывает весь ваш карьерный путь и со стороны непонятно, куда именно смотреть. Подходит этот кандидат под тот портрет, что я вообразила себе в голове или нет?

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

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

Когда hr или нанимающий лид бегло смотрят ваши резюме, они пытаются как раз найти пересечения между вашим опытом, описанным в резюме, и собственным портретом, который появился в голове. Но вас много, а я одна (с), поэтому ваша задача — сделать это за hr, чтобы он точно увидела эти пересечения, не потратив своего времени и энергии.

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

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

#резюме #сопроводительное
Please open Telegram to view this post
VIEW IN TELEGRAM
🤮12👎9💩76👍5🔥3👏1💯1