Есть работа для программиста на JavaScript
Команде коктейльного сайта нужен опытный программист готовый развивать существующие разделы и создавать новые.
- Чтобы гармонично влиться в команду, кандидат должен сочетать в себе несколько технических навыков:
-
- отличное знание этого вашего яваскрипта;
- умение сверстать всё что угодно;
- владение системами управления исходниками;
- умение обустроить рабочее место веб-программиста в своей операционной системе.
Напишите письмо Петру Леонову с рассказом о себе и примером кода, который вы пишете каждый день.
Если у вас есть вопросы, почитайте часто даваемые ответы.
Раздел «Коктейльные рейтинги» можно начинать делать прямо сейчас.
-
Какой у вас JS-фреймворк?
-
Его у нас нет.
Взамен фреймворка у нас есть библиотека с самым необходимым:
add/removeClassName(),$(),add/removeEventListener()в IE 6-8 и т.д. Основная масса JavaScript-кода — это сам Иншейкер.
-
А какой у вас этот JavaScript?
-
Низкоуровневый.
Мы приветствуем ручную генерацию элементов
createElement(). Используем ручное создание классов простымfunction Class {}и прототиповClass.prototype = {…}. Непосредственно подписываемся на события черезaddEventListener(). Пишем полностью кросс-браузерный код без проверок типа браузера: все недостающие возможности эмулируем. А также храним все стили в CSS, присваивая из яваскрипта только классы (прячем элемент так:element.addClassName('hidden')). Вовсю используем оптимизации для скриптовых языков: кэшируем значения в локальных переменных, раскрываем циклы, индексируем всё подряд. И да, как вы могли заметить, не обфусцируем код.
-
Как быть с вёрсткой?
-
Мы верстаем сами.
То есть каждый программист умеет верстать не хуже заправского верстальщика. Это значит, что у нас нет позиции верстальщика (так же как и серверного программиста).
Верстаем семантично (со всякими
dl,ul,formи т. д.), но невалидно.
-
А как же IE 6?
-
Goodnight, sweet prince.
-
А какие точно соотношения между браузерами на Иншейкере?
-
Вполне себе оптимистичные.
-
Какие SCM вы используете?
-
У нас всюду Git.
-
Что делать, если я Git впервые вижу?
-
Если вы раньше работали только с SVN, используйте недавно появившийся трюк с трансляцией гита в SVN. Так как вы будете работать со своим форком Иншейкера, то можете смело коммитить из SVN-клиента: если что-то сломается, мы всегда всё восстановим.
Если вы уже имеете опыт работы с меркуриал и не хотите осваивать гит, то вам поможет плагин
hg-git. Он научит меркуриал разговаривать с гитовым сервером, а этого вполне достаточно, чтобы начать работу.
-
Как получить исходники Иншейкера?
-
Надо зарегистрироваться на гитхабе (если еще не) и получить приглашение в приватный репозиторий. Затем форкнуть Иншейкер и работать уже со своим форком.
-
Как выгладит рабочее место?
-
Основа основ — это nginx. Кроме него вам понадобится только текстовый редактор и система контроля версий.
Разработка привычно ведется на юниксе. Но всё можно настроить и на виндоусе.
-
А как я смогу показать, что у меня получается?
-
Лучший способ, это заполучить статический IP-адрес и пробросить 80 порт в вашем роутере на рабочий компьютер. Потом мы создадим специальное доменное имя
ВЫ.dev.inshaker.ru, по которому ваша версия Иншейкера будет видна всем остальным. А еще со статическим айпишником торренты качаются гораздо быстрее! ;)Если нет возможности получить статический IP, то можно воспользоваться SSH-туннелем. Нативно в юниксе, и через putty в виндоусе.
Также можно обустроить маленький демонстрационный сервер, и автоматически заливать на него вашу версию сайта.
-
Как, вкратце, происходит процесс добавления нового кода?
-
Вы создаете новый бранч, и в нем спокойно программируете и коммитите. Когда всё готово, вы мержитесь с мастером и шлете pull request. Затем, мы все вместе мержим ваш мастер с центральным, тестим и заливаем на сайт.
-
А какие у вас бывают задачи?
-
Архитектурные задачи (неизвестно). Портирование сайта на новую версию библиотеки. Верстка коктейльного раздела с нуля для упрощения стилизации под бренд. Внедрение Ъ-MVC в старые разделы сайта.
Большие задачи (месяцы). Добавление нового раздела, такого как «Сочетайзер», «Вечеринки» или «Бары».
Задачи поменьше (недели). Добавление нового вспомогательного (без введения новых сущностей) раздела, такого как «Академия» или «Блог».
Маленькие задачки (дни). Создание механизма брендирования баров по аналогии с коктейлями. Подсветка баров, открывшихся за последние 3 месяца. Добавление сереньких подсказок в форму подписки на событие. Сокрытие уже выбранных ингредиентов в автокомплитере в поиске по ингредиенту. Подгонка номеров страничек на странице всех коктейлей, чтобы смотрелись читабельно. Добавление ссылки «где купить» в попап ингредиента. Написание этого ответника.
Крошечные задачки (часы). Убрать ссылку на твиттер Иншейкера с главной страницы. Сверстать этот раздел. Сверстать брендинг на следующий месяц (это действительно очень просто). Топорно скруглить уголки у листалки фоток бара. Добавить микроформат рецепта на странице коктейля. Показывать коктейли в случайном порядке во вкладке «По названию», когда инпут с именем пустой.
-
Что программируете и как?
-
У нас всё что можно сделано как MVC. Мы начали использовать этот паттерн задолго до того, как поняли, как его правильно готовить. Поэтому, на Иншейкере можно встретить множество различных способов «сделать MVC».
Любая страничка на Иншейкере — это виджет, который занимает всю эту страничку и — в некоторых случаях — контролирует
location.hash. Внутри этого главного виджета могут быть другие виджеты, и так далее. Большие виджеты с явным разделением данных и представления мы делаем как MVC. Остальные — как попало.Виджет — это такой класс, экземпляр которого прилепляется к каким-то нодам и, обычно, создает в этих нодах еще ноды, события, анимации, другие виджеты и так далее.
Селекторы мы используем очень умеренно. Обычно только один раз на старте странички. Каждый виджет принимает свои коренные ноды от родителя, а не ищет их сам через селекторы. К этому трудно привыкнуть, если вы сторонник jQuery.
-
Какая у вас CMS?
-
У нас ее нет.
То есть весь Иншейкер живет в обычных HTML-файликах с примесью SSI.
Эти файлики генерит простенький скрипт на руби на основе еще более простых текстовых файликов. Таким образом вся логика сайта заключена в яваскрипте.
Да, Иншейкер по-настоящему написан на яваскрипте ;)
-
Можно ли работать с вами, если я далеко?
-
Да.
Чтобы хорошо программировать, вам совсем не обязательно сидеть в офисе.
-
Можно ли работать с вами время от времени?
-
Да. Но есть несколько оговорок.
- Вы должны быть мастером по управлению своим временем.
- У нас почти не бывает задач решаемых за несколько дней без длительной подготовки. Обычно, такие задачи занимают от двух недель и более с полным погружением.
- Иншейкер несет в себе массу абстракций, приемов, трюков и хаков: будьте готовы к тому, что всё это придется держать в голове, работая над другими проектами.
- Вкусные задачки, скорее всего, расхватают постоянные сотрудники ;)
- Да и вообще, брать небольшие задачки время от времени будет невыгодно из-за накладных расходов на переключение контекста.
-
А теперь сложный вопрос: сколько у вас платят?
-
Простой ответ. Вы сами называете цену своей работы.
Сложный ответ. Процесс разработки Иншейкера делится на относительно изолированные задачи. Каждая задача подробно обсуждается и оценивается вами два раза: когда вы за задачу беретесь и когда задача выполнена. Хорошо, когда две эти оценки отличаются чуть менее, чем на половину ;)
Обычно, задача оценивается исходя из времени на ее решение и стоимости этого времени по вашему мнению. Так как задачи бывают очень хитрые, требующие глубокого погружения («ночные»), а бывают поверхностные и, скорее, моторные (в перерывах можно и в контру погонять), свое время можно оценивать по-разному. То есть у вас может не быть фиксированной стоимости часа вашего времени.
Если вы хотите работать с нами иногда, то будьте готовы потратить на Иншейкер столько времени, чтобы заработать 25 000 рублей в месяц и более. Меньше уже не интересно ни вам, ни нам.
Фиксированный оклад тоже возможен, но только после того, как мы сработаемся и хорошо узнаем друг друга. На знакомство может уйти как пара месяцев, так и вся жизнь…
-
Со скольки и до скольки вы работаете?
-
У нас нет жестких рамок на рабочие часы. Вы работаете тогда, когда вам удобно (например, ночью). Офис открыт примерно с двенадцати дня до двенадцати ночи.
Изредка, когда надо объединить вашу ветку и центральную, мы все должны бодрствовать. Но это касается только мержей больших веток: если ветки мержатся без конфликтов, то нам достаточно переписки по почте.
-
Ах, да! Как же мы будем общаться?
-
Ничего удобнее почты еще не придумали.
Можно поболтать в аське, в скайпе (пока он еще работает), встретиться в кафе и, даже, сидеть в соседних комнатах офиса. Но, всё равно, вопросы, требующие продолжительного мыслительного процесса мы обсуждаем по почте.