Хекслет
✔
7.98K subscribers
4.21K photos
46 videos
1 file
2.87K links
Программы обучения - https://ru.hexlet.io/courses
Сообщество @hexletcommunity AI Клуб @hexletclub
Поддержка @hexlet_help_bot
Download Telegram
Нужно ли читать что-то еще, кроме того, что дается на курсах? Такой вопрос иногда задают студенты. Короткий ответ: да, обязательно. И на это есть несколько причин.

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

Во-первых, не существует универсальных принципов объяснения сложных вещей, которые одинаково хорошо подходят для всех. Одна и та же аналогия может для одних быть лучшим способом что-то рассказать, а для других — худшим.

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

Кстати, подробно о том, как создается контент, мы рассказываем в нашей школе авторов: https://making.hexlet.io/authors
👍16❤2💩1
Обзор на книгу «Грокаем функциональное мышление»

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

Если вы не знакомы с книгой «Грокаем алгоритмы», то этот абзац для вас. Сама эта книга известна как бестселлер и своеобразный мастрид для новичка. Все дело в том, что автору удалось рассказать про относительно сложную тему (алгоритмы и структуры данных), максимально простым языком и даже картинками. На самом деле, если убрать из этой книги рисунки, то ее объем сократится вдвое, и она станет больше похожа на тетрадку, но здесь и заключается один из ее плюсов и секретов популярности. Несмотря на малый объем, автор доходчиво объясняет читателю, что такое алгоритмы, зачем они нужны и прекрасно вводит в эту область знаний.

В понимании функционального программирования (ФП) есть одна грубая ошибка – думать, что оно сводится к функциям и противопоставлено ООП. На самом деле ФП противопоставляется скорее императивному стилю программирования, и для него огромное значение имеет неизменяемость данных, чистые функции, ограничение сайд-эффектов и тому подобное. Я знал все это перед чтением и надеялся, что сей опус введет меня в мир лямбда-исчислений и каррирования, расскажет про монады и всякие такие интересности, но я ошибся.

Начну с плюсов: в книге не так много картинок, как в «Грокаем алгоритмы», что во многом связано со спецификой содержания. Речь зачастую идет о более абстрактных вещах, прежде всего об архитектуре программ, но при этом объем достигает 600 страниц. Другим плюсом является простота и доходчивость, с которой автор рассказывает о том, что такое функциональное мышление – многие темы повторяются по несколько раз, в книге щедро представлены примеры кода и упражнения, а разделы книги пересекаются друг с другом. Приятным является и то, что книга издана в этом, то есть 2023 году. Наконец, акцент на практическом применении функционального мышления в реальной разработке тоже является своеобразным плюсом, поскольку автор подробно на примерах показывает способы изоляции сайд-эффектов, построения кода, и лично я увидел для себя несколько новых вопросов для размышления. Но здесь-то мы и переходим плавно к минусам сего труда.

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

Вот и все. Маловато содержания для 600 страниц, и совсем уж мало для такой темы, учитывая, что я так и не прочитал про лямбда-исчисления, не увидел примеров каррирования, не познал монады. Тем не менее я получил от книги определенное удовольствие и вполне могу ее порекомендовать и вам, поскольку она не является тратой времени, но по-своему приятна в качестве познавательной литературы.
⚡23👍17❤2🤮1
Найм в любой области обладает сезонностью. Сейчас в поиске работы наблюдается плато, а к сентябрю снова начнется рост найма, который доходит до пика в октябре.

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

Приятного чтения, а тем, у кого скоро собеседования, удачи!
❤22🤮1
Хекслет приглашает принять участие в бесплатном Шахматном турнире для новичков, который состоится 7 июня в 20:00.

Мы ограничиваем участие по рейтингу (Рейтинг ≤ 2000 в быстрых играх на Lichess.org), чтобы дать возможность начинающим шахматистам проявить свой талант и без страха сыграть несколько партий.

Зарегистрироваться можно по ссылке: https://lichess.org/tournament/GKPnXrRz

Чуть не забыли про призы:

- 1 место — 3 Подготовительных курса (три курса по разным стэкам, вы сами решаете, что с ними делать: пройти или подарить друзьям)
- 2 место — 2 Подготовительных курса на выбор
- 3 место — 1 Подготовительный курс на выбор

