Типичные ошибки новичков-программистов. Или как я увяз в работе «для студентов»

от автора

image

Доброго времени суток, уважаемые читатели хабра. Мне 22 года (без пяти минут, но это ведь не важно) и сейчас я работаю в довольно неплохой фирме веб-разработчиком, но пост не об этом. Здесь я опишу свои (как и, впрочем, других новичков) ошибки и шаги «по граблям» на пути к нынешнему состоянию. Возможно, кому-то это будет интересно (вспомнить, как же было у него самого), а кому-то (на что я собственно и надеюсь, для чего пишу) — полезно.

Маленькая предыстория, как всё начиналось

Я учился в техническом лицее (родители заставили после 7-ого класса школы) и, буквально на первом же уроке информатики, понял, что мне это даётся легко и, что самое главное, очень интересно для меня! Не буду долго рассказывать о своей лицейной жизни, но после него мне была прямая дорога в технический университет нашего города (были колебания, но я успешно их откинул).
И вот, я поступил, весь в предвкушении новых знаний и готов к их поглощению. Но, уже после нескольких недель обучения (хорошенько изучив свое расписание и отведав каждую пару) я понял, что наша программа еще «советских» времен очень далека от того, чтобы сразу же сосредоточится на подготовке специалистов узкого профиля, мы ведь должны развиваться во всех направлениях. «Ну да ладно» подумал я, с надеждой, что дальше всё пойдёт лучше, ведь школьной программы первых курсов университета программисту (на тот момент еще не сформировавшемуся толком) внутри меня было мало. Прошли года и на третьем курсе я уже понял, что ждать придётся ох как долго и решил взять все в свои руки…

Попытки изучить что-то на достойном уровне самому

image
Долго можно спорить о том, насколько реально выучиться самому с точки зрения программирования, но забегая наперёд скажу, у меня получилось не до конца.

Первым делом нужно было определяться с тем, в каком направлении учиться (какой язык, платформа и тд) и это, скажу я без каких-либо сомнений, один из самых важных и сложных этапов. И тут я сделал первую ошибку, когда начал выбирать язык и платформу абсолютно не глянув на рынок кадров, его требования и тенденции. Нельзя сказать, что я выбрал совсем неудачно (выбор мой пал на C#, десктопные приложения), но сейчас я прекрасно понимаю, что это нельзя назвать как-то иначе кроме как везение (хотя, сейчас я понимаю, что выбор не самый перспективный). Мгновенно за первой ошибкой последовала вторая — чтение технической литературы как художественной. Я сел и тупо глава за главой стал перечитывать книгу, для первых глав (где описывают азы языка, и общие нюансы) оно, может быть, и ничего, но ведь дальше нужно делать что-то параллельно чтению. Подучил я C#, без практики стало не интересно, потом к PHP приступил (HTML, CSS и даже Photoshop я уже знал, потому решил потянуться к вебу), после решил импрувнуть* знания С++ (его я начал изучать в университете, но когда преподаватель пишет примеры на доске и в 3-х строчках кода делает 15 ошибок — учёба не идёт). В общем, кидался от одного к другому и конечно же, это было очередной ошибкой.

Итог этого этапа в моей жизни:
Сперва нужно изучить потенциальный рынок трудоустройства, выбрать перспективное направление, а уже потом начинать в нём двигаться. Решили начать движение самому (аля, долой курсы) — учитесь правильно, как это не странно, но нужно научиться учиться. Если собираетесь читать какую-то книгу (особенно книгу по изучению нового языка программирования, хотя и к другим книгам области «обучение» применимо) — придумайте себе задание, которое можно было бы делать в параллель чтению, или, на крайний случай, набирайте примеры кода из книги. И, в конце концов, не учите всё и сразу, доводите до хорошего уровня начатое. Оценку «достаточности» уровня можно провести весьма просто:
1) идём на любой фриланс сайт, ищем полноценный проект и пытаемся реализовать его самому, на сроки выполнения обратить внимание тоже было бы не плохо;
2) придумываем себе сами такой проект, если фантазии хватает

Поиски первой работы

image Пока я учился, время шло дальше не дожидаясь меня, первый семестр третьего курса уже закончился и наступил Новый Год (2012, вродь как). Нахватавшись всего по немного (был опыт даже в дизассемблировании*, чисто так, для себя), после праздников я начал искать первую работу. Тут то о себе и дала знать первая ошибка, вакансий было «раз-два — обчёлся». Но, они хотя бы были, уже хорошо. Конечно же, я уже возомнил себя крутым и перспективным разработчиком (я ведь столько всего знаю уже, весь такой многогранный) и пошел сразу же на крутые фирмы. Первое же собеседование меня опустило на землю, меня вооружили литературой и отправили учиться дальше. На этом я конечно же не закончил, было еще несколько попыток, но результат, в целом, был тот же. Когда я уже было опустил руки, встретил одноклассника с лицея, который, к счастью, работал разработчиком в какой-то фирме. Далее выяснилось, что фирма набирает в основном студентов, для работы с иностранными заказчиками над какими-то непонятными проектами (забегая наперёд — да-да, это тонны говнокода, в котором ежедневно нужно ковыряться и даже что-то менять!). Пошел на собеседование, взяли на стажировку, и дальше понеслась…

