• Диванный вице-президент: как я работаю директором по продуктам на полной удалёнке

    Привет. Меня зовут Максим Винников, я Vice President of Product Management в компании Aurea Software. В той же самой компании, на которую работает Слава Кулаков, знакомый многим по истории, как он стал фрилансером, получающим $200 000 в год. Вопросы и комментарии к тому посту продолжают идти до сих пор, поэтому сегодня, уже на своём примере, я расскажу, что из себя в повседневном режиме представляет уже непосредственно работа, за которую платят такие гонорары — и постараюсь ответить на вопросы по теме живьём.

    [update] В прямом эфире ответил на вопросы, появившиеся в комментариях за день:



    Согласно стандартам Aurea и ESW Capital каждый сотрудник должен отработать 40 часов в календарную неделю. Я, исходя из своей позиции и физических возможностей, придерживаюсь графика 5/2. Моё основное рабочее окно расположилось в промежутке с 14:00 до 19:00, это суммарно 5 часов в день. Ещё 3 часа в день дорабатываются тогда, когда мне удобнее: в один день я могу поработать поздним вечером, в другой — приступаю с самого утра, чтобы освободиться пораньше.

    Так как команда на 100% децентрализована и у нас нет офисов, то всё взаимодействие между сотрудниками переходит в онлайн. Я, как VP (а это менеджерская позиция), вовлечён в различные рабочие процессы множества людей сильнее, чем среднестатистический разработчик. Это тоже стоит учитывать.
    Читать дальше →
  • Code Conventions: как мы сохраняем быстрый темп разработки PHP-проекта

      Привет, Хабр. Меня зовут Евгений Удодов, я сооснователь и технический директор компании Roistat. Хочу поделиться нашим опытом разработки большого и сложного продукта — системы аналитики.

      TL;DR: Мы выложили на github наш Code Conventions и рассказали в статье о том, как его применять на практике.

      При разработке больших продуктов существует распространенная проблема — с течением времени накапливается много legacy-кода, задачи делаются все медленнее и медленнее. Также при росте команды разработчики начинают писать код по-разному и отсутствие единых правил может приводить к конфликтам и спорам.

      За 4 года существования нашего проекта мы сделали больше 20 000 Pull Request’ов (далее PR) и под катом я расскажу, как же мы решили эти проблемы.


      Читать дальше →
    • Исчерпывающие бенчмарки PHP 5.6, 7.0, 7.1, 7.2 и HHVM (2018)

      • Перевод


      Каждый год мы стараемся тщательно измерять производительность разных версий PHP и HHVM на различных платформах. В этом году мы измерили четыре версии PHP и HHVM на 20 платформах/конфигурациях, включая WordPress, Drupal, Joomla!, Laravel, Symfony и многие другие. Также мы протестировали популярные решения для электронной коммерции вроде WooCommerce, Easy Digital Downloads, Magento and PrestaShop.


      Мы всегда рекомендовали пользователям WordPress не пренебрегать преимуществами свежайших поддерживаемых версий PHP. Не только ради безопасности, но и ради повышения производительности. Причём речь идёт не только о WordPress, это по большей части справедливо для всех платформ. И сегодня мы продемонстрируем, как PHP 7.2 одерживает сокрушительную победу!

      Читать дальше →
    • Портрет слушателей вечерних курсов

        Добрый день.

        С весны 2014 года я совмещаю разработку в области BI и преподавание основ программирования на вечерних курсах профессиональной (пере)подготовки. За четыре года у меня сложилась определенная классификация слушателей. Далее я в общих чертах расскажу какие люди встречаются, какие проблемы у них возникают, как их можно решить. Ну и в качестве бонуса: как на собеседовании распознать в слушателях вечерних курсов потенциальный талант.

        Допускаю, что такая классификация актуальна только в моем контексте, поэтому немного расскажу об организации. Курсы проводятся очно. Занятия начинаются примерно в 18:00 по местному времени. Чаще всего раз в неделю. Время, отведенное на обучение, варьируется от 7 до 30 занятий и зависит от платежеспособности и желания студента. Стоимость одного занятия студенту обходится примерно в 900 рублей. У нас нет даже формального отсеивания студентов. Кто хочет учиться, с тем и работаем.

        Если вам это интересно, добро пожаловать под кат.
        Читать дальше →
      • Ваш пакет Composer сломан: обновите идентификатор лицензии

          image


          Если вы, как и я:


          • являетесь мэйнтейнером какой-либо библиотеки или фреймворка;
          • ваша библиотека или фреймворк выпущены под какой-либо свободной лицензией
          • ваша библиотека или фреймворк доступны к установке через Composer и размещены на сервисе Packagist;

          то у вас, возможно, есть проблемы, о которых вы и не подозреваете.

          Загляните под кат, чтобы узнать, что нужно сделать уже сегодня!
          • +26
          • 5,8k
          • 8
        • Алгоритм выбора location в Nginx

            Алгоритм выбора location обязателен к знанию при настройке nginx. Тем не менее, на официальном сайте nginx (на 2018 год) не сказано ни слова про алгоритм выбора в случаях, когда какие-то location'ы вложены друг в друга, а в статьях в интернете приводятся в корне неверные алгоритмы. В статье также будет дан пример уязвимого конфига.
            Читать дальше →
          • SQL ключи во всех подробностях

            • Перевод
            В Интернете полно догматических заповедей о том, как нужно выбирать и использовать ключи в реляционных базах данных. Иногда споры даже переходят в холивары: использовать естественные или искусственные ключи? Автоинкрементные целые или UUID?

            Прочитав шестьдесят четыре статьи, пролистав разделы пяти книг и задав кучу вопросов в IRC и StackOverflow, я (автор оригинальной статьи Joe «begriffs» Nelson), как мне кажется, собрал куски паззла воедино и теперь смогу примирить противников. Многие споры относительно ключей возникают, на самом деле, из-за неправильного понимания чужой точки зрения.

            Содержание



            Давайте разделим проблему на части, а в конце соберём её снова. Для начала зададим вопрос – что же такое «ключ»?
            Читать дальше →
          • Достоинства и фатальные недостатки типизации в php

              Язык php часто ругают, обычно необоснованно. Особенно удивляет, что javascript ругают меньше. Зачастую это делают люди, которые писали на нем 10+ лет назад, когда язык был действительно чертовски плох, да и разработчики в те времена не задумывались над качеством кода. Посмотрите хотя бы на код wordpress, который до сих пор вызывает шок.


              Ругают необоснованно, но проблемы у языка, конечно же, есть, и они серьёзные. Разуметеся, если сравнить последние релизы php7 (с нормальным ООП и строгим тайпхинтингом) и php4, то разница будет колоссальная. Однако и в последних версиях языка не всё гладко, и до java/c# пока что очень далеко. Более того, берусь утверждать, что будущее php тоже довольно сомнительно (с точки зрения типов).


              Другими словами, давайте рассмотрим предметно, что хорошо и что плохо в php с точки зрения типизации.

              Читать дальше →
            • 21 совет по эффективному использованию Composer

              • Перевод
              • Tutorial

              Хотя большинство PHP-разработчиков умеют пользоваться Composer, не все делают это эффективно или лучшим возможным образом. Поэтому я решил собрать советы, которые важны для моей повседневной работы. Большинство из них опираются на принцип «От греха подальше»: если что-то можно сделать несколькими способами, то я выбираю наименее рискованный.
              Читать дальше →
              • +34
              • 14,5k
              • 7
            • Бэкенд игрового сервера World in Conflict выложен в открытый доступ

                image

                Исключительно хорошая новость: совместными усилиями компаний Ubisoft и шведской Massive Entertainment, в открытый доступ выложен рабочий сервер для игры World in Conflict. Данная стратегия в реальном времени (RTS) вышла в 2007 году; её официальный сервер Massgate был закрыт в 2016, после чего коммьюнити massgate.org решило вернуть игру к жизни, чем и вдохновило Ubisoft на данный шаг — теперь любой сможет поднять свой собственный сервер для мультиплеера и другого онлайн-функционала.

                Исходный код бэкенда доступен по ссылке на Github по лицензии GPL-2.0. Сам игровой сервер написан на С++, поэтому для компиляции вам потребуются CMake и Visual Studio. Для запуска вам также понадобятся MySQL (в оригинале использовался MySQL 4.2.1, но всё должно работать и на более свежих версиях) и любой простейший веб-сервер (авторы рекомендуют SimpleHTTPServer).

                Кстати, саму игру можно сейчас получить абсолютно бесплатно до 23 декабря по ссылке — правда, для этого вам может потребоваться завести аккаунт в Uplay.
                Читать дальше →