Аватар пользователя Kirill Mokevnin
9707

mokevnin

Kirill Mokevnin

На Хекслете с 12 июля 2014

CTO at hexlet.io

Ульяновск, Ульяновская область, Россия

Анатомия проектов Хекслета главное изображение
Код

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

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

Чем отличается обучение на Хекслете от других школ главное изображение
Мотивация

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

Совершенный код: состояние в модулях главное изображение
Код

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

Совершенный код: библиотека или своё решение главное изображение
Код

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

Совершенный код: плохие и хорошие практики при проектировании параметров функций главное изображение
Код

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

Совершенный код: обработка ошибок в библиотеках главное изображение
Код

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

Совершенный код: интерфейсы модулей главное изображение
Код

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

Совершенный код: явные и неявные параметры функций главное изображение
Код

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

Совершенный код: поддержка кроссплатформенности главное изображение
Код

Кроссплатформенность — способность программы запускаться на разных платформах, например, разных операционных системах. Это довольно важное качество для программ, которые нужно запускать и в Windows, и в Linux. Причем как со стороны пользователей (все хотят кроссплатформенный фотошоп), так и со стороны разработчиков. Последнее часто встречается в веб-разработке, где часть команды может использовать одну операционную систему, а часть другую.

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

Совершенный код: нормализация данных главное изображение
Код

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

Совершенный код: дефолты в свитчах главное изображение
Код

Свитч — очень простая конструкция, которую изучают программисты в самом начале своего пути. Она ни у кого не вызывает вопросов, но с ней связана одна интересная деталь, которую очень часто упускают из виду и, в итоге, используют свитч неправильно. Это дефолтное поведение.

Аватар пользователя Kirill Mokevnin
Kirill Mokevnin
27 февраля 2020
Совершенный код: избавляйтесь от строк главное изображение
Код

Веб-программирование насквозь состоит из манипулирования строковыми данными. Данные в базе, данные в JSON (который тоже строка), данные в коде (SQL-запросы, списки). Часть этих строк на код не влияет, это просто данные, которые гоняются из базы пользователю и обратно. Другие данные задействованы в логике приложения и серьезно влияют на устойчивость к ошибкам и скорость их обнаружения.

Аватар пользователя Kirill Mokevnin
Kirill Mokevnin
16 февраля 2020
Сложные простые задачи по программированию главное изображение
Код

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

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

Совершенный код: нисходящее и восходящее проектирование главное изображение
Код

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

В книгах эти подходы часто противопоставляются. Считается, что если выбран один подход, то второй исключен. Но это не так — в статье я объясню, почему следование только в одном направлении приводит к проблемам.

Скрипты, модули и библиотеки главное изображение
Код

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

Аватар пользователя Kirill Mokevnin
Kirill Mokevnin
17 сентября 2019
Совершенный код: проектирование функций главное изображение
Код

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

Как эффективно читать профессиональную литературу главное изображение
Мотивация

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

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

Есть такой код, который я называю "код, который заставляет себя переписывать". Этот код не выглядит плохо и про него нельзя сказать сразу, что он делает что-то плохое. Проблемы проявляются позже — в тот момент, когда нужно внести изменения либо отладить его.

Архитектура и ООП главное изображение
Код

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

Bootstrap или свое решение главное изображение
Код

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

  • Bootstrap подходит только для админок
  • Bootstrap мешает, если нужно кастомизировать
  • Проще и быстрее написать своё

Так ли это?

Совершенный код: ошибки именования в программировании I главное изображение
Код

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

Рекомендации по составлению вакансий для начинающих разработчиков главное изображение
Мотивация

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

Монокультура главное изображение
Мотивация

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

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