IT и инвестиции | Алексей Солонков
589 subscribers
39 photos
3 videos
45 links
Канал о том, как достичь успеха, вооружившись современными знаниями в ИТ
Download Telegram
Audio
Две ценности программного обеспечения (аудиоверсия)
2👍2
Audio
Структурное программирование (аудиоверсия)
🔥3
Audio
Управление техническим долгом - аудиоверсия
🔥4👍1
Дорогие друзья! Для нас очень важно создавать релевантный контент. Будем признательны, если позволите больше узнать о вас. Из какой вы сферы?
Anonymous Poll
43%
Разработка
9%
Менеджмент
19%
Аналитика
14%
Другой вариант
15%
Не скажу, но хочу посмотреть результат
Важная новость! Канал меняет тематику

Изначально я использовал этот канал, чтобы публиковать здесь анонсы своих статей для Habr и VC. Сейчас хочу вести его как независимую площадку и писать на темы, которые не поднимаю на других платформах.

Анонсы тоже останутся, но станут скорее дополнением, а не основным содержанием канала.

О чём буду писать?

О том, как быстро вырасти в профессии и быть востребованным программистом.

Я много раз наблюдал, как одни мои коллеги или подчинённые стремительно превращались из неуверенных новичков в крепких спецов, а другие тратили на это годы. Многие сходили с дистанции так ничего не добившись в профессии.

Что помогало одним и мешало другим? Талант? Везение? Острый ум?

Все эти вещи, конечно, не помешают. Но я не стал бы делать на них ставку.

Гораздо важнее:
• мотивация к развитию,
• крепкая база,
• прокачанные софт-скилы.

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

Как — я расскажу на канале. А хватит ли у вас на это терпения — каждый решит сам.
👍14🔥3👎1👏1
О чём этот канал?
Число подписчиков на канале быстро растёт. Многие из вас, наверно, не читали первые посты и не знают мою предысторию. Поэтому хочу представиться вновь прибывшим и рассказать, почему завёл этот канал.

Кто я такой?
Меня зовут Алексей Солонков.
В программировании 17 лет. Прошёл путь от бэкендера до руководителя высшего звена в ИТ. Воплотил в жизнь много успешных проектов.
Например, сервис HucksterBot, который анализирует поведение посетителя на странице сайта и рекомендует ему персональные скидки. За счёт чего клиенты сервиса повышали конверсию до 40% без потери маржинальности.
Руковожу большой командой разработчиков. Участвую в их найме, адаптации и обучении.
Сам был личным наставником для 10 человек. Помогал им вырасти с джуна до мидла и от мидла до сеньора.

Почему я веду блог?
Программирование для меня — не просто работа, а глубокое увлечение. Мне нравится всё: кодить, настраивать работу команды, учить людей. И этот канал — ещё один способ проявить любовь к делу моей жизни.

Сейчас я вижу опасный перекос: про карьеру в IT пишут много, но однобоко. Это либо рекламные тексты в духе: ничего не бойся, у тебя всё получится. Либо горькие истории тех, кто попробовал и у них ничего не получилось.

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

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

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

Как ChatGPT помогает программисту в повседневной работе
Лайфхак: как правильно планировать работу
Эмоциональное выгорание: личный опыт борьбы
Эмоциональное выгорание: личный опыт борьбы, продолжение
Как я стал программистом
Личные границы как путь к успеху
Микросервисы: преимущества и недостатки
Синхронно vs. Асинхронно: выбираем подход к взаимодействию микросервисов
Инвестиции в ИТ: почему экономия может обернуться убытками

И, конечно, подписывайтесь. Тут много интересного!

Проголосовать за канал
👍23🔥4👎1👏1
Войти в IT после онлайн-школы — это реально?

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

Почему?

В разработке кроме технических знаний важна общая теоретическая база:
• знание структур и алгоритмов обработки данных,
• понимание принципов системного дизайна,
• владение паттернами разработки.

В ВУЗах на эти дисциплины отводят много учебного времени. Если студент не совсем овощ, при выпуске у него будет хотя бы общее представление о них.

Программа курсов строится по другому принципу: увидел — повтори. Вдобавок их организаторы пытаются впихнуть максимальное количество информации в минимально возможные сроки. Без теории и вдумчивого разбора.

