Памятка для начинающих разработчиков

22.02.2015 в 17:02

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

Ваша мотивация

Итак, допустим, вы хотите стать программистом. Для начала вам необходимо ответить себе на вопрос: «а зачем?». Если ответ заключается в деньгах и каком то престиже — бросайте эту затею. Почему так? Все очень просто!

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

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

Как начать и что изучать

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

Занимайтесь программированием всегда, когда есть время на это. Не вгоняйте себя в рамки одного проекта, за который вам платят в офисе. Изучайте новые технологии, пытайтесь сделать что-нибудь в opensource проектах, читайте новости своей отрасли, изучайте фреймворки, аналогичные тем, которые используете на работе. Изучение реализаций известных фреймворков покажет вам существующие best practice в архитектуре и написании программ. Когда я впервые залез в папку system фреймворка codeigniter, впервые познакомился с паттерном Singleton и посмотрел, как и зачем его использовать (+1 к знаниям), то понял, в чем суть порождающих шаблонов и принципа MVC (еще +2 к знаниям). Сейчас, когда меня начинает подташнивать от PHP, я лезу в исходники фреймворка beego, чтобы немного глубже понять GO.

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

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

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

Работа над ошибками

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

«Почему меня заставляют работать с базой данных и разбираться в разнице между InnoDB и MyISAM? Я еще джун, я не должен этого знать. Пусть мидл это решает!»

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

— Что должен знать джун?
— Всё.
— Но всё знает только сеньор!

И никто не понимает, что почти вся разница между сеньором и джуном — это опыт.

***

«Сейчас я буду использовать анонимные функции, замыкания, ООП, паттерн ‘абстрактная фабрика’ и вот этот большой синий молот для того, чтобы открыть модальное окно в браузере»

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

***

«Я уже всё знаю и могу сделать всё!»

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

В китайском искусстве владения боевым клинком есть три стадии познания:
— Сю — означает, что надо заучивать всё точно так, как показывает учитель. Требуется много лет тренироваться, иначе не будет базы для перехода на следующую ступень.
— Ха — означает освободиться от правил — где правил нет, там есть естественный ход вещей. Многие пробуют делать это слишком рано, поскольку переоценивают свои возможности.
— Ри — означает подняться над всем, что изучалось раньше, создать более высокие и более общие принципы (кстати, в программировании тоже есть три стадии: junior, middle, senior).

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

***

«Я программист, поэтому платите мне 2000 долларов в месяц, и где вообще моя массажистка?», или «А я знаю, что другие программисты получают больше, чем я, в 3 раза!»

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

***

«Я боюсь это делать, я такое никогда не делал, я что-то сломаю...»

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

Будьте смелее

В качестве заключения немного советов тем, кто уже в теме, но еще не уверенно себя чувствует:

— Открывать свой код через месяц, делать фейспалм со словами «боже, как я мог это написать?!» — нормально. Если у вас так и происходит, то вы на правильном пути. Пока вы будете ненавидеть код, который написали на прошлой неделе или в прошлом месяце, вы будете развиваться.

— Делать свою cms — это нормально. Главное — написав свой велосипед, никому его не показывать и нигде не использовать. Сам факт того, что вы ее написали — знак того, что вы честно впитали информацию и закрепили ее на практике.

— Каждый раз думайте: «правильно ли я делаю?», «можно ли сделать лучше?», «это можно сделать лучше, я знаю».

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

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

— Даже не думайте учить 1С (да простят меня 1Сники).

Будьте смелее и не спешите переходить на стадию middle. Всё придет само собой.

internetua.com

Добавить комментарий
Комментарии доступны в наших Telegram и instagram.
Новости
Архив
Новости Отовсюду
Архив