Пользователь
0,0
рейтинг
26 декабря 2013 в 12:26

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

image

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

27.12.2013 — внесены дополнительные изменения

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

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

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

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

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

Итог этого этапа в моей жизни:
Сперва нужно изучить потенциальный рынок трудоустройства, выбрать перспективное направление, а уже потом начинать в нём двигаться. Решили начать движение самому (аля, долой курсы) — учитесь правильно, как это не странно, но нужно научиться учиться. Если собираетесь читать какую-то книгу (особенно книгу по изучению нового языка программирования, хотя и к другим книгам области «обучение» применимо) — придумайте себе задание, которое можно было бы делать в параллель чтению, или, на крайний случай, набирайте примеры кода из книги. И, в конце концов, не учите всё и сразу, доводите до хорошего уровня начатое. Оценку «достаточности» уровня можно провести весьма просто:
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 в одной из лучших компаний в своем городе. Первые впечатления: совсем другой уровень, совсем другая организация абсолютно всего, совсем другой подход. Первых два месяца — эйфория от процесса работы и от сложности проекта, а сейчас (когда чувства восторга приутихли) можно твёрдо рассуждать и подбивать итоги этого шага.

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

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

Подробнее
Спецпроект

Самое читаемое Администрирование

Комментарии (24)

  • 0
    Не было таких ошибок. Ни одной из перечисленных.
    Были другие.
    ЧЯДНТ?
    • 0
      Целью статьи были рассказать о своих ошибках, и уберечь от них других новичков, а не рассказать об ошибках абсолютно всех новичков нашей сферы. С удовольствием прочту Вашу личную статью и подчерпну оттуда дополнительный опыт. Никто ведь не сказал, что если Вы ошибались по-своему, то Вы что-то делали не так…
      • 0
        Здесь я опишу свои (как и, впрочем, других новичков) ошибки и шаги «по граблям» на пути к нынешнему состоянию.

        Вы же пишете что описываете ошибки других новичков.
        • +1
          «других» ведь не подразумевает «абсолютно всех других» и никак иначе. В любом случае это не исключает право других новичков на свои ошибки… По крайней мере я этого не добивался, когда писал эту фразу.
  • +9
    Хм. Я вот некоторые «ошибки» не назвал бы ошибками.

    К примеру «в общем, кидался от одного к другому и конечно же, это было очередной ошибкой». Я вот тоже пробовал себя и в разработке на Desktop, и в web (php+js+MySQL), сейчас вот последние годы работаю с Java+Android.
    И не скажу, что было ошибкой перескакивать с одного на другое. Это как минимум даёт понимание, как работают другие технологии. Даже, если вы занимаетесь frontend'ом, к примеру, знать как работает backend тоже полезно.
    • –8
      Можно без знаний Явы кодить под Андроид?
      • +5
        Да, можно программировать на C++ в ndk.
      • 0
        Можно даже С, только под Андроид ядро )
    • –3
      Возможно, я не совсем правильно был понят, с моей точки зрения ошибкой является пробовать много разных технологий сначала, тем самым вы получаете общее развитие во всём, но ни по одному из уровней не можете называться специалистом, куда вас возьмут тогда? Разнорабочим? С этой точки зрения (по моему мнению) это — ошибка. Есть и другая сторона, Вы уже готовый специалист в какой-то сфере и изучаете что-то другое для общего развития — безусловно это только в "+", но это всё при условии, что Вы знаете что-то достаточно хорошо, работаете в этой сфере (соответственно ваши текущие знания не теряются никуда). Знания — такая штука, которая постоянно нуждается в поддержке, иначе им своственно по чуть-чуть теряться. Безусловно вспомнить что-то легче чем выучить, но это уже другой разговор.
      • +4
        Я тоже по началу кидался с одной технологии на другую, и ничуть не жалею. Да, из того опыта мне не так много пригодилось в дальнейшем. Но это дало мне возможность выбрать основной вектор развития осознанно.
  • НЛО прилетело и опубликовало эту надпись здесь
    • 0
      Одно дело заниматься чем-то для себя, другое — для работы. Мне, например, куда интереснее заниматься дизассемблированием, чем писать веб-сайты, но, к сожалению, я в нашем городе еще ниодной подобной вакансии не видел :(
      • 0
        Мир не заканчивается «вашим городом». Практика показывает, что если человека «прет» от работы, то и продукт получается качественный и красивый, и деньги «подтягиваются». А если изначально идет подстройка под локальный рынок, то скорее получается «я свою работу сделал, и пофиг» и «нарубил лапши, ушел на повышение».
        • 0
          Вы безусловно правы, но я не могу сказать, что моя нынешнея работа не приносит мне удовольствия. Дело лишь в том, что почти всегда есть то, что нравиться еще больше. Так то да, если работа (язык, технология) не нравиться вовсе, то о качество в такой ситуации говорить нет смысла.
          • 0
            Мммм… а почему бы не заняться «тем, что нравится еще больше»? Если боитесь остаться без работы — подкопите денег на доширак на первое время (а если текущая работа не позволяет накопить даже на доширак — нафиг она нужна?)
            • 0
              «Не всегда желания совпадают с возможностями». На доширак то мне хватит, безусловно, но если уже и бросать работу, то ради чего-то достойного. Для меня достойным есть не просто смена квалификации, а открытие своего дела, например, или что-то такого типа.
              • +1
                Печально, что заниматься любимым делом нынче стало недостойно.
                • 0
                  Ну только коверкать мои слова не нужно… Почему ищите в моих словах то, чего там нету? Мы будто на разных языках говорим. Есть вещи которые мне делать чуть больше, чем то, чем я занимаюсь на работе. Но никто не говорил о «любимом» деле. Я не уверен, что среди тех, что мне нравятся больше есть то, любимое, ради которого стоит бросить всё.
                  • 0
                    Ну что на разных диалектах — это факт, просто к мелким ошибкам стараюсь не придираться.

                    Дело в том, что я когда-то через все это прошел: ушел из отличной компании и интересной отрасли ради занятий тем, что «зацепило». Но вот ни капельки не жалею. И я бы не сказал, что «бросил все» — опыт и связи никуда не делись.
                    • –1
                      Я искренне рад, что у Вас всё вышло. Но у каждого человека свои мысли, жизненные ситуации, не правда ли? Мне, например, нужно думать не только о себе, у меня есть невеста, с которой я скоро должен жениться. Я просто не могу позволить себе забыть учитывать её при принятии такого рода решений… Я давно уже слез с маминой шеи и в случае грандиозного провала (который никто исключать не может) помочь будет некому, да и я не уверен, что захочу принимать помощь.
                      Конечно, можно сидеть сейчас рассказывать «да ты забей, ты просто сделай, а там будет видно», но глупо подгонять всех людей под одну копирку. Я всегда был против «стадного принципа» и не «прыгал с крыши за всеми». Каждый — индивидуальность, и должен пройти свой жизненный путь так, как он считает за нужное (имхо) и если его взгляды не совпадают с Вашими, то разве он не прав? Нет, конечно же, он просто не Вы…
                      Я планирую перемены в своей жизни, и карьеру это, безусловно, тоже затрагивает, но всему свое время (по крайней мере, я очень надеюсь, что будет возможность воплотить свои мысли/идеи в жизнь).

                      P.S. Давайте завязывать эту дискуссию, мы отошли далеко от темы поста. С удовольствием готов продолжить в личной переписке, если Вам угодно.
          • +1
            Рад, что в итоге Вы нашли хорошее место. Я начинал именно со стажировки в крупной компании, и дальше все было хорошо =)
            Поверьте, если в самом начале карьеры и есть какие-то проблемы с поиском работы, то уже с годом-двумя опыта Вас с руками отрывать будут. Ну а поиск места, где хватит на доширак, займет пять минут.
            Если Вам интересен процесс дизассемблирования, могу Вам посоветовать отослать резюме в Центр Специальных Разработок МО РФ — там реверс инжиниринга навалом, и оплата труда вполне достойная, не говоря уже о том, насколько интересные задачи у них бывают
  • 0
    А у вас военный билет есть? Насколько я понял универ вы уже закончили и вас на работу приняли, значит и военник им показали.
    • +5
      Военкомат на хабре?
      • 0
        Если бы :) Просто проблема очень актуальная.

Только зарегистрированные пользователи могут оставлять комментарии. Войдите, пожалуйста.