Саша показывает класс тем, кто хорошо заполняет readmy
27.02.2024 #How

Как писать README.md?

Устал объяснять джунам, что такое README?
Или может твои разрабы до сих пор пушат проекты с описанием “My awesome project”?
Сегодня разберемся, как писать README так, чтобы через год ты сам не хотел убить себя за криворукость, а новые разработчики не проклинали тебя и твою контору.

Почему это вообще важно?

README файл – это лицо твоего проекта. Это первое, что увидит:

  • Твой будущий коллега (который может стать твоим боссом)
  • Рекрутер, который решает, стоит ли тебе звонить
  • Клиент, который выбирает между тобой и конкурентом
  • Ты сам через полгода, когда забудешь, что и как ты понаписал
Разработчик через год
Когда вернулся к проекту через неделю

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

Он открывает README, а там:

# My Project
This is my project.

## Installation
npm install

И всё. Через час этот разраб приходит к тебе с вопросами: А что это за проект? Как его запустить? Какая версия Node.js нужна? А где база данных? А почему ничего не поднимается?

А мог бы сразу всё понять и начать работать. Время – деньги, особенно когда у тебя почасовая оплата или дедлайн горит.

Что должно быть в нормальном README?

Твой README должен отвечать на священную троицу вопросов:

1. ЧТО это за проект?

Не My awesome app, а конкретно: CRM-система для управления клиентами автосалона с интеграцией 1С и WhatsApp API

2. ЗАЧЕМ он нужен?

Какую проблему решает? Например: Позволяет менеджерам отслеживать клиентов без использования Excel-таблиц и не терять лиды

3. КАК с ним работать?

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

Структура README для взрослых людей

1. Заголовок и описание – продай эту ручку свой проект за 30 секунд

Description / Introduction / About / Описание / Введение - ожидаемое название

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

Плохо:

Проект диаграмм UML на PHP + React, есть экспорт в картинку

Хорошо:

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

2. Технологический стек – покажи, что ты не лох

Stack / Dependencies / Технологии / Зависимости – ожидаемое название
Технологии или зависимости проекта, включающий языки программирования, библиотеки и фреймворки, используемые в твоём проекте (например: Python, React, …). Если у тебя есть веб-приложение, использующее внешний общедоступный API, обязательно укажи это.

Плохо:

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

Хорошо:

## Технологический стек

**Backend:**
- **Node.js 18+** - основная платформа
- **Express.js** - веб-фреймворк
- **PostgreSQL 14+** - основная база данных
- **Redis** - кеширование и сессии
- **JWT** - аутентификация

**Frontend:**
- **React 18** - пользовательский интерфейс
- **TypeScript** - типизация для снижения багов
- **Tailwind CSS** - стилизация
- **React Query** - управление состоянием сервера

**DevOps:**
- **Docker** - контейнеризация
- **GitHub Actions** - CI/CD
- **Nginx** - прокси-сервер

3. Скриншоты и демо – покажи, что это не консольная аппа

Design / UI - ожидаемое название

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

Если у тебя есть UI – покажи его

Если консольное приложение, тем более сделай GIF с демонстрацией. Это лучший способ передать представление о том, как взаимодействовать с приложением и что увидит пользователь при запуске проект.

Если интересно что это -> https://github.com/TheZoraiz/ascii-image-converter

Пример:

## 📱 Интерфейс

### Главная страница
![Главная страница](./docs/screenshots/dashboard.png)

### Управление задачами
![Управление задачами](./docs/screenshots/tasks.gif)

### Отчёты
![Отчёты](./docs/screenshots/reports.png)

4. Функциональность – что умеет твоё детище

Features / Функции / Методы - обычно так называют

Если твой проект имеет методы работы с ним, лучше добавить этот раздел и перечислить их

5. Быстрый старт – святая святых

Quick Start / Running / Installation / Установка / Запуск - обязательно так

Это самая важная часть.

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

Если человек не может запустить проект за 5 минут – твой проект не нужен.

