Советы начинающему разработчику Видео

Советы начинающему разработчику

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

Программирование — это коммуникация с людьми

В начале свой карьеры я концентрировал свое внимание исключительно на hard skills, то есть на приобретении технических способностей и навыков. Я считал, что понимание и знание технологий — это тот необходимый минимум, который позволит двигаться куда-то дальше. Но оказалось, что такое мнение было правильным лишь отчасти. Да, действительно, был период развития человечества, когда этого было достаточно. Однако со временем стало понятно, что только технических навыков для профессионального роста в сфере IT мало.

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

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

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

Подтверждением моих слов является развитие IT компаний во время COVID-19. В отличие от других сфер они не только не замедлили свою деятельность, а наоборот ускорились. У них появилось множество заказов и, как следствие, возросли доходы. Почему так произошло? Оказалось, что люди внутри IT хорошо подготовлены для того, чтобы работать удаленно. Им не нужен начальник - "человек с палкой", который заставляет их трудиться. Люди в сфере IT показали высокую результативность, потому что очень много времени вкладывали именно в коммуникацию.

Когда мы говорим о scrum, то мы имеем в виду, что это стандартизированное общение по поводу управления проектом. В программировании у коммуникации есть огромное количестве уровней. Один из уровней коммуникации — это стандарт общения вокруг планирования или статуса задачи. Другой уровень коммуникации заключается в коде. Так принципы Python должны распространяться на любые языки программирования. Вы пишете код, который читают люди.

Я искренне советую молодым специалистам поработать над умением общаться с окружающими, прежде всего быть nice, то есть быть вежливыми. Это одно из тех личностных качеств, которое значительно улучшит профессиональную сферу вашей жизни. Вежливый человек в команде более приятен и чем toxic. Люди, которые не умеют правильно общаться, 100% не имеют желаемого продвижения в своей карьере.

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

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

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

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

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

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

Повысить свой уровень обучая

Существует еще одна прекрасная возможность существенно повысить свой уровень профессионализма — это начать кого-то обучать. В то время, когда вы кого-то обучаете, ваш личный уровень понимания материала вырастает в разы. Ведь одно дело — иметь какие-то знания и ими пользоваться, и совсем другое дело - эту вещь объяснить, сделать доступной для понимания другого человека.

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

Не воспринимайте других программистов как супергероев

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

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

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

Приведу наглядный пример. Как-то для работы я взял небольшую библиотеку, в которой было порядка 400 строк кода. Я сделал рефакторинг этого кода, убрал лишние уровни абстракции, которые точно нигде не были задействованы. После чего у меня получился размер кода в 7 раз меньше, что намного упростило дальнейшую работу.

Какой код является идеальным?

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

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

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

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

Не следует критиковать код, который был написан до тебя

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

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

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

Теория является основой?

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

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

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

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

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

Программистом вы становитесь, когда принимаете решение что-то автоматизировать

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

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

Каждый раз учиться новому это 'ок'

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

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

Мода влияет на рынок

В сфере IT мода меняется очень быстро. Вам все время придется учить что-то новое, переучивать старое. К этому надо быть готовым и толерантным. Вы должны все время находиться в таком состоянии: "Я пока этого не знаю, но к вечеру узнаю, а завтра задача будет решена». Если же вы выберете для себя следующую позицию: " В мою голову ничего нового не помещается", то вам будет очень тяжело профессионально расти.

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

Учитесь принимать задачу именно в том виде, в котором она сформулирована

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

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

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

Обязательный учет потраченного времени

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

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

Расписывайте план

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

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

Прохождение собеседований — это всего-навсего навык

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

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

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

Если вам пока еще страшного проходить собеседования, советую вам посмотреть ролики на YouTube, посвященные этой теме. Я выкладываю такие ролики тут на сайте и на YouTube канале Mikhail Kashkin - все о Python и программировании. Посмотрите "Junior Python Developer: полный разбор собеседования и ответы на наиболее частые вопросы интервью". Буду рад, если идеи, изложенные в нем, помогут и вам преодолеть страх перед собеседованиями.

Практический Python для начинающих
Практический Python для начинающих

Станьте junior Python программистом за 7 месяцев

 7 месяцев

Возможно будет интересно

На какие позиции выгодно брать Junior-разработчиков Видео
Новичок
На какие позиции выгодно брать Junior-разработчиков

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

2022-10-30
Важность возраста для программиста Видео
Новичок
Важность возраста для программиста

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

2022-10-30
В каком возрасте лучше стать программистом? Видео
Новичок
В каком возрасте лучше стать программистом?

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

2022-10-30