Pull to refresh
79
0.6
Михаил Емельянов @sepulkary

Бэкенд программист

Send message

Самое важное — это soft skills.

Адитья Бхаргава «Грокаем алгоритмы»

Вы посылаете начинающих программистов, ищущих возможности прокачать свои навыки, в настолько неверном направлении, что это даже выглядит хорошо, несколько даже художественно и величественно. На ум приходят непреклонный Иван Сусанин, с застывшей приветливой улыбкой ведущий ворогов в замороженный лес, панк-музыка и упорото-последовательная «Ярость» Уве Болла...

Как стать middle Python-разработчиком? Изучите Python (с упором на asyncio, multithreading, multiprocessing), pytest (+ mock), PostgreSQL, SQLAlchemy, FastApi, алгоритмы (в объёме хотя бы techinterviewhandbook.org/grind75), Apache Kafka, Docker (+ Compose, + Swarm), GitHub Actions, архитектурные паттерны. Если хотите найти работу быстро, то добавьте к этому списку Django (в этом случае замените SQLAlchemy на Django ORM) и k8s.

Вместо «Грокаем алгоритмы» возьмите «Алгоритмы: построение и анализ» Кормена и «Высоконагруженные приложения» Клеппмана.

Soft skills — это вовсе не только мантра «Я слышу своих коллег и признаю свои ошибки», а умение анализировать, делать выводы, знание психологии, умение донести свою позицию, практика ведения дискуссии. Плюс английский язык.

Просто же всё.

Потом подумаешь, а для чего?

Можно просто так, прикрыть гештальт :)

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

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

К сожалению, бизнес-подход Adafruit (продажа железок с опенсорсными исходниками) у нас не развит, а Kickstarter не доступен...

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

Гуглите роадмапы для Python-бэкендеров, они есть на github, там кроме собственно Python + leetcode есть еще куча вещей, которые нужно впитать.

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

И — поменьше эмоций, сгорите.

Берем списки книг, которые нравятся этим пользователям. Суммируем списки с подсчетом повторений.

Это так не работает. Я вот, например, люблю Стругацких за сюжеты из недалёкого будущего, когда жратвы и тряпок достаточно, а всеобщее счастье всё почему-то не хочет наступать; Кинга за тягомотные сценарии противления злу; Пелевина и Дика за вывёртывание наизнанку; Акунина за гладкий язык и длинное контекстное окно; Брэдбери за то, что меньше боюсь перехода в царство тьмы и Киплинга за нестеснение мужественностью. Что вы мне посоветуете почитать?

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

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

Идёт колонизация планет, но пускают туда только здоровых и богатых.

Просто здоровых. Релоцировали всех, кто проходил тест на физическое и интеллектуальное здоровье.

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

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

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

Так это вы поддерживали форум "Телесистем" для разработчиков электроники? Спасибо вам большое!

В начале нулевых, помнится, когда я только осваивал 8051 и AVR, это был для меня сайт Рунета № 1; быстрая профессиональная помощь и болталка в одном флаконе.

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

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

300 - 400 т. руб. на позиции схемотехника/трассировщика + удалёнка? Любопытно, я полагал, что в России потолок на эту позицию в районе 200 - 230 и практически полное отсутствие удалёнки.

Интересно, может ли профессиональный рекрутер просто сравнивать резюме попарно без существенных ложноположительных выбросов?

Если да, то можно применить алгоритм "Задача о разборчивой невесте". Из 1000 резюме случайным образом отбираем 368 (можно просто по первой букве фамилии или по дате отклика), из них простым перебором находим одно лучшее. Потом просто ищем в оставшихся 632 резюме одно, которое лучше отобранного ранее из первой партии.

Вероятность отобрать лучшего примерно 37 %. У нас есть 0.37 идеального водителя, мы великолепны!

Шутки-шутками, но становится немного понятнее, как приложить GPT к проблеме отбора кандидата.

И вот вы поворачиваете из-за угла дома и видите, что метрах в 200 на встречу идут два «пацанчика», которые легко могут у Вас отжать любимый айфон. Вы идете им на встречу, и они таки его у Вас конфисковывают. Кто виноват в этой ситуации?

Мой вариант ответа — Вы сами.

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

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

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

Есть методики гибкой разработки (аджайл, скрам, канбан, вот это вот всё), которые и призваны решать подобные вопросы.

как реализовать алгоритм Дейкстры для нахождения кратчайшего пути в графе?

В этом случае ChatGPT представит базовую реализацию, но не учтёт все нюансы (например, отрицательные веса рёбер)

Подобная придирка совсем уж не к месту — алгоритм Дейкстры и не рассчитан на отрицательные веса, с ними работает алгоритм Беллмана-Форда.

Корпоратив — это плохая награда за хорошую работу. Если компания может оплатить ресторан, алкоголь и стриптизёрш, то могла бы из этих денег выплатить премию.

