Хотите расти как разработчик и найти крутую работу? Не протирайте штаны — займитесь Open Source проектами. Так легче всего попасть в лучшие команды разработчиков и положить себе в резюме настоящий проект, вместо нелепых «примеров кода». Но найти подходящий проект для участия сложно. Начинаются лень и отговорки, а за ними — отсутствие профессионального роста, критики по-настоящему крутых программистов, уныние и застой.
На Cult of Martians мы собираем интересные задачи для современных веб-программистов. Можно выбрать подходящую по сложности, продолжительности и специализации. Задачи не выдуманы «из воздуха» — каждая решает насущную проблему, и решить ее можно через создание нового Open Source проекта или улучшение существующего. Решайте задачи, прокачивайтесь, присылайте решение на оценку. Лучших могут пригласить к себе на работу компании, программистам которых понравится ваше решен ие.
Для новичков, задача на неделю
Сейчас Nano Stores I18n загружает все переводы для выбранного языка сразу. Разработчик должен передать функцию вида:
get (locale) {
return fetch(`/translations/${locale}.json`)
}
Но было бы круто иметь тут опциональный аналог tree-shaking, чтобы грузить переводы блоками — только те блоки, который нужны для используемых на странице компонентов.
Например, разработчик может ввести правило давать имена компонентам (которые используются в функции перевода) вида main/post
или settings/user
. Переводы он тоже будет хранить блоками, объединяя компоненты с одинаковым префиксом: translations/ru/main.json
или translations/settings/ru.json
.
В get
I18n будет передавать имена всех компонентов, для которых не хватает перевода. Тогда разработчик может передать такую функцию:
get (locale, components) {
return Promise.all(
components
.map(name => name.split('/')[0])
.unique()
.map(chunk => fetch(`/translations/${locale}/${chunk}.json`))
)
}
Польза: получить open source портфолио на JS.