Всем снова привет!
Мы продолжаем рассматривать проблемы, с которыми может столкнуться молодой и неокрепший программист на своей первой работе.
С первой частью можно ознакомиться вот тут.Продолжаем:
Многие ошибки, которые возникают в коде начинающих программистов, касаются какого-то из пунктов этого порядка действий.
Конечно, не стоит исключать, что есть моменты, когда нужно без раздумий бросаться писать код, только увидев таск. Но как правило это работает только для каких-то незначительных задач и методов, решение которых очевидно и не требует особых размышлений.
Вышеизложенное правило разработки больше подходит для сложных и крупных задач, которые можно разделить на подзадачи. Браться за написание кода без ясного понимания, что ты хочешь написать, не очень хорошая идея. Сперва нужно всё тщательно обдумать, спланировать. Также полезно взять лист бумаги и карандаш и попытаться визуально отобразить свои идеи реализации (постоянно так делаю при планировке сложного функционала).
Большую часть времени у программиста забирает не написание кода, а обдумывание структуры необходимого функционала. Ведь когда ты уже все спланировал и обдумал, написать код — это чисто механическое действие без каких-либо трудностей.
13. Несоблюдение стиля написания кода
На проектах как правило поддерживается один стиль написания кода. То есть, разные разработчики следуют неким писанным или неписанным правилам, чтобы их код не отличался от других. Не нужно пытаться как-то выделиться с помощью своеобразного стиля написания кода: плюсиков это на ваш счёт не добавит. Если вы новенький на проекте, вам стоит сразу узнать, есть ли какая-то документация, описывающая общий подход к стилю написания кода. Возможно, есть некоторые файлы стиля под конкретно ваш проект, которые нужно попросить сбросить и импортировать в среду, в которой вы работаете (например IntelliJ IDEA), чтобы она уже могла в свою очередь делать подсказки согласно заданному файлом стилю. К примеру, в стиле будет прописано использование модификатора final везде, где это возможно, и IntelliJ IDEA будет выделять желтым переменные, в которых это не соблюдается.14. Падать духом из-за ошибок
Ошибки — это то, с чем вам придется свыкнуться. Они были, есть и будут. Не важно, новичок вы или серьёзным архитектор, ошибки будут с вами всегда. Возможно, их уровни и количество изменятся, но они будут сопровождать вас всю последующую карьеру. Бывает, что у тебя всю неделю что-то не получается, падает какая-то ошибка, и вот уже вечер пятницы, и ты как побитая собака ползешь домой, так и не починив ту чертову ошибку. Непередаваемое чувство( Но это не то, из-за чего стоит падать духом. Ведь ещё одно важное отличие опытного разработчика от новичка — отношение к ошибкам. Опытные специалисты не принимают их близко к сердцу, а расценивают скорее как опыт. И никто не будет вас ругать за ошибку: это нормально, все через моменты затыка проходят. Опять же, вы можете попросить помощь у коллег. Также не нужно забывать о таких ребятах как проджект менеджеры (ПМ). Если вы над чем-то крепко зависли, сразу нужно писать проджекту. Он может помочь с поиском человека, который спец в этой области. Да и вообще его нужно держать в курсе ваших проблем на проекте. Это его работа — помогать решать разного рода проблемы, помимо коммуникаций и взаимодействий между членами команды. Подводя итог: ошибки — это нормально, не убивайтесь из-за них, а принимайте как вызов вам и вашим навыкам, ведь в конце концов это всего лишь часть работы.15. Отсутствие четкого плана
Ничто хорошее не создаётся с легкостью. Любой разработчик должен понимать: чтобы написать определенный функционал, будь то модуль или всего лишь метод, нужно спланировать, что и как будет сделано. Как правило в разработке функционала любой сложности нужно придерживаться следующего порядка действий:16. Перерабатывание
Пожалуй, каждый новичок думает, что если он будет работать до ночи, он начнёт справляться лучше со своими задачами и быстрее, так сказать, въедет во всё. Я тоже раньше так думал, но сейчас это не так. Я заметил такой момент: наступает какое-то время, какой предел, переступив за который ты уже перестаешь адекватно мыслить. Ты начинаешь изрядно тупить, залипать и делать по часу те вещи, которые мог бы сделать за 10 минут на свежую голову. И как правило, после пересечения этой черты усталости ты утыкаешься в какую-то проблему, которая кажется непреодолимой. Но придя утром на работу ты её решаешь в мгновение ока. Так вот, когда вы чувствуете что достигли этой точки, не сидите допоздна, а просто идите домой и хорошенько отдохните. Ведь если просидеть до поздней ночи, особо выдающихся результатов за эти часы мучений вы уже не достигнете, но при этом рискуете плохо (мало) отдохнуть перед следующим рабочим днем и запороть ещё и его. Подумайте о здоровье: стоит ли вот так в начале своей карьеры его подрывать? Я думаю, что нет. Нынче дорого болеть. Также подумайте о работодателе. Перерабатывая, вы делаете хуже не только себе, но и ему. Кому нужен вечно невыспавшийся сотрудник, который от усталости не может реализовать простейшую сортировку? Да, несомненно, бывают моменты, когда дедлайн горит, все пошло не так и вот это мое любимое — «надо было ещё вчера». Но как правило такие ситуации редкость, да и после них нужно сесть и тщательно обдумать, как это вообще могло получиться и как этого избежать в своем будущем.17. Пренебрежение английским
Многие начинающие разработчики ставят изучение технологий на первое место, а английский — как-нибудь на потом. Это серьезная ошибка, так как довольно часто программист идеально подходит на рассматриваемую позиции джуна (или стажёра), но его не берут из-за слабого английского. Да, несомненно, есть случаи, когда можно пройти и без английского. Как правило таких людей берут под проекты на внутреннем рынке. Но локальные компании платят не такие же деньги за разработчиков, что и зарубежные. И выбить приличный рейт даже со временем будет очень и очень сложно. Поэтому английский язык не стоит упускать, чтобы сразу ориентироваться на англоязычные проекты, а не откладывать их в долгий ящик. Ведь если задуматься на минуточку, сейчас английский язык — это язык международного общения. В какую страну вы бы ни поехали, вы сможете находить общий язык с людьми, если знаете английский. В проектах так же. Не важно, какой это будет проект: немецкий, австралийский, французский или какой-то другой, всё равно вся коммуникация, все таски, документация и прочее будут на английском. Ну а если на секундочку задуматься, ведь это же весьма удобно, не так ли?18. Погоня за модными технологиями
Начиная свой путь, разработчики часто пытаются угнаться за освоением новейших технологий. Правильно ли это? С одной стороны, да: новейшие технологии, проекты… Но стоит ли делать это главным приоритетом? Возможно, лучше поднажать на “классический набор” специалиста вашей области? Ведь новое — это конечно хорошо, но нужно не забывать об основополагающих технологиях вашего направления. А уже только потом, после того как вы немного обрастете опытом и глубокими знаниями основ, можно пробовать что-то новое. Учтите еще, что новые технологии имеют превосходство в одних нюансах, но при этом проигрывают в других. И до тех пор, пока у начинающего разработчика не будет понимания этих особенностей, лучше использовать проверенные временем решения. К примеру, если программист разрабатывает приложение, которое взаимодействует с некоторыми данными, то не стоит спешить использовать самое последнее NoSQL-решение только потому, что это в моде. Скорее всего подойдет и обычная SQL база-данных (MySQL, PostrgreSQL..), которая давно проверена временем, имеет подробную документацию и решения всех проблем на StackOverFlow :)19. Изучение множества технологий или нескольких языков сразу
Выше мы говорили об освоении модных технологий новичками. А как обстоят дела с изучением множества технологий или нескольких языков сразу? Вы явно слышали о программистах, знающих более одного языка программирования и владеющих множеством технологий. Но я поспешу заметить, что эти люди далеко не новички в программировании. Это люди с большим количеством лет опыта за плечами. Они уже успели стать мастерами в своей изначальной технологии, и пошли дальше и дальше. Что же до новичков, пытающихся освоить всё и сразу, здесь отлично подходит пословица: “за двумя зайцами погонишься — ни одного не поймаешь”. Последствием может быть то, что вы ни одно направление не освоите хорошо, а только по вершкам пробежитесь. Более востребованным будет специалист, который глубоко знает один язык, нежели все, но по чуть-чуть. Поэтому если вы хотите знать множество языков и технологий, к этому нужно подходить с умом. Для начала у вас должен быть базовый, основной язык, который нужно глубоко изучить. И только потом, отталкиваясь от него, изучать дополнительные направления. Например, стать гуру по Java, потом изучить Python как вспомогательный язык, после можно и изучить что-то с фронтовой части react/angular. В таком случае эти технологии не взаимозаменяемые, как например C# и Java, а дополняющие друг друга, расширяющие ваши карьерные возможности. Но опять же повторюсь: не стоит пытаться учить всё сразу, нужно последовательно. Так сказать, ловить зайцев по одному.20. Неправильно поставленные цели
Как вы ставите себе цели? Стать крутым разработчиком? Запомните раз и навсегда: цели нужно ставить физические, или другими словами — достижимые. О чём говорю? К примеру, вы ставите себе цель: хочу стать богатым. И как вы поймете, что вы уже достигли эту цель? Или как вы измеряете, насколько вы стали к ней ближе? Ну а если вы поставите цель “хочу заработать миллион” — это уже немного понятнее, не правда ли? Заработав 10 тысяч, вы станете на 10 тысяч ближе к своей цели, и вам останется 990 тысяч. Впереди немало, но зато вы можете пощупать свой прогресс и понять, где находится финишная черта вашей цели, и это вам и не даст опустить руки. Что касается карьеры, как насчёт того, чтобы поставить себе более ощутимую цель? Например: хочу стать тимлидом. Или сеньором. Ну или архитектором, в конце концов. Ну а большую задачу нужно разделить на маленькие подзадачи. Вы же не станете тимлидом вот так с порога карьеры. Ставьте сроки, если это возможно и уместно, и фокусируйтесь на текущем этапе.- Если мы говорим о становлении сеньором, то первой маленькой целью будет найти работу джуниором или стажировку в компанию.
- Далее в качестве целей можно ставить углубление знаний в определенных технологиях. В Java — подготовка к сертификации Oracle первого уровня. Ставим себе срок на подготовку и идём к цели.
- После, к примеру, можно задаться целью подтянуть английский на один уровень (скажем, с B1 до B2). Составляем план подготовки, планируем время и движемся к цели.
ПЕРЕЙДИТЕ В ПОЛНУЮ ВЕРСИЮ