Подготовительные курсы — это 14-дневные программы для изучения базовых понятий программирования на одном из трех языков: JS, Python и Java. Курсы подходят новичкам без опыта или с небольшим самостоятельным бэкграундом в IT-сфере. Обучение проходит на платформе Code Basics прямо в браузере. Каждый день студенты получают план-уроков, решают задачи в удобном для себя темпе, а в Telegram-чате им помогает наставник.

А еще выпускники подготовительного курса получают скидку на профессии.

Ждем вас 7 июня на турнире!
❤16💩3🏆3🔥1
Могут ли программисты работать без интернета?

Во времена, когда есть ИИ-помощники и форумы, такие как ChatGPT, GitHub Copilot и StackOverflow, с помощью чего программисты могут быстро генерировать или находить решения, логично задать вопрос: Кто ты без интернета?

На самом деле программирование появилось задолго до интернета. То есть программисты точно могли работать без помощи всемирной сети. Более того, нельзя было сразу понять, есть ли в программе ошибки – приходилось относить перфокарты на компиляцию и возвращаться спустя часы и дни для получения результата. Одна незначительная ошибка могла увеличить срок появления рабочей программы на несколько дней.

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

Так могут или нет?
Языки программирования сами по себе редко требуют подключение к интернету. Поэтому написать программу можно без него.

Даже веб-приложение для браузера можно сделать офлайн без каких-либо проблем. Интернет нужен для его распространения.

Поэтому программировать без интернета точно можно. Желательно иметь под рукой документацию, пару справочников, сеньора с 30 годами опыта.

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

Системы контроля версий (Git) используются далеко не только для того, чтобы фиксировать изменения и иметь возможность откатиться. Возможность хранить репозитории с кодом в таких сервисах, как GitHub и Gitlab, позволяет работать программистам из любой точки мира при наличии интернета и соответствующего оборудования. А также подобное хранение репозиториев с кодом дает возможность продолжать работу с любого компьютера.

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

Современное ПО
Даже если бы программисты не использовали интернет для повышения удобства своей работы, то убежать от него не получится.

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

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

Количество взаимодействий внутри приложений через интернет увеличивается.

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

Этот пост написал наш автор Владлен Гилязетдинов. Владлен наставничает на Хекслете, знает PHP, пишет классные тексты. Если у вас есть вопросы к Владлену, задавайте их в комментариях👇
🔥15👍7⚡5👏2💩1
Почему начинать обучение программированию с книг — не лучший вариант?

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

Обучение программированию эффективно настолько, насколько оно связано с практикой. Хотя программирование — это интеллектуальная деятельность, но здесь будет справедливо сравнить его с атлетикой. Потому что очень важную роль во всем процессе обучения играют нейронные связи. Только если у атлета нейромышечная связь развивается от работы, скажем, с отягощениями, то у программиста нейроны растут от работы с кодом. Код нужно буквально почувствовать, привыкнуть к нему, и это, на мой взгляд, лучший первый шаг.

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

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

Еще одной проблемой книжного формата является отсутствие комьюнити. Даже у роликов на YouTube есть комментарии, где можно встретить недоуменные вопросы и ответы на них от других зрителей. Для книг эта ситуация, конечно, невозможна.

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

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

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

Более того, в жизни программиста обязательно наступает момент, когда именно книги становятся источником новых качественных знаний по программированию. Потому что многие вещи, которые сегодня на слуху, например, функциональное программирование, были открыты и продуманы еще очень давно. И для их исследования нужно спуститься на определенную глубину, которая и представлена книгами опытных профессиональных программистов.
👍23👎3💩3🤔2
6 июня в 19:00 по МСК состоится Традиционный прямой эфир с Кириллом Мокевниным. Сооснователь Хекслета будет делиться новостями и планами на будущее, а также отвечать на ваши вопросы.

Событие редкое, такое случается раз в полгода, поэтому не пропустите!

Ссылка на эфир: https://www.youtube.com/watch?v=rPo6I3tz4KY
❤25🔥12👍4💩3
Хекслет pinned «6 июня в 19:00 по МСК состоится Традиционный прямой эфир с Кириллом Мокевниным. Сооснователь Хекслета будет делиться новостями и планами на будущее, а также отвечать на ваши вопросы. Событие редкое, такое случается раз в полгода, поэтому не пропустите! Ссылка…»
Привет!
Адаптировали для вас статью «5 Difficult Skills That Pay Off Exponentially in Programming». Повествование ведется от имени автора.