Получается, путь в IT лежит только через ВУЗ?

Нет, но с ним проще.

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

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

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

Поэтому пользуйтесь, учите, практикуйте:

• A. Xu, System Design Interview (second edition).
• С. Ньюмен, Создание микросервисов (second edition).
• М. Клеппман, Высоконагруженные приложения.
• А. Швец, Погружение в паттерны проектирования.
• А. Бхаргава, Грокаем алгоритмы.
• Т. Х. Кормен, Алгоритмы: вводный курс.
• Т. Кормен, Ч. Лейзерсон, Р. Ривест, К. Штайн, Алгоритмы. Построение и анализ. Издание 3-е.
• Р. Мартин, Чистая архитектура.
• Р. Мартин, Чистый код.

И да, кроме хард-скиллов, важны навыки переговоров и самопрезентации. Но о них я расскажу в следующих постах.
🔥97👍4👏1
Личные границы как ключ к успеху

Этот пост я пишу на основе своей недавней статьи на VC.

Статья вызвала живой отклик и много комментариев. Поэтому решил сделать её превью на канале и дать некоторые пояснения к теме.

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

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

Итак, приступим.

Как я понял, что у меня проблемы с личными границами?

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

С этой проблемой я обратился к психологу.

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

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

Как я решаю проблему личных границ?

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

Кроме этого я прохожу 5 этапов осознанной трансформации, которые помогают мне эффективнее распоряжаться своими ресурсами:

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

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

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

4. Оценить потенциал контактов
Не все усилия в коммуникациях приносят одинаковую пользу. Всегда есть более перспективные направления, которые могут дать Х2, Х3 прибавку к вложениям. Важно найти именно такие и вкладываться в них в первую очередь. А от неперспективных уходить.

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

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

Сейчас для меня гораздо страшнее прожить свою жизнь ради чужих желаний и ценностей, когда можно было бы просто идти к своей мечте.
🔥13👍4👏21
Зачем программисту сопроводительное, и как его написать?

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

Как это работает?

Сопроводительное письмо выполняет 2 задачи:
• создаёт у получателя мотивацию открыть резюме;
• показывает вашу заинтересованность в конкретной компании.

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

Что должно быть в сопроводительном?
• тема письма с названием вакансии — это позволит вашему отклику не затеряться в потоке входящих писем и не попасть в спам;
• не забываем поздороваться и представиться — вежливость тоже важна;
• короткий рассказ про ваши навыки и релевантный опыт работы;
• ответ на вопрос, почему решили откликнуться.

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

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

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

Что рекрутёр точно отметит — это хорошие навыки коммуникации, умение самостоятельно решать проблемы, инициативность и увлечённость своим делом. Этому можно посвятить заключительный абзац письма. Покажите на примере, как у вас проявлены эти качества. Есть свой Git-репозиторий? Пишете статьи для Хабра? Были руководителем, но опыт работы не релевантен вакансии? Напишите об этом, и вам воздастся.

И последнее, возможно, самое важное правило: сопроводительное письмо и резюме надо адаптировать под конкретную компанию. Знаю по себе: шаблонные отклики и резюме с заголовком, не соответствующим названию вакансии, портят впечатление о претенденте. Также как и ошибки. Поэтому серьёзно отнеситесь к этой задаче: второго первого впечатления вы уже не сможете произвести.
🔥84👍4👏2
Как правильно стартануть в IT? Не бросить, не перегореть?
Уже писал, что идея быстро зайти в IT мне не близка. Фундаментальные знания и навыки не формируются мгновенно. Но есть шаги, которые однозначно повысят шансы найти первую работу в IT и не разочароваться в себе по дороге.

Отказаться от идеи быстрых результатов
Обучение программированию похоже на занятия в спортзале: надо заниматься каждый день, чтобы увидеть результаты через год-два.
Сколько людей, которые покупают абонемент в спортзал и ходят в него регулярно? Меньше половины. А сколько студентов онлайн-школ доходят до защиты диплома? По официальной статистике — 20%.
С самого начала важно понимать: соблазн всё бросить будет очень велик. Но также важно понимать, что когда трудно — это нормально. Только так формируются нужные в работе нейронные связи: через усилие и регулярность.

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

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