Итог:
Во-первых, учите английский! Он нужен везде, всем и в разных формах (письменная, разговорная и тд), лучше иметь сертификат, но обычно если отвечаешь «владею» то проверяют непосредственно на собеседовании фразой «Tell me please a few words about yourself in english» (Расскажите пару слов о себе на английском). Грамотно составляйте резюме, если есть друзья с опытом в подобных делах — попросите помочь. Будьте готовы выполнять практические задания/проходить тесты по знанию языка (вплоть до ответов на вопросы «есть фрагмент кода, что тут не так»). Освежите основные понятия о языке/технологии перед собеседованием даже если это что-то из сферы «да это же очевидно, так расскажу». И, напоследок, старайтесь уцепиться за работу, проситесь хотя бы на стажировку даже с мизерной ЗП*, если по результатам собеседования видите, что совсем всё плохо, но сразу же оговорите сроки, не ведитесь на «ну ты приходи, а там как только будешь готов, так подумаем как с тобой дальше быть».

Первые проекты, первый опыт командной разработки

Каждый новый проект, если его кто-то писал до Вас, а Вам нужно продолжить, — что-то страшное, совершенно непонятное (как в плане архитектуры так и вообще) и наводящие на самые печальные мысли. Но все равно самый страшный — первый. Для меня им стала система управления каким-то бейсбольным стадионом в каком-то неизвестном для меня городке в США. Это была веб система ASP.NET MVC 2 с использованием кучи левых js библиотек, Telerik контролов и многого другого. Ко всему прочему — писался он уже год до меня, через него проходили все новички-студенты, которые приходили на фирму, да и проектировали его изначально собственно такие же. Уже после первого месяца меня взяли официально (ну это конечно громко сказано, в штате никого из сотрудников не было, ЗП* в конвертиках, но я уже не был стажером) я освоился и ориентировался в проекте уже как у себя дома, дорос до уровня остальных членов команды и начал осознавать, что в моём дальнейшем развитии никто по сути и не заинтересован — «работает, задания выполняет — вот и хорошо». Через еще пару месяцев появился новый проект и на мое большое удивление проектировать его дали мне и моему другу, который собственно меня на эту роботу и привёл (спасибо ему за это большое). Мы — два студента, опыт работы у которых меньше полугода у каждого, проектируем серьезный проект — омг*, сразу же стало ясно окончательно об уровне фирме, как и то, что нужно пытаться что-то изменить.

image

Само собой ни в этот раз, ни в другие изменить ничего не удалось (а я ведь пытался, постоянно ходил к начальнику с всяческими предложениями по поводу того «где можно улучшить» или «что лучше начать изучать сейчас, на перспективу», но всё напрасно). Тогда я твёрдо решил для себя бить пороги других фирм и по чуть-чуть искать себе более подходящее место. Время шло, опыт приходил, а качество знаний и кода соответственно развивалось медленно (только по собственной инициативе и в свободное время). Первые из новых собеседований показали, что, относительно начального, мой уровень, конечно же, вырос, но на общем фоне казался все равно недостаточным. И тут важно сказать об ошибке, которую я не сделал, но был очень близок — в такие моменты нужно собраться и серьёзно начинать процесс саморазвития, а не опускать руки с мыслями «ну ладно, не тяну, значит тут сидеть буду, пока не начну тянуть». Ведь на такого рода фирмах обычно растут только до самого базового уровня, который позволяет банально кодить и кое-как выполнять свою работу…

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

Совершенствуемся и уматываем

image Первым делом я записался на курсы английского (ведь я уже знал, что на серьёзной работе с базовым уровнем далеко не пойдёшь). Так как куда-либо сам ходить я не люблю (дурацкая часть моей натуры, но уж как есть), то еще и пару тройку друзей с собой сагитировал, чтобы уже наверняка. ASP.NET и MVC я начал развивать далеко за рамки того, что требовали от меня на текущей работе. Еще через пол года результат появился — я прошел собеседование на позицию Middle ASP.NET Developer в одной из лучших компаний в своем городе. Первые впечатления: совсем другой уровень, совсем другая организация абсолютно всего, совсем другой подход. Первых два месяца — эйфория от процесса работы и от сложности проекта, а сейчас (когда чувства восторга приутихли) можно твёрдо рассуждать и подбивать итоги этого шага.

Итог всех этапов:
Никогда не прекращайте саморазвитие, в других сферах это, возможно, и допустимо, но только не в сфере ИТ — «ты стоишь, а мир движется». Не бойтесь перемен, важно не делать их бездумно и не взвесив всё предварительно (если есть время, конечно, а если нету — порой нужно и рискнуть). Не сдавайтесь в поисках, не получилось сейчас — получиться потом, главное делайте всё, чтобы получилось. Если нету вакансий — подождите, не спешите менять специализацию (если есть работа по текущей), я ведь тоже рассматривал вариант сменить язык программирования, технологию, но как-то не довелось (к счастью).

Спасибо всем, кто дочитал до конца, надеюсь, что я не зря потратил вечер (да и Ваше время тратить не хотелось бы). Если Вы в чём-то со мной не согласны — не судите строго, ведь сколько людей, столько и мнений! Не повторяйте моих ошибок и делайте поменьше своих, делитесь своим опытом с другими и хороших Вам проектов, верьте в себя!

Сноски:
импрувнуть (от англ. improve) — улучшить
дизассемблирование — процесс получения исходного кода приложения из бинарного (самое подходящее на википедии, что удалось найти — дизассемблер)
ЗП — заработанная плата
омг — (от англ. omg — Oh my God) — Боже мой

ссылка на оригинал статьи http://habrahabr.ru/post/207452/


Комментарии

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *