ЛСА | Лайфстайл айтишника – Telegram
ЛСА | Лайфстайл айтишника
338 subscribers
28 photos
3 videos
1 file
89 links
ЛСА — инженерный рост без перегруза.

Здесь говорят:
— о зрелом коде и зрелом подходе;
— о карьере: от senior до CTO;
— об архитектуре, ИИ и командных практиках;
— и как всё это вписать в нормальную жизнь.

Для лидов и тех, кто туда идёт.
Download Telegram
За сколько дней ты станешь программистом

— Сколько учиться, чтобы с нуля стать разработчиком?
— Смотря сколько тебе потребуется времени, чтобы решить 1-5 следующих задачек (смотри ниже)…

Планируете за 1-2 года освоить профессию разработчика с нуля? Закладывайте 4-5 часов в день, 312 дней в году… Считаем, что 1 выходной в неделю нужен для отдыха, чтобы не выгореть. При условии, что у вас будет трек обучения (набор курсов, занятия с наставником).

Так как я занимаюсь менторством, то тут расскажу чуть подробнее, что можно ожидать от работы с ментором. Ориентируйтесь на 1-2 встречи в неделю. Советую проводить встречу в следующем формате:
1. Разбор задачи, которую выполнял менти.
2. Определение тем для обучения (оценивается наставником в зависимости от скорости обучения)
3. Обсуждение новой задачи или усложнение текущей, чтобы отработать новые темы.


Задача 5: Наибольшая общая подпоследовательность (LCS)
Описание
: Напишите функцию, которая принимает две строки и возвращает длину их наибольшей общей подпоследовательности.

Пример: Для строк "ABCBDAB" и "BDCAB" ответ будет "BCAB" с длиной 4

P.S.:Решение задачи опубликуем завтра вечером

Python - учим и работами
👍6🔥1
Все невозможное возможно?

— Вы дали один день на тестовое задание! Это просто нереально...
— Тогда почему другие уже прислали решение?

Сколько раз за эти выходные читал я подобные сообщения...Из 18 финалистов только 10 нашли 3 часа на выполнение последнего задания.

Последние два дня моя команда проверяла работы, которые прислали финалисты Python-разборки. И вот они, долгожданные результаты.

Представляем 5 победителей:

1. 𝕯𝖆𝖌𝖊𝖗𝕱𝖎𝖑𝖉 (@DagerFild) — 91 балл
2. Arthur (@artrka) — 75 баллов
3. Igor (@waspsl) — 74 балла
4. Codin’ At night (@Maloys) — 59 баллов
5. Petr Andreev (@petro2561) — 57 баллов

Ждите, в ближайшее время я приду за вами 😈

Почитать разбор решений, посмотреть баллы других участников можно в этом файле: https://docs.google.com/spreadsheets/d/1f_Pox8u_VAEJgpI9A9fiKLBDffe85dk-DEBpDHclf1U/edit?usp=sharing

Python - учим и работами
🔥7👍3
Как спасти проект от провала

— Дай, пожалуйста, обратную связь по структуре и коду проекта, — обратился знакомый стажер.
— А что делает этот код?
— Ну…была задача сделать бот-опросник.

Когда бывшему студенту дают подобную задачку, он берет и, не задумываясь, делает. Я сам так поступал раньше:)

Если это моя идея, во время разработки в моей голове появляются с десяток фич для проекта, которые я постепенно внедряю.

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

Чтобы старания не оказались напрасными, советую придерживаться простого алгоритма:
1. Расписать требования (ФТ/НФТ) (список того что должно происходить)
2. Отрисовать структуру БД (какие таблицы, какие поля должны быть)
3. Определить, какие сервисы будут (стикерами, например: "пользователь" - "клиент (фронт в браузере)" - бек сервер - база данных и т.д.)
4. Выяснить, какие запросы будут (например от "пользователь" к фронту в браузере или фронта к беку)
5. Переходить к разработке.

Если сложно с требованиями, то можете использовать GPT-4. Опишите ему ваш проект. Попросите разработать, например, 30 требований. Составьте из них список тех, что нужны вам.

Для создания требований попробуйте бот @gpt_ihelper_bot. Он подключен к gpt-4 (делал для своей команды).

Python - учим и работами
🔥4👍1
Как понять, что перед нами говнокод

— Как мне повысить качество своего кода?
— Начни использовать линтеры - за говнокод получишь по рукам мгновенно и бесплатно.

Считаете, что промышленный код можно научится писать только при работе в крупной компании? Это верно лишь частично - среди пет-проектов и фриланса редко встретишь большие проекты.

Но стать на несколько шагов ближе к промышленной разработке можно и без трудоустройства.

Начните использовать линтеры и mypy. Просто возьмите за привычку перед каждым коммитом и разработкой новой фичи запустить линтер и mypy. Можно использовать инструмент pre-commit, который не даст вам создать коммит, пока не поправите ошибки.

Для линтеров предлагаю начать с pylint, а с него перейти на самый строгий линтер wemake-python-styleguide.

Выбираю тематики для написания постов, нужна ваша помощь:
👍 - пост понравился
🤔 - не зашел

Python - учим и работами
👍11
Почему рынку не нужны нынешние джуны?

— Выучил Python, но на работу не берут. Что делать?
— Сможешь ли ты, используя текущие знания, решать бизнес-задачи? Посмотри, на решение каких задач нанимают разработчика, и научись их решать.

Как понять, чему нужно научиться, и какие pet-проекты делать?

Этот вопрос решается в несколько шагов:
1. Открываем hh.ru.
2. Находим вакансии, где требуется junior/middle Python-разработчик, и смотрим раздел "Обязанности".
3. Берем 4-5 похожих вакансий.
4. Придумываем проект, в рамках которого будете делать все, что сказано в разделах "Обязанности" у выбранных вакансий. С этим пунктом может помочь бот GPT https://news.1rj.ru/str/gpt_ihelper_bot.
5. Стек технологий для pet-проекта берем из тех же вакансий из раздела "Ожидаем от вас".
6. Делать в одиночку будете долго, возьмите напарника — заодно отработаете навык командной работы. В комментариях к посту можно предлагать идеи и собирать команду; ставьте лайк идеям, в которых хотели бы поучаствовать.
7. Разрабатываем проект. Как разрабатывать, рассказывал вот тут: https://news.1rj.ru/str/forkway_python/38.
8. Результат включаем в резюме. Как правильно вставить в резюме, поможет тот же GPT-бот https://news.1rj.ru/str/gpt_ihelper_bot.
9. Сохраните пост, чтобы не потерять.

Выбираю тематики для написания постов, нужна ваша помощь:
👍 - пост понравился
🤔 - не зашел

Python - учим и работами
👍9
Что спрашивают на собеседованиях

— Какие вопросы чаще всего задают на интервью?
— От «почему хочешь работать у нас» до «что такое REST».

Вместе с @forkway собрали список вопросов с реальных собеседований для Python-разборки. Тем, кто не участвовал, предлагаю потренироваться и попробовать свои силы, чисто для души.

В боте @forkway_bot можете пройти квиз по вопросам с интервью. 20 штук с вариантами ответов (займет 5-10 минут).

А для тех, кто уже участвовал в разборке, вечером в комментариях к этому посту выложу правильные ответы. Удачи в квизе!

Выбираю тематики для написания постов, нужна ваша помощь:
👍 - пост понравился
🤔 - не зашел

Python - учим и работами
👍7
Мы среднее нашего окружения

— Ты уже полгода учишься. Общаешься c кем-то из python-разработчиков? В коммьюнити, на Хабре обсуждаешь темы? Может, ходишь на митапы и конференции?
— Хм🤔 да надо бы. Но постоянно откладываю.

