• Психологическая деформация программистов. Взгляд с обеих сторон баррикад

      Само наличие психологической деформации у какой-либо профессии, как правило, достаточно спорный момент ввиду того, что у разных людей она проявляется по-разному. Однако общую тенденцию можно выделить и, пожалуй, настало то время когда можно достаточно смело говорить, что программисты всё же имеют свой особенный психологический портрет который обусловлен их профессиональной деятельностью.

      Я достаточно часто сталкивался с подобным мнением и не придавал ему особого значения, но когда женский коллектив нашей организации поздравил программистов с 23-м февраля по доброму назвав их «космическими войсками», решил всё же расставить определенные акценты в данном вопросе, т.к. одна из моих профессий связана напрямую с психоанализом. Да и баш уже не молчит.

      И что же них такого деформированного?
    • Практика рефакторинга в больших проектах

      Некоторое время назад я попал в геймдев, где столкнулся с проектами по 2 млн. строк кода, которые пишут десятки программистов. При таких масштабах кодобазы возникают проблемы неведомого мне ранее характера. Об одной и них я хочу вам сейчас рассказать.

      Итак, представьте себе следующую ситуацию. Так уж случилось, что вам надо отрефакторить очень большой кусок кода, целую подсистему. Строк, эдак, на 200К. Причем рефакторинг явно выглядит очень крупным, затрагивающим базовые концепции, по которым построена ваша подсистема. Фактически надо переписать всю архитектуру, сохранив бизнес логику. Такое бывает, если, например, вы сделали один проект и у вас впереди новый, и вы хотите в нём исправить все ошибки прошлого. Допустим, по первым прикидкам, на рефакторинг надо месяца 2, не меньше. В процессе рефакторинга всё должно работать, в том числе нельзя мешать другим программистам добавлять новые фичи и чинить баги в подсистеме. Часто такой рефакторинг бывает насколько сложен, что совершенно невозможно замерджить старый код в новый, а также невозможно выкатить результат по частям. Фактически вам надо заменить двигатель самолёта на лету.

      Примеры из практики, как моей, так и моих коллег:
      • Переделать всю работу с базой данных с чистого JDBC на Hibernate.
      • Переделать архитектуру сервиса с отсылки-приёмки сообщений на удалённый вызов процедур (RPC).
      • Полностью переписать подсистему трансляции XML файлов в рантайм объекты.


      Что делать? С какой стороны подойти к проблеме? Ниже представлен набор советов и практик, которые нам помогают справиться с этой проблемой. Сначала более общие слова, а потом конкретные методики. В общем-то ничего сверхъествественного, но кому-то может помочь.
      Читать дальше →
    • GTD vs Agile Results. Исправляем недочёты Дэвида Аллена



      В данном посте я хочу рассказать о том, чем система личной эффективности Agile Results отличается от GTD и как способна улучшить последнюю. Пост будет полезен как GTD-шникам со стажем, так и тем, у кого отношения с GTD не сложились.
      Читать дальше →
    • Написание музыки в Linux: что есть прямо сейчас

        Недавно я прочитал о том, что Гэйб Ньюэлл всерьёз настроен на то, чтобы перенести хорошие и качественные игры в Linux. Как он считает, это именно то, чего не хватает, и что на данный момент ограничивает развитие платформы. Безусловно, он прав. Тем не менее, лично для меня есть и другая область, которая мне даже намного важнее, чем игры — это музыка. Если без игр я могу обойтись, то музыка для меня необходима — как, впрочем, и для многих других людей.

        Рабочее место Niels Ott
        На картинке ­— рабочее место Niels Ott, на компьютере запущен Ardour.

        Моя жена тоже музыкант, и когда она увидела, какие секвенсоры и синтезаторы есть в Linux — она даже не стала пытаться в них разобраться, просто вернувшись к своим Cubase и Reason. На её ноутбуке есть Windows 7, и когда она пишет музыку, она просто перезагружается туда и запускает там эти программы.

        Я же, пользуясь Linux уже около 10 лет, не могу так просто отказаться от того, чтобы хотя бы пробовать имеющиеся программы. В принципе, могу точно сказать, что за 10 лет всё очень сильно изменилось в лучшую сторону. И всё же то, что сейчас есть под Linux для написания музыки, очень далеко от идеала. Давайте вместе разберёмся, почему бо́льшую часть музыки всё ещё пишут на Mac OS X или Windows.
        Читать дальше →
      • Доступные методы борьбы с DDoS-атаками для владельцев vds/dedicated серверов с Linux

          image

          Начать свое присутствие на Хабре мы решили с материала, подготовленного для Конференции уральских веб-разработчиков, в котором описаны проверенные на собственной практике и оказавшиеся вполне успешными методы борьбы с DDoS-атаками. Целевая аудитория данной статьи — это программисты, имеющие в распоряжении vds или dedicated. Статья не претендует на полноценное руководство и многие сисадминские нюансы в ней намеренно опущены. Мы рассматриваем только DDoS типа http flood как наиболее распространенный тип DDoS и наиболее дешевый для заказчика.

          Целевая аудитория данной статьи – это программисты, имеющие в распоряжении VDS или Dedicated.
          Читать дальше →
        • Делаем свою Time Machine для Линукса

            После интенсивного пользования time machine на маках и пару ситуаций когда она реально пригодилась (были варианты когда пришлось поставить систему из бэкапов и варант когда пришлось откатывать назад после проблем), возникла мысль а собственно почему такой удобной системы нет на линуксе. После исследования вопроса и опроса знакомых линуксоидов оказалось что:
            1. сделать такую систему можно просто за пару минут на коленках
            2. странно, но как-то никто собственно не в курсе что это можно поднять настолько быстро.
            3. наша time machine для линукса будет с маджонгом и гейшами.
            Читать дальше →
          • 12 принципов производительности Эмерсона для фрилансера


              В начале 20 века Гарингтон Эмерсон сформулировал 12 принципов производительности и организации труда, которые можно применить буквально в любой области и позволяют достичь максимальных результатов человеческой деятельности и предприятия в целом. После прочтения его книги я осознал, что до большинства его принципов я дошел своей головой путем ошибок в своей жизни, кажется если бы я прочитал его книгу раньше моя жизнь была бы более продуктивной. В этой заметке я рассмотрю эти принципы для фрилансерской деятельности.

              Читать дальше →
            • Принцип «уверенности» высококачественного веб-дизайна

              Краткий синопсис

              Доброго времени суток, уважаемые Хабрапользователи. Я довольно давно наблюдаю за различными постами Хабра, касающихся веб-дизайна, да и дизайна в целом. Чаще всего смысл таких постов сводится к очень подробным описаниям отдельных элементов сайта и их различным вариантам — в этом нет ничего плохого, но, мне кажется, этой теме чего-то не хватает: а именно, освещения более общих и всем понятных принципов высококачественного дизайна, которыми мог бы воспользоваться любой пользователь, даже не владеющий соответствующим профилем. В этой статье речь пойдет об одном из таких основополагающих принципов.

              image

              Под катом примерно 1.1 Мб трафика.
              Читать дальше →
            • Семь практических методов и инструментов, позволяющих оптимизировать работу над диссертацией

                Написание качественной магистерской диссертации полноценно охватывающей все разделы проведенного исследования, основной работы, анализа и апробации результатов является сложной и комплексной задачей, ежедневно с различным успехом решаемой множеством студентов по всему миру. К сожалению, изучение существующей литературы [1, 2], посвященной тематике написания диссертационного исследования, указывает на отсутствие материалов описывающих практический опыт применения различных методов и инструментов, позволяющих не только оптимизировать работу над диссертацией, но и улучшить качество конечного результата.
                В данной статье рассмотрим семь практических методов и инструментов, применение которых позволит обеспечить целостное структурирование и систематизацию задач, знаний и различных данных получаемых в ходе работы с диссертацией:
                1. Формирование структуры задач.
                2. Поиск литературы в каталогах.
                3. Сбор, обработка и систематизация информации.
                4. Формирование списка литературы.
                5. Составление плана по вехам.
                6. Определение предмета исследования.
                7. «Summary» для научного руководителя.

                Читать дальше →
              • Внедрение инспекций кода в процесс разработки

                  Внимание! Данная статья рассчитана на людей, имеющих представление о том, что такое инспекции кода, и желающих внедрить эту методику в своей компании.


                  Когда мы начинали заниматься процессом внедрения инспекций кода (code review) в своих проектах, то были неприятно удивлены отсутствием толковых материалов по организации этого процесса с нуля. Еще один крайне скудно освещенный аспект — это масштабирование процесса инспекций.

                  Восполняя этот пробел, мы хотим поделиться опытом внедрения этой замечательной практики в нашей команде. Конструктивная критика в комментариях приветствуется.

                  Итак, начнем.
                  Читать дальше →