Общаться с теми, кто уже в профессии
Ваше окружение влияет на ваш взгляд на мир. Когда общаешься с людьми из сферы IT, волей-неволей начинаешь перенимать их образ мыслей и ценности.
Почему это важно?
• Такой опыт расширяет гибкость мышления — вы видите, что у задачи есть несколько решений и учитесь оценивать их эффективность.
• Он даёт более объёмное представление о своих перспективах в профессии — вы начинаете осознаннее подходить к построению карьеры.
• Вы будете лучше понимать, что от вас ждут будущие работодатели, а значит — лучше подготовитесь к общению с ними.
Если у вас в семье или окружении нет живого программиста, то самый простой способ его найти — это наставничество. Сейчас есть много платформ для поиска платного ментора. Но, конечно, никто вам не запрещает напрямую обращаться за консультацией к тем, с кем вы хотели бы пообщаться.
Я был наставником для 10 человек: помогал джунам вырасти до мидлов, а мидлам — до сеньоров. И считаю этот способ одним из самых эффективных инструментов обучения.

Если вам интересно узнать про мой опыт наставничества, ставьте + в комментариях, и я напишу об этом пост.

Ну а в качестве заключения к сегодняшней теме — короткий вывод: чтобы красиво стартануть в IT, надо осознанно готовиться к этому заранее.
Не ждите, что вас всему научат: ВУЗ или курсы дают только базу, которую надо дорабатывать самостоятельно. И к сожалению, волшебной таблетки тут нет: чем больше сил вы потратите на самоподготовку, тем выше ваши шансы преуспеть в IT.
А если тяжело — ищите наставника. Иногда час живого общения с профессионалом даст вам больше, чем десяток книг.
👍11🔥51👏1
Предметно-ориентированное проектирование: почему его важно знать разработчику?

Я убеждён, что за предметно-ориентированным проектированием (DDD, domain-driven design) — будущее. Уже сейчас знакомство с этим подходом может принести вам ощутимую пользу. Не важно, попадёте ли вы на работу в команду, практикующую DDD, или сами будете создавать такую команду — знание основных его понятий точно не будет лишним.

Главная фишка DDD — единый понятийный язык для описания бизнес-процессов, который одинаково понятен и заказчику и разработчику.

Почему это важно?
Когда логика программы не отражает реальных процессов, для которых мы создаём ПО, возникает ряд трудностей.

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

Трудно вносить изменения: со временем бизнес-процессы будут меняться, что потребует изменений в ПО. Если логика разработки не совпадает с логикой описываемых процессов, синхронизация изменений будет связана с дополнительными затратами.

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

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

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

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

Если хотите глубже разобраться в теме, у меня есть подробные статьи о DDD:
Цифровизация бизнеса: подходы к созданию цифровой модели
Моделирование микросервисов. Часть 1
Моделирование микросервисов. Часть 2

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

Главное, что даёт DDD — это возможность общаться с заказчиком на одном языке и лучше понимать его запрос. А зачастую именно это становится самой сложной задачей в процессе нашей работы.
👍5🔥4
Почему программисту нужна база?

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

Уже писал, какие знания входят в понятие базы. Сегодня расскажу о них подробнее.

Структуры и алгоритмы обработки данных
Знакомство со структурами и алгоритмами необходимо, чтобы написать работающий код, который не будет решать 5-секундную задачу за 15 минут.

Знание структур данных поможет эффективно обрабатывать входящий поток данных и грамотно преобразовывать их. А знакомство с алгоритмами позволяет осмысленно декомпозировать задачу и выявлять нужную последовательность действий.
Что не менее важно, владея инструментами анализа алгоритмов, вы сможете отследить, какой участок кода тормозит работу программы. Почему, например, O(n^2) хуже, чем O(n*log(n)), и как можно преобразовывать неэффективное решение.

Паттерны проектирования
Паттерны — это типовые подходы к решению задач в программировании. Знание этих подходов сильно ускоряет написание кода.

