Ищу frontend-разработчика в команду
От Вас:
- Уверенное владение JavaScript (ECMAScript 6 или выше)
- Уверенное владение Vue, Vuex, Vue-router
- Владение версткой (html5, css3), пре- и постпроцессорами (scss, postcss)
- Material design
- webpack, eslint
Будет плюсом:
- Умение решать нестандартные задачи, на которые нет готовых библиотек
- Знание AngularJS и опыт перехода на Vue
- Владение платформами Node.js, Electron.js
- Знание английского языка хотя бы на уровне «прочесть техническую статью со словарем»
Мы предлагаем:
- Для джунов - обучение/менторство от меня лично
- Для мидлов и выше - возможность удаленной работы + возможность релокации в СПб после испытательного срока
- Комфортный офис в центре Санкт-Петербурга
- Достойную з/п соответствующую навыкам и знаниям, с постоянным ростом по мере вклада в проект
- Безлимит на чай/кофе/фрукты в офисе, оплачиваем спорт и занятия английским
Пишите в скайп или телеграм
Контакты

Достижения

Все достижения (29)

Наибольший вклад в теги

Все теги (59)

Лучшие ответы пользователя

Все ответы (898)
  • Как часто используются дескрипторы, декораторы и bind, call, apply?

    bingo347
    @bingo347
    Ищу разработчика на Vue (смотрите личку)
    Обо всем по порядку

    Дескрипторы - так понимаю речь идет о дескрипторах свойств объекта. Вещь крайне полезная, позволяющая задать поведение свойству, сделав его не перечисляемым или, например, только для чтения, а так же можно задать функции getter/setter, которые будут вызываться при чтении/записи свойства. Используется довольно часто.

    Декораторы функций. Позволяют избежать дублирования кода. Допустим, подключаете Вы некую библиотеку, в которой есть некоторая функция, Вам необходимая. Пусть она делает некое действие А, но Вам регулярно нужна последовательность действий А и Б. Тогда Вы пишите над этой функцией обертку, выполняющий эту последовательность, и уже вместо библиотечной функции + действие Б используете везде свою обертку. А вот если у Вас таких оберток с действием Б довольно много, то уже нужен декоратор, который позволит создавать такие обертки для любой функции. Используется как правило в крупных проектах, так как снижает вероятность ошибок.

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

    call и apply позволяют вызвать функцию с нужным контекстом, разница в том что apply принимает 2 аргумента - контекст и массиво-подобный объект содержащий аргументы, а call принимает произвольное число аргументов: 1й - контекст, последующие передаются как аргументы функции. Используется постоянно.

    Карринг. Хоть и используется не так часто, но бывает весьма полезным инструментом. По сути цепочки промисов построены на принципах карринга, только не функций, а объектов.

    Ну и напоследок, конструкция var self = this; позволяющая сохранить контекст в замыкании уже потихоньку уходит в прошлое, благодаря стрелочным функциям из es2015
    Ответ написан
  • Как защитить свою верстку от рипа?

    bingo347
    @bingo347
    Ищу разработчика на Vue (смотрите личку)
    Не работать без предоплаты минимум 50% и не цепляться за таких вот заказчиков
    (в голове мысли "что то тут не чисто)
    абсолютно правильные мысли
    Даже если Вы защитите свою работу от "угона", велик риск что просто проработаете за бесплатно, а Ваш заказчик обломавшись с Вами пойдет искать себе другую жертву, ибо сроки у него не жмут, так как когда сроки жмут заказчики готовы к предоплате не то что 50%, а даже 120% (20% - надбавка за переработки)
    Ответ написан
  • Штатные программисты или аутсорсинг?

    bingo347
    @bingo347
    Ищу разработчика на Vue (смотрите личку)
    Штатные программисты:
    + работают в долгосрочной перспективе (после разработки будет поддержка теми же людьми)
    + сидят у Вас в офисе (коммуникации в команде проще и больше)
    - им нужно платить фиксированую зп (как правило, например в СПб Вам это обойдется от 50 (джуниор) до 150 (сеньер) тыс в месяц на человека)
    - нужно предоставить рабочее место (стол, стул, комп и т.д.)
    - редко работают больше рабочего дня (хотя если будете доплачивать за переработки, то будут)

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

    Выбирайте
    Ответ написан
  • Актуальная информация по GeekBrains?

    bingo347
    @bingo347
    Ищу разработчика на Vue (смотрите личку)
    Не так давно получал предложение по работе от них типа "ищем крутых программистов для проведения обучающих вебинаров"
    Ок, позвонил, отвечает девушка, общаемся, некоторые выдержки:
    Я: У меня высшее образование по специальности "преподавание информатики" и 2 года пед стажа, работал в колледже по специальности
    Д: Главное, чтоб Вы были действительно крутым программистом!
    Я: как Вы поймете, что я действительно крутой программист?
    Девушка: это покажет тестовое задание

    Я: Для проведения вебинара понадобится какое-либо специализированное ПО?
    Д: да, у нас есть собственное ПО, мы Вам вышлем инстолятор и инструкции в случае если Вы будете работать у нас
    Я: Я сижу под линуксом, Ваше ПО запускается на линукс нативно?
    Д: Что такое линукс?

    Ладно, девушка просто HR, не будем придираться, на крайняк запустим под вайном их крутое ПО...

    Получаю тестовое задание:
    "Запишите ролик, где Вы рассказываете о своем ЯП и покажите примеры циклов на нем для новичков"
    Сомнения увеличиваются, как это может показать мою "крутость" как программиста?
    Ну ок, записать видео с экрана не проблема, лезу в ютуб за примерами и нахожу их канал, среди роликов нахожу запись вступительного вебинара, ролик выложен весной 2014 по node.js - смотрю, парнишка рассказывает народу какая крутая нода по сравнению с php, python и ruby, отвечает на вопросы, притом пропуская некоторые, которые посчитал неуместными, но убила фраза "я программирую на ноде более 5 лет", напомню что ролик выложен весной 2014, следовательно снимался еще раньше, а нода появилась летом 2009... у парня проблемы с математикой когда он врет...
    Вообщем потратил свои 2 часа и просмотрел вебинар полностью, все сводилось к тому, что нода реально крутая и жизненно вам необходима, только купите наш мега крутой курс
    И я решил, что не смогу так парить мозги людям, ради выкачивания из них денег, и работать у них не хочу, а освоится новичкам я и на тостере помогу...
    Ответ написан
  • Простым языком о замыканиях?

    bingo347
    @bingo347
    Ищу разработчика на Vue (смотрите личку)
    1. Для чего замыкание существуют?
    Для инкапсуляции данных.
    В ООП есть модификаторы доступа (private, protected), которые закрывают доступ к данным извне класса, но позволяют обращаться к ним из методов.
    В ФП для этой задачи используют замыкания, закрывая данные внутри функции. Из вне данные недоступны, но вложенные функции имеют к ним доступ.

    2. В каких условиях они создаются?
    Когда вложенная функция обращается к переменным внешней функции.

    Хоть и просили без примеров, но на примере показать проще:
    // makeCounter - внешняя функция
    function makeCounter(initialValue) {
      var value = +initialValue || 0;
      // counter - внутренняя функция
      // она использует переменную value из внешней функции
      // что-бы это было возможным, для counter создается замыкание,
      // в котором хранится переменная value
      // переменная initialValue функции counter не нужна, поэтому ее можно "забыть"
      return function counter() {
        return value++;
      };
    }
    
    // у нас 3 экземпляра функции counter
    var counter1 = makeCounter();
    var counter2 = makeCounter();
    var counter3 = makeCounter(100);
    // и для каждой есть своя переменная value
    console.log(counter1()); // 0
    console.log(counter1()); // 1
    console.log(counter2()); // 0
    console.log(counter1()); // 2
    console.log(counter3()); // 100
    
    // а вот получить как-то напрямую переменную value мы не можем
    // инкапсуляция нам не дает поломать данные
    Ответ написан

Лучшие вопросы пользователя

Все вопросы (18)