Хочешь выделиться среди таких же начинающих разработчиков? Сделай то, чего большинство не делает — стань активным членом нетворкинга.

Если ты не в IT тусовке — будет крайне сложно найти себя в профессии. Помощь в сообществах другим разработчикам:
▪️ ответы на вопросы
▪️ обсуждение интересныхтем
▪️ знакомство на конференциях

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

Вечером закину файл с предстоящими конференциями и митапами в комментариях к посту (включи уведомления и подпишись на чат канала https://news.1rj.ru/str/ForkwayPythonChat, чтобы не пропустить).

А пока поставь
👍 - пост понравился
🤔 - не зашел

Python - учим и работами
👍8🤔2
Ещё учусь, вакансии смотреть рано

— Ты смотришь вакансии на рынке? Знаешь, какие навыки требуются?
— Зачем? Мне ещё 5 домашек сдать до завершения. А уже потом откликнусь на стажерскую позицию.

В команду Forkway постоянно ищем разработчиков. Вот статистика из последней итерации:
– 100 откликов
– 15 прислали решение тестового
– 4 сделали его приемлемо
– 2 выбрали после собеседования
– 1 прошел (1 взяли в другую компанию).

О чем я? Студенты, начавшие учиться, часто откладывают получение реального опыта до завершения обучения. Не советую так делать🤓

Отправили домашку. Начинайте смотреть следующий материал. YouTube в помощь. А еще — статьи по новой теме в интернете. Двигайтесь максимально быстро!

Параллельно отслеживайте вакансии на hh. Выписывайте софт скиллы для прокачки, их можно качать по мере прохождения курса. В комментариях выложил вакансии https://news.1rj.ru/str/forkway_python/39. Попробуйте потренироваться на них.

Если не знаете, как работать с вакансиями, пишите под постом. Вместе обсудим.

Поставь реакцию, получи + в карму
👍 - пост понравился
🤔 - не зашел

Python - учим и работами
Please open Telegram to view this post
VIEW IN TELEGRAM
👍5
Позиция «клиента», а не «студента»

— Я купил курс, а меня отправляют смотреть ютуб и читать статьи, да ещё и на английском!
— Что если твой работодатель скажет: «Я плачу деньги за решение задач, а он 50% из отведенного времени гуглит, как это делать».

Курсы дают минимум, а этот минимум есть уже у тысяч таких же студентов и самоучек.

Чтобы сейчас войти в ИТ, нужно постоянно учиться и решать задачи.

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

А пока поставь
👍 - пост понравился
🤔 - не зашел

Python - учим и работами
👍10🤔1
Быть активным - нет, не слышал

— Что читаешь по программированию? – спросил у знакомого студента.
— Материалы курса 😐

По активности предыдущего поста у меня складывается ощущение, что не читает/не изучает ничего дополнительного не только студент из диалога 👆🏻

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

1. Codewars — это сборник интерактивных тренировок по разным языкам программирования. Есть задачки по базовому Python для тех, кто только учится.
Как с ним работать можно посмотреть тут https://www.youtube.com/watch?v=QdR84ruO0po (ru)

2. hackerrank – сборник задачек с онлайн редактором как для python, так и для sql. Видео, где автор рассказывает, как работать с платформаой https://www.youtube.com/watch?v=tnH6twfFas4

3. Шпаргалка по python

4. Основные модули в Python 3 – описание модулей и перевод документации к ним.

Пока не побежал изучать новые ресурсы, поставь
👍 - пост понравился
🤔 - не зашел

Python - учим и работами
👍15
Почему мы ищем джунов

— Сколько вам потребуется времени на решение задачи? – спросил я у двух разных разработчиков.
— Здесь нужно декомпозировать и спланировать. Думаю, за две недели управлюсь, – ответил senior.
— Сегодня–завтра сделаю, – ответил junior.

Что в итоге?

Senior потратил 3 недели и отправил хорошо сделанное задание. Junior «из говна и палок» собрал за неделю. Оба не успели выполнить в обещанный срок и сделали с разным качеством.

Как правильно поступать, когда ищешь исполнителя?

Я обычно задаю следующие вопросы:
🔸 я уверен, что это нужно конечному клиенту? Проверка гипотезы.
🔸 какие разработчики есть в команде?
В команде Forkway сейчас 3 сильных разработчика и 6 джунов, которые помогают быстро тестировать гипотезы.

Но задачек с каждым днём все больше😬 Поэтому открываем новую итерацию поиска junior back-разработчиков на python.
Пишите Даше (@cutepinkribbon), она пришлет описание вакансии и тестовое задание.

Чуть позже в комментариях к посту выложу вакансию и тестовое.

Буду благодарен за репост.

Пока не побежал(а) писать Даше, поставь:
👍 - пост понравился
🤔 - не зашел

Python - учим и работами
👍19
Как прочитать Лутца

— Что сейчас читаешь по Python? – спросил я знакомого.
— Лутца начал.
— Так ты его год назад начинал уже
— Было, но всё забыл и сейчас вспоминаю.

Разговор повторяется раз в полгода на протяжении лет трёх. Как думаете, в чём тут дело?

Изучение любого «открытого» контента требует колоссальной самодисциплины:
– материал можно освоить в любое время, это превращается в бесконечное «позже пройду»
– простую задачку прикину в уме и пойду дальше, упарываться не буду. Итог — через 5-6 модулей/глав не помните базовые вещи, и дальше двигаться не получается.

А сколько у вас начатых книг, которые ждут своего часа?

Python - учим и работами
👍3🔥1🤔1
Утром – деньги, вечером – стулья

— Когда ты учишься? – спросил я студента.
— День через два. Два дня работаю, один день пытаюсь что-то сделать по учебе.
— Почему тогда не присылал решения задач?
— Последние две недели работаю без выходных.

В среднем на изучение одной темы в Python и решение задач в онлайн школах уходит 2-4 часа.

Закон Паркинсона гласит:
📍Работа занимает все отведенное на нее время.

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

Поэтому, если хотите быстро что-то выучить, ставьте себе в график обучение на 2-3 часа ежедневно. Один день в неделю сделайте выходным, чтобы не перегореть.

Я учился и утром, и вечером. Но как появился ребенок, получается только с 22:00-1:00 🫠

А вы успеваете учиться?
Пишите в комментариях, интересно почитать. Может, это я «задрот»😅 в плане систематизации и планирования)

А еще не забудь поставить:
👍 - пост понравился
🤔 - не зашел

Python - учим и работами
Please open Telegram to view this post
VIEW IN TELEGRAM
👍8
Увлекся илег спать в 3 ночи

— Обучение — это творчество, говорили они 🤦🏾‍♀️… Но как мне встроить его в свой график, если в один день я сажусь за материалы в 00:00, а в другой —в 10:00?
— Задумайся, почему «работаешь» 9:00-18:00. Ведь в любой работе есть доля творчества.

В продолжение предыдущего поста поделюсь еще своими мыслями... Самая тяжелая работа — работа над собой. Каждый день я обещаю восстановить режим и лечь до 01:00.

Так как с командой пилим стартап по вечерам, бывают дни, когда появляются важные задачи. А силы и время взяться за них появляются где-то в 00:30.

Такие «дополнительные рабочие часы» растягиваются до утра. В голове только одна мысль: «Сейчас доделаю и завтра освобожусь для новой».

А красивый самообман, да? :) Завтра буду разбит еще больше. Хорошо, если найдутся вообще силы продолжить.

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

Поделитесь своими лайфхаками. Как вам удается совмещать работу, учебу и еще просто жить? 🫠

Python - учим и работами
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥2👍1
Чуйка наше всё

— Что отработает быстрее
numbers = [i for i in range(1000_000_000)]
или
numbers = {i for i in range(1000_000_000)} ? – спросил я на собеседовании.
— Наверное, первое.
— Почему?
— Что-то мне подсказывает, не знаю почему.

Такой ответ от опытного разработчика я бы ещё мог понять. Возможно, занимался где-то оптимизацией и проверил это на собственной «шкуре».

Но опытный спец смог бы ответить на этот вопрос.

А вот когда так отвечает кандидат без опыта, то начинаешь задумываться, а не пролистал ли он вопросы/ответы к собеседованиям?

Предлагайте свои варианты в комментариях. Как думаете, почему что-то работает быстрее, а что-то медленнее:)

Кто не любит писать, ставьте:
👍 - отработает быстрее первый вариант.
🔥 - отработает быстрее второй вариант.
🤔 - я тот самый кандидат.

Python - учим и работами
👍5🔥2🤔2
Не ошибается тот, кто ничего не делает

— Почему у тебя проект в портфолио оформлен как один коммит в main ветке в GitHub? — спросил кандидата в стажеры.
— Как сделал проект — так и закоммител.

Когда я (и нетолько 😊) вижу один комит в main ветку, то сразу появляются предположения:
– человек не умеет работать с git, и просто сохраняет итоговый проект, чтобы расшарить этот код для портфолио. Ни о каких git/GitHub/gitlab flow кандидат не знает.
– а не скопировал ли кандидат откуда-то этот код? 🧐 Я же не могу проверить ход его мыслей в дереве коммитов. Будто он с первого раза сделал идеально —даже у миддла такое редкость, а тут джун, и целый интернет магазин.

В своих я проектах придерживаюсь модифицированного gitlab flow:
1. Главная ветка не main (как в документации gitlab flow), а develop (у команд уже было много настроено на эту ветку).

2. Feature ветки создаются только от develop и вливаются только в develop.

3. Realese ветки создаются только от develop. При создании:
a. название ветки выставляем MAJOR и MINOR версию (название начинается с release-)
b. создаём tag MAJOR.MINOR.0.

4. Hotfixes ветки создаются только от develop и вливаются только в develop, далее с помощью cherry-pick переноситься в нужную release ветку. После переноса для нового commit в release ветке выставляем tag такой же, как и в прядущем commit данной ветки, только PATCH инкрементируем.

Есть более полный документ, где описано всё: от того, как правильно называть ветки и комиты, до того, как подготавливать merge request / pull request.

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

По сложившейся традиции жду ваших реакций:
👍 - пост понравился
🤔 - не зашел

Python - учим и работами
👍14🤔1
Гайды, гайды, гайды

— Документы подписал, что дальше? – спросил как-то новый сотрудник.
— Вот тебе список ссылок в confluence с нашими инструкциями/гайдами и прочими материалами. В них описано, как мы работаем.

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

На помощь приходят архитектура приложения, гайды по работе с кодом, с гитом, с работой над merge requests, по ревью и многое другое 🤯

Вы просили — я услышал. Делюсь своим гайдом по работе с гитом. Используем его в стартапе Forkway.

Гайд: https://docs.google.com/document/d/1JUSxEoiRDmeOCcUHeRLrTd2p1M3QRaf9bJFWSQehMjM/edit?usp=sharing
* Attention в документе много IT жаргона😅

Посмотрите и пойдем в комментарии обсуждать...

Поставь:
👍 - пост понравился
🤔 - не зашел
👍3
Оно же работало..

— Я сделал тестовое задание, – написал кандидат.
— Ага, часть API работает, часть выдает ошибку. И тестов нет..

Частенько присылают решение задания без тестов или с бестолковыми тестами, которые проверяют 1-2 функции.

Почему я прошу писать unit тесты при проверке кандидата на собеседовании?

Представим ситуацию: мы сделали первую API'шку, проверили вручную, что она выдаёт правильный ответ.

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