Кроме того, оно прокачивает способность анализировать код: вы не разбиваете программу на строки, а видите её в виде крупных смысловых блоков, которыми можно оперировать по своему усмотрению.

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

Насколько глубоко надо знать базу?
Как минимум, с ней надо ознакомиться.
Её не надо специально учить наизусть. Если что-то забыли — можно загуглить.

Куда важнее — понимать суть. Например, если знать принцип работы паттерна, его можно воспроизвести, не помня деталей.

Поэтому главный совет при освоении базы — применяйте знания на практике: решайте задачи, старайтесь пересказать новую информацию своими словами, пишите простые программы, чтобы проверить себя на практике. Так вы сформируете скелет своего профессионализма, на который впоследствии, можно наращивать мясо из тонкостей, деталей и специфики.
👍22🔥5👏2
Ты не станешь программистом: почему так трудно сменить профессию и уйти в IT?

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

Не твоё призвание
Если вы решили пойти в IT только ради денег, то у меня для вас плохие новости: скорее всего, такой мотивации не хватит, чтобы дойти до цели.
Сейчас заработать аналогичные деньги можно в большом количестве других сфер. И легче всего там, где вам по-настоящему интересно.

Недостаток мотивации
95% людей не обладают должной внутренней самодисциплиной. Из-за этого многие бросают занятия в середине пути. Даже если уже потратили на них своё время и деньги.
Я тоже могу отнести себя к этим 95%. Поэтому, когда я в очередной раз собрался пойти в зал — нанял тренера.
Это пример внешней мотивации, которую можно использовать в любом деле. Не хватает силы воли? Придумайте для себя систему принуждения, которая будет давить на вас извне.

Отсутствие плана и привычки
Смена профессии — сложная задача, которая пугает своей объёмностью. Если чувствуете, что саботируете её, вам помогут два приема.
Первый — начать прямо сейчас. Хоть чуть-чуть, но сейчас. Так вы убедите себя в том, что это посильно.
Второй — разбейте всю работу на маленькие шаги: составьте подробный план на бумаге и придумайте систему поощрения за конечный результат и промежуточные успехи. Мысленно пройдите все этапы намеченного плана, прежде чем приступать к нему в реальности. Мы тяжело идём в неизвестное. А то, что нам уже знакомо, хотя бы в воображении — принимаем без сопротивления.
Говорят, что привычка формируется 21 день. Я не соглашусь. Чтобы привычка стала вашей натурой — потребуется минимум год. До этого придётся заставлять себя заниматься усилием воли.

Горечь неудач
Неудачи снижают нашу уверенность в себе. Если это была серия неудач, то самооценка падает ниже плинтуса. Самым рациональным было бы продолжать двигаться дальше. Но мы все живем эмоциями. Если нет эмоционального подкрепления, то двигаться дальше можно только по инерции.
Я советую в такие моменты хвалить себя за положительные качества и достижения. А лучше — выписывать их в ежедневник. Это очень поможет вновь нащупать почву под ногами.
Безусловно, очень помогают единомышленники, которые поддержат в минуту кризиса. Особенно те, кто уже прошел этот путь и смотрит на эти невзгоды как на временные трудности.

Неэффективность
Если вы никогда не проходили какой-то путь, дорога будет очень извилистой и трудной. Вы совершите много ошибок, потратите уйму времени, а в итоге можете прийти совсем не туда.
Поэтому сперва надо обозначить цель. Откройте вакансии вашей мечты и смотрите, какие навыки в них требуются. Не советую выбирать сразу топовые вакансии для профессионалов. Попробуйте выбрать цель поближе — вакансию попроще: чем длиннее будет ваш путь, тем ниже вероятность, что вы пройдете его до конца.
Итак, вы выбрали себе цель и она сравнительно близка к вам. Но добраться до неё будет непросто. На пути к ней вы будете падать, подниматься и двигаться дальше.
Мне потребовались годы и множество книг по психологии, чтобы научиться контролировать свою мотивацию и продолжать движение вперед после очередной неудачи.
Любой серьёзный успех приходит после череды глубоких кризисов. К ним надо быть готовым и не отказываться от намеченной цели после первого же провала.

Этот пост — сокращённая версия моей статьи на Хабре. Полный вариант текста ищите здесь: https://habr.com/ru/articles/768932/

