Этот набор советов рассчитан на джуниоров, но может быть полезна для любого разработчика, который заинтересован в культивировании хороших привычек. Я стараюсь постоянно ставить перед собой сложные задачи и выходить из зоны комфорта, здесь вы найдете выжимку из моего опыта в виде советов на каждый день. В свою очередь, можете предложить мне идеи, которые здесь не указаны — я стремлюсь постоянно совершенствовать свои техники и расти над собой.
Итак, приступим.
Обзор технологий — это действия, направленные на то, чтобы оставаться в курсе новшеств в вашем секторе. Много по этому пункту не скажешь, но, на мой взгляд, он хорошо иллюстрирует, как простое чтение может помочь вам в самообразовании. Даже если вы не до конца разберетесь в теме статьи и не научитесь делать тот фокус-покус, которому она посвящена, вы по крайней мере будете в курсе, что такое вообще бывает. А это очень важно.
Сейчас в Сети полно сервисов и инструментов, которые рассчитаны как раз на то, чтобы держать нас в курсе. Ими стоит пользоваться, они могут стать тем главным источником, куда вы будете обращаться за свежими новостями и новыми идеями ежедневно, еженедельно или ежемесячно.
Инструменты вроде Netvibes позволяют сэкономить время, сводя все ваши источники, которые вы отобрали для обзора технологий, в единую ленту. Также я бы советовал отвести под просмотр ленты и чтение материалов особое время (например, по понедельникам и четвергам), а не пытаться отслеживать новости постоянно.
Вот некоторые сайты и форумы из тех, которые я читаю каждую неделю:
Однако, если будете пользоваться подобными агрегаторами контента, старайтесь сосредоточивать внимание на тех технологиях, которые нужны вам в работе. С ними слишком просто отвлечься и начать перескакивать с одного на другое. Да, да, эта последняя статья про новое криптографическое ICO — просто бомба, но сами-то вы работаете с криптовалютами? Сосредоточьтесь.
Отличные сайты, ресурсы и эксперименты с кодом вы можете найти на следующих площадках:
Но смысл тут не в том, чтобы посмотреть на них и сказать: «Ну, я так никогда не смогу». Спросите у себя, как бы вы реализовали всю эту магию, попробуйте понять, какие инструменты для этого использовались. Новая технология, новая библиотека в JavaScript, какое-то неизвестное вам CSS-свойство? Мы живем в мире, где каждые день возникают новые решения — учебному процессу за ними просто не угнаться.
Однако я рекомендую не останавливаться на том, чтобы просто вникнуть в процесс — попытайтесь его повторить, составьте детальное объяснение, как это работает. Общее правило здесь такое: если вы смогли бы обучить кого-нибудь еще, как это сделать, значит освоили тему.
Последний год я много времени потратил на то, что изменить свои рабочий процесс; среди прочего я разобрал множество сайтов на составляющие и таким образом изучил, как талантливые разработчики их выстроили. Благодаря всем этим шагам я могу сочетать в работе разные методы и открывать для себя эффективные практики создания вебсайтов. И это подводит меня к следующей мысли…
Обычно когда вы устраиваетесь в какую-нибудь компанию джуниором, вам дают в наставники кого-то из ведущих разработчиков: он просматривает ваш код, формирует для вас список задач и следит, чтобы вы не уронили базу данных. Не стесняйтесь задавать вопросы, чтобы перенять от них как можно больше. Попросите показать, как они сделали вон ту крутую штуку на последнем сайте, который запустили, или вон тот мега-компонент, который всей команде облегчил жизнь.
И самое-то главное: не бойтесь задавать вопросы, которые вам кажутся тупыми. Мы все начинаем карьеру с разным уровнем знаний, поэтому то, что вам придется спрашивать о вещах, которые другому покажутся элементарщиной, вполне естественно. А ответы на эти вопросы, возможно, будут вам в помощь еще много лет.
Другой хороший способ учиться у лучших — инспекция кода. Если у вас в команде не принято регулярно вычитывать чужой код, попытайтесь стать тем человеком, который внедрит эту практику. Без колебаний просите других челнов команды просмотреть ваш код и сказать, что в нем можно сделать лучше. Выслушивайте их замечания. Вступайте в дискуссию. Объясняйте почему сделали так, как сделали, а не так, как они предлагают. Обмен мнениями, обсуждения и перенятие друг у другу сильных сторон — наверное, самый здоровый путь к самосовершенствованию.
Да, я понимаю вы этот совет уже миллион раз слышали с тех пор как взялись на написание кода — в интернете, от начальников, от учителей, не исключено, что и от своей собаки. Смысл комментирования заключается не только в том, чтобы сделать код простым для понимания (и другими разработчиками, и самими вами в будущем) — оно также стимулирует задуматься над функцией, прежде чем ее написать, определить ее цель. Причем только одну.
Воздержитесь от того, чтобы создать multiSuperTaskFunction().
Скажем, к примеру, вы принялись на написание функции, которая бы осуществляла управления экосистемой планет. Если у вас сформирована привычка писать к комментарии к коду, вы не задумываясь разобьете код на последовательность из нескольких функций, каждая из которых будет отвечать за конкретную задачу.
Принцип разделения функций на небольшие фрагменты помогает быстрее вылавливать баги. Также это позволяет проще отделять конкретные элементы, которые можно будет впоследствии использовать в других проектах (модулярные компоненты). Наконец, код станет куда проще для чтения и вам не придется скрываться с глаз, когда даете его кому-нибудь посмотреть.
Однако если полагаться на всех, кроме себя самого, то не получится ни совершенствоваться, ни обрести уверенность в себе. Именно поэтому важно возвращаться к своему неряшливому коду и приводить его в порядок. Н[а мой взгляд, это даже более ценно, чем разработка какой-нибудь новой возможности. Так что в следующий раз, когда менеджер продукта вас спросит, на какие такие неоплачиваемые задачи вы потратили пять часов работы, смело отвечайте: «Проводил рефакторинг кода».
Когда тот или иной фрагмент кода написан как попало, обычно за этим стоит какая-то веская причина. Но оправдание тому, что вы не выделили время на то, чтобы исправить положение, найти куда труднее. Нестабильный участок в коде всегда будет висеть у вас над головой, как Дамоклов меч. Пересматривать код, распутывать сложные функции — это, конечно, много работы, но делать все тоже самое в рекордные сроки, потому что какой-то баг активировался, когда продукт уже выкачен — еще хуже.
Лучше не торопитесь и как следует вникайте в свои ошибки. Это сбережет вам много времени, нервов и душевного здоровья в долгосрочной перспективе.
В смысле?!
Занявшись программированием, я понял, что один из самых ценных способ подняться на новый уровень — пройти через целый ряд неудач. Можете мне поверить: некоторых ошибок избежать практически невозможно, и это совершенно нормальная ситуация.
Вы когда-нибудь прописывали в проекте одну и ту же функцию пять раз? А вот я да, причем не раз и не два. Но благодаря тому, что я столкнулся с такой ситуацией и выработал определенную модель, больше такого не случается.
Так что не бойтесь совершать ошибки. Вы их еще не раз повторите, но со временем это станет случаться все реже и реже. Вам всю профессиональную жизнь придется пополнять багаж знаний и приспосабливаться к изменениям в технологиях, но в этом ведь и состоит прелесть нашей работы — каждый день узнаешь что-то новое.
Итак, приступим.
1. Делайте обзор технологий как можно чаще
Обзор технологий — это действия, направленные на то, чтобы оставаться в курсе новшеств в вашем секторе. Много по этому пункту не скажешь, но, на мой взгляд, он хорошо иллюстрирует, как простое чтение может помочь вам в самообразовании. Даже если вы не до конца разберетесь в теме статьи и не научитесь делать тот фокус-покус, которому она посвящена, вы по крайней мере будете в курсе, что такое вообще бывает. А это очень важно.
Сейчас в Сети полно сервисов и инструментов, которые рассчитаны как раз на то, чтобы держать нас в курсе. Ими стоит пользоваться, они могут стать тем главным источником, куда вы будете обращаться за свежими новостями и новыми идеями ежедневно, еженедельно или ежемесячно.
Инструменты вроде Netvibes позволяют сэкономить время, сводя все ваши источники, которые вы отобрали для обзора технологий, в единую ленту. Также я бы советовал отвести под просмотр ленты и чтение материалов особое время (например, по понедельникам и четвергам), а не пытаться отслеживать новости постоянно.
Вот некоторые сайты и форумы из тех, которые я читаю каждую неделю:
- Collectives от Codrops
- Hackernoon
- SmashingMagazine
- FreeCodeCamp
- CodyHouse
- Web Fundamentals от Google
Однако, если будете пользоваться подобными агрегаторами контента, старайтесь сосредоточивать внимание на тех технологиях, которые нужны вам в работе. С ними слишком просто отвлечься и начать перескакивать с одного на другое. Да, да, эта последняя статья про новое криптографическое ICO — просто бомба, но сами-то вы работаете с криптовалютами? Сосредоточьтесь.
2. Разглядывайте и разбирайте классные сайты
Отличные сайты, ресурсы и эксперименты с кодом вы можете найти на следующих площадках:
Но смысл тут не в том, чтобы посмотреть на них и сказать: «Ну, я так никогда не смогу». Спросите у себя, как бы вы реализовали всю эту магию, попробуйте понять, какие инструменты для этого использовались. Новая технология, новая библиотека в JavaScript, какое-то неизвестное вам CSS-свойство? Мы живем в мире, где каждые день возникают новые решения — учебному процессу за ними просто не угнаться.
Однако я рекомендую не останавливаться на том, чтобы просто вникнуть в процесс — попытайтесь его повторить, составьте детальное объяснение, как это работает. Общее правило здесь такое: если вы смогли бы обучить кого-нибудь еще, как это сделать, значит освоили тему.
Последний год я много времени потратил на то, что изменить свои рабочий процесс; среди прочего я разобрал множество сайтов на составляющие и таким образом изучил, как талантливые разработчики их выстроили. Благодаря всем этим шагам я могу сочетать в работе разные методы и открывать для себя эффективные практики создания вебсайтов. И это подводит меня к следующей мысли…
3. Учитесь у тех, кто опытнее
Обычно когда вы устраиваетесь в какую-нибудь компанию джуниором, вам дают в наставники кого-то из ведущих разработчиков: он просматривает ваш код, формирует для вас список задач и следит, чтобы вы не уронили базу данных. Не стесняйтесь задавать вопросы, чтобы перенять от них как можно больше. Попросите показать, как они сделали вон ту крутую штуку на последнем сайте, который запустили, или вон тот мега-компонент, который всей команде облегчил жизнь.
И самое-то главное: не бойтесь задавать вопросы, которые вам кажутся тупыми. Мы все начинаем карьеру с разным уровнем знаний, поэтому то, что вам придется спрашивать о вещах, которые другому покажутся элементарщиной, вполне естественно. А ответы на эти вопросы, возможно, будут вам в помощь еще много лет.
Другой хороший способ учиться у лучших — инспекция кода. Если у вас в команде не принято регулярно вычитывать чужой код, попытайтесь стать тем человеком, который внедрит эту практику. Без колебаний просите других челнов команды просмотреть ваш код и сказать, что в нем можно сделать лучше. Выслушивайте их замечания. Вступайте в дискуссию. Объясняйте почему сделали так, как сделали, а не так, как они предлагают. Обмен мнениями, обсуждения и перенятие друг у другу сильных сторон — наверное, самый здоровый путь к самосовершенствованию.
4. Никогда не забывайте писать комментарии к коду
Да, я понимаю вы этот совет уже миллион раз слышали с тех пор как взялись на написание кода — в интернете, от начальников, от учителей, не исключено, что и от своей собаки. Смысл комментирования заключается не только в том, чтобы сделать код простым для понимания (и другими разработчиками, и самими вами в будущем) — оно также стимулирует задуматься над функцией, прежде чем ее написать, определить ее цель. Причем только одну.
Воздержитесь от того, чтобы создать multiSuperTaskFunction().
// I don't know Rick
mySuperFunctionAddRemoveCreateEarth( $string, $purpose1, $bool) {
$var1 = true;
while($var1) {
addNewHumans++;
} else {
heregoesnothing();
}
}
Скажем, к примеру, вы принялись на написание функции, которая бы осуществляла управления экосистемой планет. Если у вас сформирована привычка писать к комментарии к коду, вы не задумываясь разобьете код на последовательность из нескольких функций, каждая из которых будет отвечать за конкретную задачу.
/*
* Handler to create the planet system
*/
Class Planet {
public $name;
/*
* Set the name of the instancied planet
* @var STRING $new_name Contain only a string to name the planet
*/
function set_name(string $new_name) {
$this->name = $new_name;
}
/*
* Function to access the name of the planet
* return STRING $this->name Contain only a string with the name
* of the planet
*/
function get_name() {
return $this->name;
}
}
Принцип разделения функций на небольшие фрагменты помогает быстрее вылавливать баги. Также это позволяет проще отделять конкретные элементы, которые можно будет впоследствии использовать в других проектах (модулярные компоненты). Наконец, код станет куда проще для чтения и вам не придется скрываться с глаз, когда даете его кому-нибудь посмотреть.
5. Исцели себя сам: рефакторинг
Однако если полагаться на всех, кроме себя самого, то не получится ни совершенствоваться, ни обрести уверенность в себе. Именно поэтому важно возвращаться к своему неряшливому коду и приводить его в порядок. Н[а мой взгляд, это даже более ценно, чем разработка какой-нибудь новой возможности. Так что в следующий раз, когда менеджер продукта вас спросит, на какие такие неоплачиваемые задачи вы потратили пять часов работы, смело отвечайте: «Проводил рефакторинг кода».
«Рефакторинг кода — это техника взвешенного усовершенствования построения существующей кодовой базы. Она заключается в том, чтобы осуществить серию мелких энергосберегающих изменений, каждое из которых в отдельности «не стоит того, чтобы тратить время». Однако кумулятивный эффект от этих изменений оказывается весьма существенным. Поэтапно, небольшими порциями вводя их в код, вы снижаете риск возникновения ошибок». — Мартин ФаулерЕсли в двух словах: старайтесь регулярно инспектировать свой код и вносить улучшения, которые не затрагивают функциональность. Делайте его быстрее, опрятнее, читабельнее, модулярнее. Я делаю это так: отмечаю для себя какой-то кусок кода, за который не испытываю особой гордости или который из-за дедлайнов приходилось писать в спешке, и спустя пару недель возвращаюсь к нему.
Когда тот или иной фрагмент кода написан как попало, обычно за этим стоит какая-то веская причина. Но оправдание тому, что вы не выделили время на то, чтобы исправить положение, найти куда труднее. Нестабильный участок в коде всегда будет висеть у вас над головой, как Дамоклов меч. Пересматривать код, распутывать сложные функции — это, конечно, много работы, но делать все тоже самое в рекордные сроки, потому что какой-то баг активировался, когда продукт уже выкачен — еще хуже.
Лучше не торопитесь и как следует вникайте в свои ошибки. Это сбережет вам много времени, нервов и душевного здоровья в долгосрочной перспективе.
6. Совершайте ошибки
В смысле?!
Занявшись программированием, я понял, что один из самых ценных способ подняться на новый уровень — пройти через целый ряд неудач. Можете мне поверить: некоторых ошибок избежать практически невозможно, и это совершенно нормальная ситуация.
Вы когда-нибудь прописывали в проекте одну и ту же функцию пять раз? А вот я да, причем не раз и не два. Но благодаря тому, что я столкнулся с такой ситуацией и выработал определенную модель, больше такого не случается.
Так что не бойтесь совершать ошибки. Вы их еще не раз повторите, но со временем это станет случаться все реже и реже. Вам всю профессиональную жизнь придется пополнять багаж знаний и приспосабливаться к изменениям в технологиях, но в этом ведь и состоит прелесть нашей работы — каждый день узнаешь что-то новое.