Когда я только начинал изучать программирование, у меня голова была забита кучей неверных представлений о профессии программиста и о том, как и что нужно учить. Со временем я понял несколько важных вещей, которые, если б я узнал это раньше, очень сильно упростили и ускорили бы мое обучение.
- Какой язык программирования изучать первым? Неважно!
- Про первую работу
- Учиться программировать сложно
- Про code kata
- Не нужно зубрить названия функций
- Тупить — это нормально. (с) Елена Малышева
Большинство этих вещей до меня дошли именно в процессе обучения и общения с ребятами-программистами на Хекслете. Для кого-то это явно будут откровения Капитана Очевидность, но, возможно, кому-то оно и принесет пользу.
Какой язык программирования изучать первым? Неважно!
Не нужно тратить сильно много времени на выбор и мучаться этим. Берите Ruby, Python, JavaScript, PHP, Java, Lisp, да хоть паскаль — не ошибетесь. Для начала вам все равно нужно будет освоить базовые вещи, такие как циклы, условия, переменные, функции, объекты, рекурсию и т.п. Я когда-то в школе немного программировал на всяких бейсиках и C++, но к тому времени, как решил стать программистом, все это успешно забыл.
Начал изучение с Java, и не жалею, после этого было легче изучать менее строгие языки, вроде JS и PHP. Минус Java в том, что, если вы живете не в милионнике, вам будет весьма сложно найти на нем работу джуниора и получается, что обучение какое-то бесцельное, ради обучения, что сильно снижает мотивацию. В то время, как изучая PHP, например, уже очень быстро можно брать какие-то первые заказы на фрилансе, устроиться на первую работу в веб-студию и т.п., т.е. начать на своем хобби зарабатывать первые деньги, что очень сильно поднимает мотивацию.
Новички так серьезно подходят к вопросу «Какой же язык программирования выбрать», будто им предстоит подписать договор с дьяволом, и всю жизнь писать только на этом единожды выбранном языке. Лично для меня просветлением стало, когда я увидел профили высокооплачиваемых программистов на бирже Upwork, почему-то очень во многих из них было написано примерно следующее — могу Django, могу Rails, а еще Meteor и Angular, да и Spring тоже. И Joomla само собой.
Потом я спрашивал некоторых знакомых (и малознакомых) программистов об их карьере, и увидел некий паттерн, которого раньше не понимал. Человек может, например, год работать с PHP, потом уйти на Java, потом плюнуть и выучить руби, стать RoR разработчиком, и в итоге заняться Node.js или Clojure. Любой нормальный программист знает несколько языков хорошо и десяток поверхностно. Поэтому не ломайте голову, не пытайтесь выбрать Самый Лучший Язык и строчить для этого тысяча первый вопрос на тостере. Просто берите любой язык и прочитайте по нему хотя бы одну книгу/пройдите курс. Попытки выбрать Самый Лучший Фреймворк из той же серии.
Про первую работу
Очень многие программисты начинают свою работу с весьма непрестижных компаний и крошечных зарплат. И это нормально. Но это сложно принять, особенно тем, кто решает «войти в айти» уже не в юном возрасте, имея семью и детей. Мифам об огромных зарплатах программистов зачастую способствуют школы программирования, которым нужно продавать свои курсы и в итоге на своих лендингах они крупным шрифтом пишут какие-то заоблачные цифры, вроде «средняя зарплата JavaScript программиста 150 000 рублей», при этом часто забывают сказать, что такую зарплату получают люди с опытом в несколько лет (или даже десяток лет), которые могут решать реальные сложные задачи, а вам после их курсов на старте светит тысяч 30 на испытательный срок, и это в Москве. А то и вообще попросят бесплатно поработать. За опыт и еду. Не нужно бояться идти на непрестижную и малооплачиваемую работу, потому что как только вы официально начнете работать программистом, даже за 20 тысяч в месяц, ваша привлекательность в глазах других работодателей и HRов сильно вырастет. На старте работу никто не мешает менять хоть каждые 3-6 месяцев, каждый раз уходя на бОльшую зарплату и более интересные задачи.
Но я, конечно же, не говорю, что нужно идти работать за еду, может конкретно вы найдете первую работу и за 100 000 в месяц. Просто нужно понять, что карьера тоже требует немалых усилий, и необходимо активно изучать рынок труда, время от времени общаться с рекрутерами и ходить на собеседования, чтобы адекватно себя оценивать в каждый момент времени. А первая работа — это не навсегда.
Читайте также 30 лет? Иди на Хекслет изучать программирование: история успеха студента.
Учиться программировать сложно
В процессе учебы должны быть моменты, когда мозг напрягается, и вам кажется, что вы ничего не понимаете. Если все получается легко и без напряга, значит вы учитесь не программировать, а повторять за диктором. Если привести грубую аналогию, вас учат не плавать, а шевелить ногами, лежа на песочке. Конечно, возможно, что вы гений и вам просто все легко дается. Чтобы реально оценить свои способности, сходите на пару-тройку собеседований по изучаемому языку программирования и попытайтесь выполнить тестовые задания, которые вам дадут.
Лично я долго (слишком долго) учился на всяких курсах из серии «посмотри на меня, делай как я». Когда начал учиться на Хекслете, у меня от некоторых заданий просто мозг кипел, да и сейчас кипит. Одно задание я пытался сделать 3 дня. Но в итоге я прокачался, и теперь могу решать более сложные задания, чем раньше. Мне кажется, именно в этом должна быть цель хороших курсов программирования. Не в том, чтобы натренировать вашу память на запоминание 1000 функций из какой-то библиотеки. А в том, чтобы заставить мозг напрягаться и с каждым днем решать все более сложные задачи.
Про code kata
На определенном этапе (почти сразу после изучения основного синтаксиса одного из языков программирования), нужно набить руку в решении простых (хотя бы простых, для начала), алгоритмических задачек. Есть десятки разных сервисов, где это можно делать — codewars.com, exercism.io, hackerrank.com и т.п. Проскочить этот этап не получится. Если вы зашли на codewars и просто не понимаете, что от вас хотят, и как решать даже самые простые задачи первых уровней, срочно вливайтесь в какое-то сообщество, где есть программисты и единомышленники, изучающие программирование, и где можно будет задавать вопросы и получать помощь. Одно из таких мест — чат Хекслета. Если вы не научитесь решать эти простые задания, вероятность резиста того, что вы сможете решать какие-то реальные рабочие задачи, крайне мала.
Не нужно зубрить названия функций
Смысл вообще не в этом. Это дошло до меня как-то внезапно и совсем недавно. Вообще не надо пытаться насильно их запомнить. Я пытаюсь понять смысл, построить какую-то абстракцию, грубо говоря, сформулировать для себя общую концепцию того, что изучил.
К примеру, если я знаю, что обычно в языках программирования есть возможность привести строку к нижнему регистру. C этим знанием общей концепции, если я захочу например, писать на COBOL, просто загуглю — tolowercase in Cobol. И вуаля Lower-case(Item-1)
. Если я буду много писать на каком-то определенном языке, я загуглю основные функции по 100 раз, и на каком-то этапе уже их запомню.
Кстати, это очень полезная штука и для изучения иностранных языков, я лично просто ненавижу делать какие-то списки, карточки и зубрить слова. Особенно у меня вызывают желание ругаться матом наборы слов, вырванные из контекста, типа «100 прилагательных на тему Погода». Это просто нереально запомнить, а даже если и зазубрил сегодня, через месяц 80 процентов забудешь. Гораздо эффективнее просто читать/смотреть интересный тебе контент на языке и искать незнакомые слова в словаре каждый раз, таким образом через какое-то время самые употребительные слова запоминаются естественным образом.
В общем, при изучении очередной фишки языка программирования достаточно понять в целом, что оно делает, и знать, как это загуглить.
Начните изучать разработку с бесплатного курса «Основы современной вёрстки». Вы научитесь создавать статические веб-страницы, стилизовать элементы, использовать редакторы кода с полезными расширениями. В конце курса вы опубликуете свой первый сайт на GitHub Pages.
Тупить — это нормально. (с) Елена Малышева
Особенно это важно понимать тем, кто изначально далек от IT, но пытается сменить профессию и освоить программирование. Я увидел много примеров, когда очень опытные разработчики спрашивают совета касательно какой-то новой технологии, хотя, казалось бы, им с одного взгляда на документацию все должно быть понятно и все проблемы у них решаются одной левой. Опытные программисты порой говорят что-то вроде - ну его нафиг эту штуку, вообще не понимаю, как тут все работает, не мое это. Или, долго занимаясь одной технологией, просто не могут заставить себя разобраться в новой, построенной на других принципах.
То есть люди, которые занимались программированием много лет, иногда тоже не могут самостоятельно разобраться в какой-то новой фиче, и совершенно не стесняются просить совета и помощи. Однако, с вероятностью 99% предварительно они пытались сами решить эту проблему, обратились к Google и Stackoverflow, но безуспешно.
Поэтому если вы пытаетесь стать программистом с нуля, вообще не парьтесь о том, что что-то непонятно и не ставьте на себе крест, вам должно быть очень многое непонятно! Не стесняйтесь задавать много вопросов, ну и гугл ваш лучший друг. Сперва всегда пытайтесь решить свои вопросы самостоятельно, а потом просите помощи, при этом желательно расписать, что вы уже пробовали для решения проблемы.
Никогда не останавливайтесь: В программировании говорят, что нужно постоянно учиться даже для того, чтобы просто находиться на месте. Развивайтесь с нами — на Хекслете есть сотни курсов по разработке на разных языках и технологиях