-
Notifications
You must be signed in to change notification settings - Fork 24
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
Showing
6 changed files
with
177 additions
and
0 deletions.
There are no files selected for viewing
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,18 @@ | ||
default: | ||
algorithms: | | ||
- Массив - и его отличие от списков | ||
- Связный список - и его реализации на js | ||
- Двусвязный список - и где его применяют | ||
- Hash-map - почему эффективен | ||
- Дерево, бинарное дерево, AST - красно-черные не нужны, мы про другое | ||
servers: | | ||
- NodeJS - основная среда исполнения кода | ||
- S3/S3 API - хранилище контента | ||
- PostgreSQL - хранилище пользовательских данных | ||
- OpenSearch/ElasticSearch - индекс по документациям | ||
- Redis - кеширование серверных ответов | ||
- Kubernetes/Kubernetes like - управление контейнерами | ||
- Terraform + Helm - автоматическое разворачивание инсталяции, автоматический деплой | ||
- ALB/API Gateway/Nginx - балансеры | ||
- Serverless - внутренние задачи инсталяции |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,153 @@ | ||
# Веб-разработчик в Платформу документации | ||
|
||
<style> | ||
.photo { | ||
padding: 4px 8px; | ||
border: solid 1px #555; | ||
border-radius: 20px; | ||
} | ||
.photo i { | ||
border: none; | ||
} | ||
.photo svg { | ||
width: 20px; | ||
} | ||
</style> | ||
|
||
## Специфика нашей работы | ||
|
||
Мы занимаемся разработкой программной платформы документации в парадигме [documentation as a code](https://yandex.ru/search/?text=documentation+as+a+code&clid=1955453&win=547&lr=2). | ||
|
||
Платформа помогает разработчикам и техническим писателям получать качественную документацию, прилагая минимум усилий. | ||
|
||
На нешей платформе создана вся документация [Облака](https://cloud.yandex.ru/ru/docs), [Diplodoc](https://diplodoc.com/docs/ru/), страница, которую вы сейчас читаете, и много других продуктов, которые вы пока не сможете увидеть. | ||
|
||
Концепция documentation as a code предполагает, что написание документов следует **[принципам написания кода](*documentation-as-a-code-rules)**, целью которых является создание четкой структуры для легкого понимания и чтения. | ||
|
||
### Минимум верстки | ||
|
||
В плане интерфейса документация - простой сервис. | ||
|
||
Основные интерфейсные компоненты мы берем из open source библиотеки [@gravity-ui/uikit](https://gravity-ui.com/libraries/uikit). | ||
|
||
Для сложного пользовательского контента мы предоставляем интеграцию с [@gravity-ui/page-constructor](https://gravity-ui.com/libraries/page-constructor). | ||
|
||
### Максимум логики | ||
|
||
Большая часть нашей работы связана с процессингом текстов, расширением синтаксических [конструкций маркдауна](https://github.com/diplodoc-platform/transform/blob/master/src/transform/plugins/table/index.ts), созданием новых [расширений](https://github.com/diplodoc-platform/mermaid-extension) для платформы. | ||
|
||
Важно не теряться в инкрементах циклов, не создавать излишней вложенности. умело выбирать **[структуры данных](*data-structures)**. | ||
|
||
### Сервера{#servers} | ||
|
||
Платформа работает не только как набор утилит для сборки документации, | ||
но и в виде нескольких серверных инсталяций, которые помогают динамически рендерить документацию, индексировать ее. | ||
|
||
Основные технологии с которыми мы работаем на серверах: | ||
{{servers}} | ||
|
||
Со всеми перечисленными технологиями мы работаем лично. Следим за стабильностью серверов. Прорабатываем архитектуру. Выстраиваем процессы для обеспечения стабильности. | ||
|
||
{% note info %} | ||
|
||
Суммарно на наши сервера заходит больше одного миллиона уникальных пользователей в день. | ||
|
||
{% endnote %} | ||
|
||
{% note warning %} | ||
|
||
Наша задача быстро и без ошибок, в любую погоду, показывать документацию пользователям. | ||
|
||
{% endnote %} | ||
|
||
### OpenSource | ||
|
||
Большая часть нашей платформы [размещена в open source](https://github.com/diplodoc-platform/diplodoc). | ||
|
||
Поддержка open source является важной частью нашей ежедневной работы: | ||
|
||
- Общение в issues и pull requests в GitHub на русском и преимущественно английском языке. | ||
- Презентация/продвижение продукта на разных **![i](./_images/camera.svg) [конференциях](*conference)**{.photo} и **![i](./_images/camera.svg) [митапах](*meetup)**{.photo}. | ||
- Разработка продукта не под конкретную компанию, а под совокупный опыт/ожидания сообщества. | ||
|
||
## Ожидания от кандидата | ||
|
||
Мы ожидаем что вы уже знаете или вам было бы **интересно** быcтро изучить: | ||
|
||
{% cut "Алгоритмы и структуры данных" %} | ||
|
||
Ничего экзотического не требуется. Но в базовых нужно разбираться хорошо. Умело их применять. | ||
|
||
{{algorithms}} | ||
|
||
Отдельным плюсом будет, если вы сталкивались с алгоритмами токенизации текстов, разбираетесь в алгоритмах поиска по текстам. | ||
|
||
Потому что мы разбираем тексты на кусочки, а потом собираем из них что-нибудь новое и прекрасное. | ||
|
||
{% endcut %} | ||
|
||
{% cut "Серверные архитектуры" %} | ||
|
||
{{servers}} | ||
|
||
Потому что [мы много работаем с серверами](#servers) | ||
|
||
{% endcut %} | ||
|
||
{% cut "Форматы" %} | ||
|
||
**CommonMark** спецификаци маркдауна. | ||
|
||
**GitHub Flavored Markdown** спецификаци маркдауна. | ||
|
||
**JSONSchema** - работаем со схемами чаще среднестатистического разработчика | ||
|
||
{% endcut %} | ||
|
||
{% cut "Open Source технологии" %} | ||
|
||
**Git** - чуть глубже чем просто создание коммитов. Мы используем его на программном уровне. | ||
|
||
**GitHub** - так же глубоко интегрирован в наш продукт. Пишем gh-actions, gh-extensions дл внешних потребителей платформы документации. | ||
|
||
**Webpack** - на уровне написани собственных плагинов. | ||
|
||
{% endcut %} | ||
|
||
{% cut "Литература" %} | ||
|
||
Мы будем лучше друг друга понимать, если вы уже читали: | ||
|
||
**Чистый код** Роберта Мартина | ||
|
||
**Чистая архитектура** Роберта Мартина | ||
|
||
**Site Reliability Engineering** Бетси Бейер и др. | ||
|
||
{% endcut %} | ||
|
||
Так же мы ожидаем хороший скилл коммуникации. У нас много внешних и внутренних заказчиков. | ||
Много демократичных процессов в рамках развития общей опенсорс технологии. | ||
Нужно много слушать, анализировать, договариваться. | ||
|
||
|
||
[*documentation-as-a-code-rules]: | ||
- **DRY (Don’t Repeat Yourself)**: важно избегать дублирования информации в документах. | ||
- **KISS (Keep It Simple, Stupid)**: необходимо избегать ненужной сложности и стремиться к простоте изложения информации. | ||
- **SRP (Single Responsibility Principle)**: каждый блок документации должен быть ответственным только за одну часть функциональности для сохранения четкости. структуры. | ||
- **SLAP (Single Level of Abstraction Principle)**: необходимо разбивать большие документы на уровни абстракции и делать для каждого уровня отдельные лаконичные документы. | ||
- **LoD (Law of Demeter)**: необходимо делать ссылки только на релевантные документы. | ||
- Система ориентирована на пользователя, в ней ценятся не только читаемость, но и визуальная составляющая. Поэтому использование визуальных средств, таких как диаграммы, графики и видеоруководства, также становятся все более важными. | ||
- **Проверка качества**: система предполагает единый стиль кодирования, включая структуру текста, отступы, пробелы и т.д. для облегчения понимания. | ||
- **Версионирование**: система интегрирована с популярными vcs. | ||
- **Локализация**: система доступна пользователям на нескольких языках. Это обеспечивается интеграцией с [автоматическими](https://cloud.yandex.ru/ru/docs/translate/?from=int-console-empty-state) и [полу-автоматическими](https://ru.smartcat.com/) сервисами перевода. | ||
- **Доступность**: система доступна плохо видящим пользователям. | ||
|
||
[*data-structures]: | ||
{{algorithms}} | ||
|
||
[*meetup]: | ||
![i](./_images/subbotnik.jpg) | ||
|
||
[*conference]: | ||
![i](./_images/highload.png) |