Навык 1. Баловаться с игрушками

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

Навык 2. Бросать себе вызов

Вызов — это проактивность, то есть история про инициативу, а не про исправление косяков и проблем. Инициатива — это когда вы делаете шаг вперед и берете на себя ответственность.
Допустим, вы написали функцию, которая читает переменные из файла конфигурации. Файл конфигурации известен заранее и не будет меняться, он называется myfile.config. Поэтому мы укажем имя файла в теле кода. Вот как будет выглядеть интерфейс такой функции: func readParams()

Как бросить себе вызов? Вы могли бы изменить функцию так, чтобы она могла принимать первым параметром имя файла конфигурации. Код было бы проще читать и менять. Мы можем просто указать имя myfile.config как значение по умолчанию. func readParams(filename: String="myfile.config")

Если вы не приняли этот вызов и написали код как в первом варианте — никто вас за это не съест. Но представьте ситуацию: пользователям очень понравилось такое приложение, они поставили пробной версии пять звезд и жаждут продолжения. Но если не добавить функционал из второго варианта, то они вряд ли купят полную версию.

Навык 3. Быть грамотным

Если вы хорошо понимаете правила грамматики (особенно английской), то вам легче распознавать повторяющиеся паттерны. Благодаря этому работа со старым кодом или новыми фреймфорками становится проще. А еще это гарантия того, что ваш код будет читабельным.

Навык 4. Уметь рассказывать о своей работе

Вот пример из реального опыта:
Программист А:
Пользователь переходит на страницу входа. Он вводит логин и пароль, нажимает кнопку Войти. Если он введет символы #, & или *, то произойдет ошибка входа. После этого, если пользователь ввел корректные данные, то фронтенд-часть отправит API-запрос. Еще раз, пароль должен быть хэширован. Потом API сравнивает хэш пароля с тем, что есть в БД. Если имя пользователя не найдено в базе, то пароль проверяться не будет, поэтому сначала проверяется имя пользователя. А если и то, и другое совпадают, то код удовлетворения запроса возвращается из фронтенда. Если нет, то возвращается ошибка 401. Если вернулось одобрение, то пользователя перенаправляют на страницу с профилем. А еще запрошен токен и он будет валиден две недели.

Программист Б:
У нас есть два процесса. Первый — это фронтенд, второй — это бэкенд и API (рисует на доске два квадрата).
Оба общаются через запрос по сети HTTP (соединил квадраты стрелочками).
Фронтенд-часть должна принять данные от пользователя и проверить, валидны ли они
Бэкенд-часть должна проверить, совпадают ли данные от пользователя с данными в базе данных. Она проверяет, верен ли хэш пароля.
И самое главное: Если ответ от бэкенда положительный, фронтенд получает токен, который действителен две недели. В течение этого срока пользователь сразу будет перенаправляться на страницу профиля. Логика проверки токена, очевидно, запускается до логики страницы входа.
Вы можете посмотреть подробности запроса к API в документе, который я уже всем разослал/залил на облако.

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

Заходите в телеграм-канал Хабра, там еще много пользы для программистов.
А еще, если вы проходили курсы от Хекслета, можете оставить отзыв на них и получить классные подарки! Подробнее здесь
👍14❤1🤩1💩1🆒1
Как правильно оформлять резюме, чтобы его заметили на карьерном сайте? Что писать, если в резюме нет опыта программирования и только учебные проекты? Какие нюансы стоит учитывать при заполнении строчки «Навыки»?

IT рекрутер в Тинькофф Евгения Остроумова посмотрит ваши резюме в прямом эфире и даст рекомендации по улучшению анкеты. Евгения занимается поиском разработчиков, тестировщиков, аналитиков более 6 лет.

🗓 Лайв начнётся 15 июня в 19:00 по МСК: https://youtube.com/live/ojo9TzA8RzU
❓Хочу, чтобы моё резюме посмотрели. Как это сделать? Напиши нам в канале General
💩3❤1🔥1🤔1
Рассказываем про сервис GitLab: для чего он нужен, как им пользоваться, какие команды у него есть и как быстро создать свой проект. И, конечно же, подробно сравниваем с главным конкурентом — GitHub.
Давайте устроим голосование. Ставьте 👾, если предпочитаете GitHub, и 🤓— если GitLab
👾60🤓21👍13💩6