Уже поздно возвращаться назад, чтобы всё правильно начать, но ещё не поздно устремиться вперёд, чтобы правильно закончить (Ошо)
В трёх словах о проекте: TDD, абстракции, полиморфизм
Я должен был начать проект еще в марте, но на работе предстояла напряжённая неделя, поэтому не рискнул. И нисколько не жалею. Если в первом проекте мозг закипал периодически, то во втором он просто не переставал кипеть! Так что советую выбирать для второго проекта спокойную рабочую неделю или отпуск. Очень показательным в моем случае был последний 7-й шаг. Я искал подвох почти 3 часа и в упор не мог увидеть простое и очевидное решение, даже после толстого намёка Кирилла! Даже стыдно немного…
Прохождение заняло 31 час чистого времени (62 помидорки по полчаса). Хотя, читая комментарии предыдущих групп, я рассчитывал часов на 40. В целом, проект достаточно сложный и бесконечно полезный. Позволяет закрепить и понять на более глубоком уровне те знания и навыки, которые были получены в процессе прохождения курсов.
Выводы:
- Тестирование реально ускоряет и облегчает написание кода. Проект позволяет это прочувствовать.
--watch
даёт почувствовать ещё сильнее :sunglasses: - Архитектура системы очень важна. Ошибка на этапе проектирования может сильно все усложнить и запутать. У вас будет возможность через это пройти. :wink:
- ООП может быть и без классов. Типы, абстракции и полиморфизм - ключ к успеху! :grin:
Курсы Хекслет пролетели незаметно, и я подошел к первому проекту. Я понял, что не хочу приступать к следующим курсам, не сделав первый проект, поэтому записался на ближайшую дату. Если ты хочешь построить корабль, на котором можно переплыть океан, ты должен научиться забивать гвозди, ставить мачты, ладить паруса и делать многое другое. И делать это хорошо. Первый проект - это отличная практика для учащегося программированию и JS в частности. Он не только о "гвоздях" - здесь тебе еще и дается материал, который ими нужно соединить в некую форму. В процессе выполнения проекта ты понимаешь, как работает все то, о чем тебе рассказывалось в курсах, проектируешь программу, сам настраиваешь окружение JS для разработки и применяешь лучшие практики программирования. Лучшие - потому что сделать всё кое-как тебе не дадут.
Я не был уверен, что потяну проект параллельно с работой, поэтому взял неделю отпуска. Оглядываясь назад, могу сказать, что мне это было просто необходимо. Я работаю юристом, и с программированием познакомился лишь на курсах Hexlet. Ближе всего к ИТ я был пару лет назад, когда прочитал книгу о HTML и CSS и накидал на основе какого-то bootstrap'a небольшой сайт. Это все осталось далеко позади, и больше к верстке я не возвращался. Пару месяцев назад, послушав подкасты Рахима, я узнал про Хекслет, и понял, что хочу здесь учиться.
Подготовился к проекту я основательно, пройдя все необходимые курсы, а некоторые перечитав не раз. Также я выполнил все дополнительные практические задания. Если вы новичок в программировании на JS, рекомендую сделать так же.
Первые шаги давались мне легко, я настроился на позитивный лад и даже немного расслабился. Но затем я столкнулся с задачей написания вроде бы простого, но API. И вот тут-то я понял, что не всё так просто! Думаю, это была самая сложная и интересная в проекте задача, требующая отдельного внимания. Теперь приходилось как следует подумать, для того чтобы сделать очередной шаг, а зачастую и переделать его после замечаний от ментора. Один раз в порыве увлеченности, забыв про Гугл, я даже сделал собственный алгоритм для решения задачи, которая была элегантно решена пару-тройку тысяч лет назад. И вот на исходе недели, отведенной на проект, он был принят!
Теперь, после недели интенсивного мозгового штурма, я ощущаю удовлетворение от проделанной работы, усталость и непреодолимое желание что-то улучшить в своем проекте. Пару дней отдыха -и я обязательно этим займусь. А затем -снова ломать голову над задачами на Хекслете в предвкушении следующего проекта. Чего и вам желаю!
P.S. Спасибо Рахиму, Кириллу и всей команде Хекслет. Вы делаете уникальный продукт и учите людей правильным вещам. А это дорогого стоит.
Привет читатель! Хочу поделиться с тобой впечатлениями от прохождения первого проекта в JS стеке Hexlet! Речь пойдет о Brain Games! Это такие консольные игрушечки про математику. Настолько простые, что даже в описании проекта говориться, что основная цель не программирование, а научиться настраивать рабочее окружение. Короче проходняк какой-то... Перейти бы сразу ко второму проекту, но нельзя!.. Лааадно, так и быть, пройдем – думал я поначалу ;)
Тут, для полноты картины, нужно сказать пару слов о себе. Я наверно не совсем обычная птица для Hexlet’a. В прошлом у меня был довольно большой опыт программирования на JS, но сугубо во фронтенде. Ядро богатого SPA с открытым API, >200k строк кода на JS и никаких фреймворков. Было правда это уже давненько. Последние 2 года я не работал и почти не программировал. Пробовал себя в других сферах. Да... выгорание, смена места жительства – бывает в жизни всякое. Но вот в начале этой зимы большой отпуск стал мне чета надоедать. В голове стали появляться идеи каких-то собственных проектов и пальчики снова потянулись к клавиатуре ) Тут я обнаружил, что за последние годы я даже верстать разучился, да и много чего поменялось в верстке. В связи с этим решил освежиться курсом одной известной академии про HTML и CSS. Курс хорошо зашел, мороженки удались на славу ) На последнем общении с ментором, я сказал ему, что здесь наши пути расходятся. Хватит мне пока верстки, дальше у меня по плану fullstack на JS. "Ну тогда обрати внимание на Хекслет» – сказал он. "Угу, спасибо» – сказал я. И хорошо, что записал на листик, а ни то бы забыл нафиг. На следующий день я набрал «хекслет» в поисковике и вот я здесь.
Хекслет, он весь такой теплый-ламповый. Простой дизайн, но зато какой контент! Это сообщество инженеров, фанатов своего дела, и это подкупает. Я сразу залип и вот уже 3 недели прохожу курсы, читаю слак и постоянно узнаю что-то новое.
Но вернемся к проекту. Как говориться "ничего не предвещало», и до 5го шага я дошел без особых проблем. На 5ом же шаге надо было придумать и реализовать архитектуру для того, чтобы дальше было легко добавлять игры. OCP и все такое. Ооок! Взял лист и выписал сущности, которых оказалось всего-то 2. А дальше моя ретроспектива дала о себе знать. Впереди еще 4 шага и что там уготовили создатели?... Ну вряд-ли же там просто новые вопросы и ответы? Должно быть что-то посложнее. А на последнем шаге скорее всего надо будет объединить все игры в одну, или сделать игру, которая будет рандомно брать вопросы из всех предыдущих. Архитектура должна все это легко позволять. Вобщем зафигачил! Игры отдельно. Таски отдельно. Объявления отдельно от инстансов. А клеим все это с помощью скриптов, которые тоже отдельно. Круто! Энтерпрайз! Пробили 11:00 следующего дня. Так, ну когда там уже откроется следующее задание? «Ментор отклонил ваше решение»… Че за!?… «мочи все это, упрощай, сокращай, убивай.» - пишет мне Рахим! Да как так то!? Он даже не потрудился осознать всю мою прекрасную архитектуру! «А че, дальше не будет всяких хитрых заданий?» – примерно так пишу я в ответ. «Нет.» – отвечает Рахим. Блин, ну ладно. Раз сценарий один, сваливаем скрипты в 1 файл и убираем папочку scripts. Но таски и игры пусть то останутся. «Нет.» – отвечает Рахим на следующий день. Да ё-маё! Дальше было несколько длинных и эмоциональных взаимных постов. Ладно, надо же пройти этот проект в конце концов, а то как-то глупо получается. Объединяю, упрощаю – ломать не строить. Апрув… Надо сказать, что в аргументации Рахима были правильные и новые для меня мысли, но глубинные стереотипы так просто не поменяешь. Поэтому вечером четверга я прибывал в недовольном настроении. Но тут внезапно Кирилл объявляет слаконар на тему «SOLID не нужен». Так, если это говорит Кирилл, то с вероятностью 99% он действительно не нужен. Осталось понять почему. Дальше было 2-3 часа чтения, и это был наброс конечно, но в этом слаконаре мне хорошо запомнились слова про архитектурных астронафтов, и я внезапно почувствовал этот скафандр на себе. А дальше я посмотрел, упомянутый Кириллом, доклад Николая Рыжикова про изоморфизм Ричарда Хикки, где уже Николай бил, что называется не в бровь, а в глаз. Долго еще не мог заснуть в этот вечер. В моем мозгу произошли какие-то тектонические подвижки и это воодушевляло. Вот так такой вот интересный опыт подарили консольные игрушечки про математику. Дальше видимо будет больше!
Рахим, Кирилл и все, кто делает Hexlet, спасибо Вам! Вы очень крутые! Учиться у Вас – огромное удовольствие!
Проект 1
Спасибо большое. Проект оставляет прекрасные впечатления. Очень понравилось, то что это как реальная работа. За это неделю прокачался очень сильно. Очень помогает то , что можно общаться с такими же студентами проекта и решать проблемы вместе. Помогают замечания ментора строить правильную логику и исправлять свои ошибки. Лично для меня это супер удовольствие, т.к. каждый шаг приближает меня к тому что я смогу перейти с программиста 1С, в более интересное место, где практически нет ограничений) Жду остальные проекты. Правда переживаю за то что могу не успеть за неделю, т.к. работаю и решаю только по вечерам или ночам).
Проект 2:
Сказать что это было супер, значит не сказать ничего. Тут вам и разработка через тесты, и работа с деревьями по полной и много и много всего. А общение с ментором вообще неоценимо. После второго проекта по другому начинаешь смотреть на уже привычные вещи. Вот она настоящая работа в команде. Все ребята всегда открыты для обсуждения, всегда готовы помочь советом.
Хекслет, большое спасибо тебе за то что ты такой)
Как устроиться в продуктовую компанию программистом за 3 месяца. Что может поставить в тупик на интервью. Какие технологии стоит иметь ввиду при поиске работы. Чему действительно может научить Хекслет и чем он может напугать начинающего разработчика. В чем следует поднабраться опыта, чтобы иметь высокие шансы трудоустройства.
Первый проект показался не очень сложным, но зато познакомил с большим количеством инструментов и сервисов, на уверенное овладение которыми, видимо, уйдет какое-то время. =) Откладывал вступление в первый проект пару месяцев, уйдя в изучении курсов далеко вперед. Думал, что не получится совместить с работой. В итоге специально взял отпуск на неделю для работы над проектом. Теперь жалею, что не вступил в проект раньше, так как при наличии 3-4 свободных часов в день, завершить его не составит труда. Мой совет сомневающимся - вступайте, это бесценный опыт! Спасибо ментору Рахиму Давлеткалиеву. С нетерпением жду начала второго проекта! И последнее, установите себе Linux, наконец!
Спасибо! Было интересно. Поначалу хотелось сразу писать код правильно, только не понятно было, как это сделать :). Уже в процессе переделки написанного начал улавливать суть правильной архитектуры программы (наверное, это именно так можно назвать). Здорово было коснуться работы с инструментами разработчика, вроде Трэвиса и npmjs. До этого работал только с гитхабом. Трэвис только видел (это был для меня какой-то темный лес). npmjs - не думал, что сам буду размещать там свой пакет. Про остальные вообще не слышал (asciinema, codeclimate). А жаль, одна только запись сессии в терминале с возможностью копировать команды многого стоит! В целом, для меня первый проект стал хорошим введением в разработку на JS - не сильно сложный, но местами головоломный. Можно сказать, он сам по себе - Brain Game :)
Меня зовут Роман и я стал программистом в 36 лет. Моя история в первую очередь для тех, кто сомневается, боится и не верит в свои силы. Если даже я смог, то у тебя точно все получится :)
Очень понравилась сама практика работы с "наставником", когда твои труды оценивают и дают замечания для исправления - это очень эф. обучение и мобилизует тебя. Но поначалу (этап настройки рабочего окружения) было слишком много всего нового для меня и непонятного, было сложно находить нужные знания в интернете и не хватало 2-х проверок в день, хотелось узнать все вопросы в режиме диалога, но данная схема этого не позволяет.
Я рад, что участвовал в этом проекте. Какую пользу дал мне этот курс конкретно:
- наконец-то стал пользоваться git
- самостоятельно в процессе курса настроил деплой разрабатываемых сайтов на хостинг, с помощью git, используя сервер bitbucket (долго хотел но не получалось)
- использование composer
- умение создавать и пользоваться пакетами packagist
- умение создавать команды через mаke
- умение создавать исполняемые файлы для CLI
Важно не только знать как это делать, а именно начать уже это делать. Потому, что знания без практики быстро испаряются.
Большое спасибо Рахиму Давлеткалиеву за проект. Важно, что он не только указывал на мои конкретные ошибки, а объяснял почему так делать не правильно и давал ссылки на статьи где объяснялось концепция данного вопроса.
Приняли сегодня второй проект. Это не передаваемое ощущение когда рефакторишь пол дня, делая все красиво с полиморфизмом типа, но никогда этого раньше особо не делал, соответственно очень много сомнений что оно ваще будет работать. А оно берет и работает, причем с первого раза! Вот это было огонь прям!!! В целом мне очень понравились, многие вещи хорошо усвоились...
P. S. Всем, кто собирается проходить 2 проект, рекомендую повторить тему деревья!
История о том как я пришел в программирование, как прошел обучение, о собеседованиях и о том куда устроился. В общем обо всем понемногу или "История успеха" ).