Есть ли гарантии, что первая API не сломалась, а вы проверили все граничные условия, а не только стандартные? А если API ручки не две, а 10?

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

Когда последний раз писали unit тесты?

Интересна тема тестирования:
👍 - да
🤔 - не заходит

Python - учим и работами
👍15
Работа в стол или опыт?

— Сколько нужно создать pet-проектов, чтобы прокачать опыт в разработке? – спросил знакомый студент.
— Тут как в обучение — это непрерывная деятельность.

Чем больше будет проектов, и чем разнообразнее они будут по своей сути и технологиям, тем лучше. Так закрепите свои знания и научитесь ставить, декомпозировать и оценивать задачи.

Главное, чтобы последующая идея по качеству превосходила предыдущую.

Я в разработке уже больше 10 лет. Но до сих пор создаю pet-проекты. Из одного такого родился стартап Forkway🙂

За все время у меня появились порядка 60-70 pet-проектов. Например:
– Вкрипте (2018 год)
– Инвестирование (2020)
– Крипто (2018)
– Личный кабинет сетевого маркетинга (2017)
– Плагин Jobs (2017)
– Проект ZN (2016)
– SEO компания (2016)
– Автопоиск уязвимостей (2018)
– Facenter (2014)
– kinocar (2017)

Многие не принесли мне ничего, кроме опыта. Именно его считаю лучшим приобретением.

А какие проекты хотелось бы создать вам? :) Возможно, уже думаете над воплощением пары-тройки идей?

Интересна тема pet-проектов:
👍 - да
🤔 - не заходит

Python - учим и работами
👍9
Какие знания жду от кандидатов на собеседовании

— Что может выступать в качестве ключа в словаре? — спросил я на собеседовании.
— Строки, числа, да в целом неизменяемые типы данных, — ответил кандидат, который недавно закончил курсы.
— А кортежи могут?
— Да.
— А если в кортеж положить список?

Зачем я задаю подобные вопросы? Что, если студент не получал глубоких технических знаний в университете, а просто прошел пару курсов?

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

Правильно ли ответил кандидат?
Напишите варианты ответов на последний вопрос в комментариях . Обсудим 😎

А для тех, кому лень писать:
👍 – все отработает, как и с просто кортежем.
🔥 – ничего не взлетит.

Python - учим и работами
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥9👍3
Красные глаза, каша в голове, или как завалить собеседование

— Расскажи на пальцах, как работает асинхронность в Python, – попросил я на собеседовании.
— Хм, ну… Перед определением функции ставим async, а при вызове – await.

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

С первыми всё понятно — просто лень что-то учить/повторять. Опытные ребята в принципе могут вспомнить на собеседовании всё. А вот новички навряд ли пройдут.

Со вторыми сложнее: вроде что-то знают, но каша в голове страшная. Еще и приходят невыспавшиеся.

Советую не следовать этим вредным примерам😉

А вот как я готовлюсь к собеседованию:
1. Когда вас приглашают в какую-либо компанию, там наверняка есть список требований и ожиданий: например, знание Python, FastAPI, Postgres и т.д. Забираем его.

2. Разбиваем каждую тему на подтемы: можно взять документацию/книги по ним и взглянуть на оглавление.

3. Гуглим/@gpt_ihelper_bot Просим накидать вопросы по подтемам. Сохраняем их. Это пригодится для самопроверки.

4. Ищем материал: видео + пару статей по подтеме, и сохраняем ссылки на то, что лучше всего зашло. Это будет основой для изучения.

5. После прочтения/просмотра материала делаем небольшое резюме (2-3 предложения). Поможет вспомнить материал перед самим собеседованием.

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

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

А как вы готовитесь к собеседованию?

Мой метод был полезен для вас?
👍 - да
🤔 - у меня свой подход (напишите в комментариях)
🔥 - давай в закреп (если соберу 20 🔥)

Python - учим и работами
👍9🔥3