– Jekyll Now Quick Start
– Simplenote for Electron Running
– TelegramBotPHP Installation

Лучшие примеры, что я нашёл

6. Лицензия / Контакты / Диаграммы / Схемы

## Лицензия

MIT License - см. [LICENSE](LICENSE) файл для деталей.

## Автор

**Валентин Панченко**
- GitHub: [@lyucean](https://github.com/lyucean)
- Email: v.panchenko@company.com
- Telegram: [@lyucean](https://t.me/lyucean)
- LinkedIn: [Валентин Панченко](https://linkedin.com/in/lyucean)

## 🙏 Благодарности

- [Awesome README](https://github.com/matiassingers/awesome-readme) за вдохновение
- Команде разработки за фидбек и тестирование респект и уважение
- Всем контрибьюторам проекта - пасиба 🙏🏻❤️
Говорят, те, кто из делает – попадают в рай без очереди

Что НЕ надо делать в README

❌ Писать роман

Плохо:

Этот проект был создан мной в далёком 2019 году, когда я только начинал изучать программирование. Тогда я не знал многих вещей, которые знаю сейчас, но проект всё равно получился интересным. Я использовал множество технологий, которые на тот момент казались мне сложными…

Даже твоей мамке это не интересно

Хорошо:

CRM-система для автосалонов. Управление клиентами, интеграция с 1С, автоматизация продаж.

❌ Забывать про обновления

Если ты изменил API или добавил новые зависимости – обнови README.
Нет ничего хуже, чем инструкция, которая не работает.

❌ Игнорировать мобильную версию

Многие читают README с телефона. Проверь, как твой README выглядит на мобильном устройстве.

❌ Использовать абсолютные пути для картинок

Плохо:

![Screenshot](C:\Users\Вася\Desktop\screenshot.png)

Хорошо:

![Screenshot](./docs/images/screenshot.png)

Как оформить файл readme?

Расширение .md обозначает Markdown – лёгкий язык разметки с простым синтаксисом для форматирования текста.

Он простой как угол дома, тебе стоит его освоить

# Заголовок 1 - когда хочешь покричать
## Заголовок 2 - для важной хуйни  
### Заголовок 3 - мелкие детали, но тоже нужные

Курсив делается *звёздочками* или _подчёркиваниями_. Используй когда хочешь *намекнуть* на что-то.

Жирный текст с **двойными звёздочками** или __двойными подчёркиваниями__. 
Для **ОЧЕНЬ ВАЖНЫХ** вещей.

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

~~Зачёркнутый текст~~ - для того, что уже не актуально или когда передумал.

1. Первый пункт нумерованного списка (для пошаговых инструкций)
2. Ещё один пункт
   * Маркированный подсписок - для хаотичных мыслей
1. Цифры неважно какие, главное что цифра
   1. Нумерованный подсписок
4. И ещё один пункт

- [x] Задача выполнена - галочка для завершённых дел
- [ ] Задача в процессе - когда ещё не доделал

[Обычная ссылка](https://www.google.com) - просто кликабельная

[Ссылка с тайтлом при наведении](https://www.google.com "Главная Google") - с подсказкой для умных

![Картинка с описанием](https://github.com/adam-p/markdown-here/raw/master/src/common/images/icon48.png "Тайтл картинки")

> Цитата - когда хочешь процитировать какого-то умника
> или выделить важную мысль, не свою

`Инлайн код` - для команд и переменных прямо в тексте

```javascript
// Блок кода - когда нужно показать 
// как правильно писать, а не как обычно пишут
console.log("Hello, Саня!");

И финальное, в чём сила брат?

Твой код могут не читать, но README читают всегда.
Сделай его таким, чтобы через год ты сам себе сказал Какой я молодец!

P.S. Если после прочтения этой статьи ты всё ещё пишешь README из трёх строчек – возможно, тебе стоит пересмотреть карьерные планы. Может, в продавцы шаурмы? Там документация не нужна 😄