Мой работодатель в этом хорош. Стоимость корпоратива просто закинули на карту всем сотрудникам, желающие (~ 50 %) оплатили корпоратив, остальные получили небольшую дополнительную премию на Новый Год.

Во-первых, Иван — молодец, что преодолел свою неприязнь к стоматологам и дошел-таки до врача; хорошо помню себя, когда я, после длительного перерыва, под напором жены сел в стоматологическое кресло и через пару часов осознал, что при применении современных обезболивающих и современного оборудования даже во время удаления нерва можно просто расслабиться и подремать.

Во-вторых, вот заготовка отличного материала про успешный успех для мотивирующего блога «Упал, поднялся» (это который про когтеточки, клубнику, пельмени и прочие кейсы в стиле «нам, скрепя сердце, пришлось повысить зарплату персоналу до 30 тыщ»). Сидит себе человек с нелечеными зубами, читает книжки по математике, а потом — вжух — и не знает, куда деньжищи девать.

Я когда-то пытался сформулировать эти принципы своими словами, может быть, кому-то это покажется полезным:

SRP

Single-responsibility principle, принцип единственной ответственности. Предполагает проектирование классов, имеющих только одну причину для изменения, позволяет вести проектирование в направлении, противоположном созданию «Божественных объектов». Класс должен отвечать за удовлетворение запросов только одной группы лиц.

OCP

Open–closed principle, принцип открытости/закрытости. Классы должны быть закрыты от изменения (чтобы код, опирающийся на эти классы, не нуждался в обновлении), но открыты для расширения (классу можно добавить новое поведение). Вкратце — хочешь изменить поведение класса — не трогай старый код (не считая рефакторинга, т. е. изменение программы без изменения внешнего поведения), добавь новый. Если расширение требований ведет к значительным изменениям в существующем коде, значит, были допущены архитектурные ошибки.

LSP

Liskov substitution principle, принцип подстановки Барбары Лисков: поведение наследующих классов должно быть ожидаемым для кода, использующего переменную базового класса. Или, другими словами, подкласс не должен требовать от вызывающего кода больше, чем базовый класс, и не должен предоставлять вызывающему коду меньше, чем базовый класс.

ISP

Interface segregation principle, принцип разделения интерфейса. Клиент интерфейса не должен зависеть от неиспользуемых методов. В соответствии с принципом ISP рекомендуется создавать минималистичные интерфейсы, содержащие минимальное количество специфичных методов. Если пользователь интерфейса не пользуется каким-либо методом интерфейса, то лучше создать новый интерфейс, без этого метода.

DIP

Dependency inversion principle, принцип инверсии зависимостей. Модули верхнего уровня не должны обращаться к модулям нижнего уровня напрямую, между ними должна быть «прокладка» из абстракций (т. е. интерфейсов). Причем абстракции не должны зависеть от реализаций, реализации должны зависеть от абстракций.

Сам Роберт Мартин считал SRP самым трудным для понимания и уточнял, что в первую очередь под "единой ответственностью" имеется в виду ответственность группы лиц, т. е. класс не должен закрывать потребности, например, бухгалтерии и транспортного отдела.

По-моему, у вас самый обычный planning poker, просто вы поставили перегородочки между разработчиками, чтобы они не видели, какую карточку выбрал сосед. Главная ценность planning poker не в том, чтобы сиюминутно на выходе получить гладкие цифры, а в том, чтобы понять, какие есть точки роста у членов команды, чтобы в дальнейшем (да-да, не прямо сейчас) работать над подъемом уровня разработчиков.

«Однако в этот раз он не обладал всей информацией, в частности не знал, что для реализации новой фичи необходимы...» — это вообще сторукое лицо-рука, коммуникации в команде не выстроены совершенно, тут к planning poker’у еще рано переходить.

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

@Tanya_zero, не принимайте близко к сердцу, но текст довольно беззубый. Что вы, кстати, невольно подтверждаете, пиша «Перечитав ее, я поняла, что эти способы подходят не только аналитикам, а любой роли/профессии» — если статья равно полезна всем (аналитикам, водопроводчикам, парашютистам-диверсантам и молодым мамам с проблемной лактацией), то она не нужна никому.

Что делать — просто напишите зубастую статью! Вы же аналитик? Вот и напишите материал о том, как после общения с вами у заказчика открылись глаза, расправились крылья и вообще все органы стали функционировать лучше — просто потому, что вы не просто по-техписски запротоколировали его хотелки, а трансформировали его эмоционально-бессознательное сознание в словесно-логические формы. Тут у каждого в закладках по четыреста статей «Как завтра побороть прокрастинацию», вы лучше поделитесь конкретным примером преодоления трудностей.

Information

Rating
1,945-th
Location
Уфа, Башкортостан(Башкирия), Россия
Date of birth
Registered
Activity

Specialization

Backend Developer, Embedded Software Engineer
Lead
Python
C
C#