Основные возможности платформы Hexlet не доступны в вашем браузере. Пожалуйста, обновитесь.
Блог Хекслета
Развитие
26 марта 2017, Kirill Mokevnin

РазвитиеМонокультура

Монокультура в программировании — это использование одного стека для решения всех возникающих задач. Она существует не только на уровне конкретного человека и его предпочтений, но также часто встречается на уровне компаний. В таких компаниях, как правило, все делается с использованием одну технологию.

Если вам интересно, как и почему монокультура может приводить к более дорогим и сложным решениям, то добро пожаловать под кат.

Читать дальше →
19 марта 2017, Kirill Mokevnin

РазвитиеКак эффективно читать профессиональную литературу

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

Читать дальше →
11 февраля 2017, Kirill Mokevnin

Развитие4 совета начинающим программистам для повышения своей продуктивности

Недавно запущенные проекты на Хекслете очень хорошо показывают системные ошибки начинающих разработчиков. В этой статье я описал некоторые паттерны, следование которым поможет решать задачи быстрее и лучше.

Читать дальше →
13 января 2017, Kirill Mokevnin

РазвитиеАлгоритм поиска первой работы

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

Читать дальше →
30 июля 2016, Арбатский Артём

РазвитиеКак учиться программировать: 6 вещей, которые я понял, учась на Хекслете

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

Большинство этих вещей до меня дошли именно в процессе обучения и общения с ребятми-программистами на Хекслете. Для кого-то это явно будут откровения Капитана Очевидность, но, возможно, кому-то оно и принесет пользу.

Неважно какой язык изучать первым.

Не нужно тратить сильно много времени на выбор и мучаться этим. Берите 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 в месяц. Просто нужно понять, что карьера тоже требует немалых усилий, и необходимо активно изучать рынок труда, время от времени общаться с рекрутерами и ходить на собеседования, чтобы адекватно себя оценивать в каждый момент времени. А первая работа - это не навсегда.

Обучение не может быть простым.

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

Лично я долго (слишком долго) учился на всяких курсах из серии “посмотри на меня, делай как я”. Когда начал учиться на хекслете, у меня от некоторых заданий просто мозг кипел, да и сейчас кипит. Одно задание я пытался сделать 3 дня. Но в итоге я прокачался, и теперь могу решать более сложные задания, чем мог раньше. Мне кажется, именно в этом должна быть цель хороших курсов программирования. Не в том, чтобы натренировать вашу память на запоминание 1000 функций из какой-то библиотеки. А в том, чтобы заставить мозг напрягаться и с каждым днем решать все более сложные задачи.

Про code kata.

На определенном этапе (почти сразу после изучения основного синтаксиса одного из языков программирования), нужно набить руку в решении простых (хотя бы простых, для начала), алгоритмических задачек. Есть десятки разных сервисов, где это можно делать - codewars.com, exercism.io, hackerrank.com и т.п. Проскочить этот этап не получится. Если вы зашли на codewars и просто не понимаете, что от вас хотят и как решать даже самые простые задачи первых уровней, срочно вливайтесь в какое-то сообщество, где есть программисты и единомышленники, изучающие программирование, и где можно будет задавать вопросы и получать помощь. Одно из таких мест - слак чат Хекслета. Если вы не научитесь решать эти простые задания, вероятность резиста того, что вы сможете решать какие-то реальные рабочие задачи, крайне мала.

Не нужно зубрить названия функций.

Смысл вообще не в этом. Это дошло до меня как-то внезапно и совсем недавно. Вообще не надо пытаться насильно их запомнить. Я пытаюсь понять смысл, построить какую-то абстракцию, грубо говоря, сформулировать для себя общую концепцию того, что изучил.

К примеру, если я знаю, что обычно в языках программирования есть возможность привести строку к нижнему регистру. C этим знанием общей концепции, если я захочу например, писать на COBOL, просто загуглю - tolowercase in Cobol. И вуаля Lower-case(Item-1). Если я буду много писать на каком-то определенном языке, я загуглю основные функции по 100 раз, и на каком-то этапе уже их запомню.

Кстати, это очень полезная штука и для изучения иностранных языков, я лично просто ненавижу делать какие-то списки, карточки и зубрить слова. Особенно у меня вызывают желание ругаться матом наборы слов, вырванные из контекста, типа “100 прилагательных на тему Погода”. Это просто нереально запомнить, а даже если и зазубрил сегодня, через месяц 80 процентов забудешь. Гораздо эффективнее просто читать/смотреть интересный тебе контент на языке и искать незнакомые слова в словаре каждый раз, таким образом через какое-то время самые употребительные слова запоминаются естественным образом.

В общем, при изучении очередной фишки языка программирования достаточно понять в целом, что оно делает, и знать, как это загуглить.

Тупить - это нормально. (с) Елена Малышева.

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

То есть люди, которые занимались программированием много лет, иногда тоже не могут самостоятельно разобраться в какой-то новой фиче, и совершенно не стесняются просить совета и помощи. Однако, с вероятностью 99% предварительно они пытались сами решить эту проблему, обратились к Google и Stackoverflow, но безуспешно.

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

Читать дальше →
06 июня 2016, Rakhim D.

РазвитиеРахим Давлеткалиев: Как учить английский всю жизнь

Со-основатель Хекслета Рахим рассказывает про основные моменты, которые считает важным при изучении иностранных языков, в частности – английского. Дополнительные ссылки.

Читать дальше →
06 июня 2016, Rakhim D.

РазвитиеКирилл Мокевнин: Формирование инженерной культуры

О создании и развитии хорошей инженерной культуры в команде.

Читать дальше →