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

mokevnin

Kirill Mokevnin

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

CTO at hexlet.io

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

Среды разработки: какие они бывают и чем отличаются друг от друга главное изображение
Код Без стека

Сооснователь Хекслета Кирилл Мокевнин рассказывает, какие бывают среды разработки, как проводится контроль и испытание фичи и что такое интеграция.

Аватар пользователя Kirill Mokevnin
Kirill Mokevnin
21 марта 2023
152 Время чтения статьи ~5 минут Читать дальше
Как эффективно читать профессиональную литературу главное изображение
Мотивация Без стека

Cооснователь Хекслета Кирилл Мокевнин рассказывает, как эффективно читать профессиональную литературу и каким образом правильно выбирать книги.

Аватар пользователя Kirill Mokevnin
Kirill Mokevnin
14 декабря 2022
321 Время чтения статьи ~2 минуты Читать дальше
Анатомия проектов Хекслета главное изображение
Код

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

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

Аватар пользователя Kirill Mokevnin
Kirill Mokevnin
29 апреля 2022
200 Время чтения статьи ~9 минут Читать дальше
Чем отличается обучение на Хекслете от других школ главное изображение
Мотивация

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

Аватар пользователя Kirill Mokevnin
Kirill Mokevnin
09 января 2021
139 Время чтения статьи ~12 минут Читать дальше
Совершенный код: состояние в модулях главное изображение
Код

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

Аватар пользователя Kirill Mokevnin
Kirill Mokevnin
26 июня 2020
141 Время чтения статьи ~5 минут Читать дальше
Совершенный код: библиотека или своё решение главное изображение
Код

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

Аватар пользователя Kirill Mokevnin
Kirill Mokevnin
20 июня 2020
151 Время чтения статьи ~4 минуты Читать дальше
Совершенный код: плохие и хорошие практики при проектировании параметров функций главное изображение
Код

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

Аватар пользователя Kirill Mokevnin
Kirill Mokevnin
20 июня 2020
175 Время чтения статьи ~6 минут Читать дальше
Совершенный код: обработка ошибок в библиотеках главное изображение
Код

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

Аватар пользователя Kirill Mokevnin
Kirill Mokevnin
20 марта 2020
46 Время чтения статьи ~6 минут Читать дальше
Совершенный код: интерфейсы модулей главное изображение
Код

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

Аватар пользователя Kirill Mokevnin
Kirill Mokevnin
16 марта 2020
91 Время чтения статьи ~2 минуты Читать дальше
Совершенный код: явные и неявные параметры функций главное изображение
Код

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

Аватар пользователя Kirill Mokevnin
Kirill Mokevnin
12 марта 2020
77 Время чтения статьи ~4 минуты Читать дальше
Совершенный код: поддержка кроссплатформенности главное изображение
Код

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

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

Аватар пользователя Kirill Mokevnin
Kirill Mokevnin
06 марта 2020
60 Время чтения статьи ~4 минуты Читать дальше
Совершенный код: нормализация данных главное изображение
Код

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

Аватар пользователя Kirill Mokevnin
Kirill Mokevnin
03 марта 2020
98 Время чтения статьи ~3 минуты Читать дальше
Совершенный код: дефолты в свитчах главное изображение
Код

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

Аватар пользователя Kirill Mokevnin
Kirill Mokevnin
27 февраля 2020
171 Время чтения статьи ~3 минуты Читать дальше
Совершенный код: избавляйтесь от строк главное изображение
Код

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

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

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

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

Аватар пользователя Kirill Mokevnin
Kirill Mokevnin
08 января 2020
441 Время чтения статьи ~10 минут Читать дальше
Совершенный код: нисходящее и восходящее проектирование главное изображение
Код

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

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

Аватар пользователя Kirill Mokevnin
Kirill Mokevnin
17 ноября 2019
131 Время чтения статьи ~5 минут Читать дальше
Скрипты, модули и библиотеки главное изображение
Код

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

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

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

Аватар пользователя Kirill Mokevnin
Kirill Mokevnin
14 июля 2019
216 Время чтения статьи ~13 минут Читать дальше
Совершенный код: отделяем получение данных от их использования главное изображение
Код

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

Аватар пользователя Kirill Mokevnin
Kirill Mokevnin
22 мая 2019
176 Время чтения статьи ~2 минуты Читать дальше
Архитектура и ООП главное изображение
Код

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

Аватар пользователя Kirill Mokevnin
Kirill Mokevnin
01 мая 2019
240 Время чтения статьи ~8 минут Читать дальше
Bootstrap или свое решение главное изображение
Код

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

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

Так ли это?

Аватар пользователя Kirill Mokevnin
Kirill Mokevnin
16 апреля 2019
49 Время чтения статьи ~5 минут Читать дальше
Совершенный код: ошибки именования в программировании I главное изображение
Код

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

Аватар пользователя Kirill Mokevnin
Kirill Mokevnin
02 января 2019
299 Время чтения статьи ~5 минут Читать дальше