Думаю, что многие из вас могут привести еще больше причин, которые приводят к неудачам при построении карьеры. Если вам есть чем поделиться — обязательно напишите об этом в комментариях!
🔥1510👍4👏1
«Идеальный программист» Роберта Мартина: стоит читать?
«Идеальный программист. Как стать профессионалом разработки ПО» — книга, которая подводит черту под всем жизненным опытом автора.
Кто не в курсе, Роберт Мартин — автор фундаментального труда «Чистый код. Создание, анализ и рефакторинг», американский публицист и программист с 50-летним стажем.
В книге «Идеальный программист» он прямо и без прикрас рассказывает о типичных болях любого программиста, и тех принципах, которые делают его профессионалом.

Кому бы я её порекомендовал?
Однозначно начинающим. Для них это просто готовый сборник жизненных сценариев, как вести себя в тех или иных ситуациях. Как выстроить отношения в коллективе, как обсуждать рабочие задачи с руководством, где находить время и силы на самообучение. В общем, готовый кодекс профессионала.
Опытным разработчикам будет интересно посмотреть на чужой опыт и сравнить его со своим. Сверить часы, не погряз ли ты в рутине, не пора ли что-то подтянуть.

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

Как читать книгу?
С долей критики. Рассуждения Мартина — серьёзный разговор на важные темы. Это не безусловные истины, а пища для размышлений. То, что ложится на душу — принимать и использовать. Что не нравится — анализировать и критиковать.

А как вы относитесь к Роберту Мартину? Читали его книги? Делитесь впечатлениями.
👍12🔥3👏3
У меня есть свой Youtube-канал.

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

Если тема актуальна - смотрите видео и подписывайтесь на канал. Скоро там будет ещё больше интересных роликов про внутрянку IT.
👍8🔥3👏2
Что такое структурное программирование?

Эта методология предполагает последовательный рациональный подход к конструированию программ. Она появилась в 70х годах как попытка систематизировать процесс разработки. В основу лёг научный аппарат математической логики и теории доказательств.

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

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

2. Отказ от оператора безусловного перехода
Директивный оператор goto нарушает логику последовательного выполнения программы и может стать причиной серьёзных ошибок. Лучше отказаться от него в пользу простых структур выбора и управления итерациями if/then/else и do/while.

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

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

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

Будет интересно узнать ваше мнение, насколько формальная строгость и чистота важны для хорошего кода. Пишите в комментариях, какие принципы структурного программирования вы применяете на практике. Как относитесь в этой методологии?
👍7🔥53👎1😁1
Soft-skills: так ли они важны?
Да, конечно!
Умение контролировать свою работу, корректно разруливать рабочие проблемы, не подводить других и вежливо отстаивать свою позицию — вот что определяют профессионала, больше, чем технические навыки. Почему?
Хард-скиллы можно подтянуть на курсах или по книжкам, а вот софт-скилам нигде не учат, но от их наличия у сотрудника зависит качество работы всей команды.
По своему опыту скажу: мидла от джуна отличают не технические знания, а именно прокачанные софт-скилы.
Какие из них наиболее важны в IT?

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

Коммуникабельность
Интересуйтесь жизнью и работой других людей.
Предлагайте свою помощь, если она не мешает вашей основной работе.
Интересуйтесь опытом коллег и делитесь своим.

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

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

Умение говорить «нет»
Если вы видите, что сроки или условия задачи невыполнимы — не обманывайте себя и других, отказывайтесь от неё. Мы часто боимся быть категоричными и обидеть человека. Но в данном случае «нет» — это проявление заботы о собеседнике. Мы даём ему возможность принять осмысленное решение заранее, а не сталкиваться с жестокой реальностью в последний момент.

Есть много материалов по деловому этикету, психологии и коучингу, которые в той или иной степени развивают софт-скилы. Но если резюмировать их, то большинство софт-скилов — это умение проявлять уважение к чужому труду и заботиться об окружающих. Суть всех советов — не вести себя высокомерно, быть открытым людям и уметь аргументированно отстаивать свою позицию.
Согласны с этим?
👍19🔥83🤡1