• Судьба программистов в РФ или как уехать из города Энска

      В те давние времена, когда истории про солитера у отца Виндоуса были уже старыми, а Paradox DB был еще вполне в ходу, из разных школ город Энска и рядом расположенного города Эрска выпустились три будущих программиста – товарищи под псевдонимами S, G и V. Вряд ли кто-то из них знал, что будет именно программистом – никто из них не поступил на известный своей отдаленностью от цивилизации «программисткий» факультет университета города Энска.

      TL/DR – чего учили 5-10-15 лет назад, и чего из этого пригодилось где-то около 2015 года при трудоустройстве в не самые мелкие кампании, в РФ и не в РФ.

      Как работает трудоустройство и карьерный рост на трех примерах из жизни. Ничего нового, даже список книжек старый. Серебряной пули не будет.
      Читать дальше →
    • Действия при приходе на работу — прием дел, актуализация, документирование, аудит

      С интересом прочел Аудит ИТ-инфраструктуры — как быть новичку, но мне показалось, что список дел при аудите и приеме на работу (особенно, если оттуда уже давно уволились все, кто что-то помнил) гораздо шире.

      Если у вас в организации процессы не построены — то этот текст для вас бесполезен. Если построены — то тоже бесполезен. Почти Rifleman's Creed — Without me, my rifle is useless. Without my rifle, I am useless.
      Читать дальше →
    • Что я жду от своего сотового оператора

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

        А почему бы и не написать своему сотовому оператору, что я от него жду? Не жалобы на качество связи, тарифы, подписки/рассылки и т.д., а какой сервис и почему мне нужен и интересен, вдруг услышат.
        Далее
      • Рентабельный код 2: крадущийся DDD, затаившийся CQRS

        • Tutorial

        Трем программистам предложили пересечь поле, и дойти до дома на другой стороне. Программист-новичок посмотрел на короткую дистанцию и сказал, «Это не далеко! Это займет у меня десять минут». Опытный программист посмотрел на поле, немного подумал, и сказал: «Я мог бы добраться туда за день». Новичок посмотрел на него с удивлением. Гуру-программист посмотрел на поле и сказал. «Кажется минут десять, но я думаю пятнадцати будет достаточно». Опытный программист рассмеялся.

        Программист-новичок двинулся в путь, но в течение нескольких мгновений, начали взрываться мины, оставляя после себя большие ямы. От взрывов он отлетал назад, и ему приходилась начинать сначала снова и снова. У него ушло два дня чтобы достичь цели. К тому же он весь трясся и был ранен, когда пришел.

        Опытный программист пополз на четвереньках. Осторожно щупая землю и ища мины, двигаясь только если был уверен, что это безопасно. Медленно и осторожно он пересек поле в течение дня. Только задев пару мин.

        Гуру программист пустился в путь, и пошел прямо через поле. Целеустремленно и прямо. Он достиг цели всего за десять минут.
        «Как тебе это удалось?» — спросили двое других — «Как ты умудрился не зацепить ни одной мины?»
        «Легко» — ответил он. «Я не закладывал мины на своем пути».

        Как ни прискорбно, придется признать – мы сами закладываем себе мины. В первой части я подробно разобрал основные риски в разработке ПО и описал технологические и методологические способы ослабления этих рисков. За прошедший год я получил множество комментариев, основной смысл которых сводился к следующему: «все круто, но с чего начать и как все это будет выглядеть в реальном мире». Действительно, первый текст носит скорее теоретический характер и представляет собой каталог ссылок. В этой статье я постараюсь привести как можно больше примеров.
        Читать дальше →
      • «Готовимся к переходу на Angular 4»: Tinkoff.ru о JS-разработке


          Как известно, клиенты Tinkoff.ru видят перед собой не отделение банка, а интерфейс сайта или мобильного приложения — так что для компании две эти вещи особенно важны. О мобильной разработке мы её недавно уже расспрашивали. А теперь в преддверии конференции HolyJS, где разработчик Tinkoff.ru Алексей Носов выступит с докладом, задали вопросы о JS/фронтенде: и самому Алексею, и руководителю HR-проектов компании Ольге Шпунтенко.
          Читать дальше →
        • Трагедия стопроцентного покрытия кода

          • Перевод
          Забавно, как всё меняется. Пятнадцать лет я свято придерживался принципов TDD (разработка через тестирование, или, как её раньше называли, подход test-first) или уж по крайней мере того взгляда, что разработчикам следует писать юнит-тесты. Но в последнее время я всё чаще говорю не «Это нужно затестить», а «Зачем вы писали этот тест?».

          Читать дальше →
        • Практическое применение FlexBox

            Привет, хабр!

            Одним прекрасным вечером, не предвещающим ничего интересного, в наш чатик поступило предложение от автора публикации «Переводим в код 5 действительно полезных шаблонов адаптивной разметки», написанной им весной 2012 года, написать статью-ремейк, но с применением FlexBox и сопутствующим пояснением что и как работает. После некоторой доли сомнений, интерес глубже разобраться в спецификации все таки победил и я благополучно сел верстать те самые примеры. В ходе погружения в эту область стало выясняться множество нюансов, что переросло в нечто большее чем просто переверстать макетики. В общем в данной статье хочу рассказать о такой чудесной спецификации, под названием «CSS Flexible Box Layout Module» и показать некоторые ее интересные особенности и примеры применения. Всех кому интересно, любезно приглашаю под хабракат.
            Читать дальше →
          • Обзор примитивов синхронизации — mutex и cond

              Синхронизация нужна в любой малтитредной программе. (Если, конечно, она не состоит из локлесс алгоритмов на 100%, что вряд ли). Будь то приложение или компонента ядра современной операционной системы.

              Меня всё нижесказанное, конечно, больше волнует с точки зрения разработки ядра ОС. Но почти всё применимо и к пользовательскому коду.

              Кстати, ядра старых ОС в примитивах синхронизации не нуждались, поскольку преемптивной мультизадачности внутри ядра в старые добрые времена не было. (Уж за Юникс 7-й версии я отвечаю. Не было.) Точнее, единственным методом синхронизации был запрет прерываний. Но об этом позже.

              Сначала перечислим героев. Мне известны следующие примитивы синхронизации:

              User/kernel mode: mutex+cond, sema, enter/leave critical section.
              Kernel only: spinlock, управление прерываниями.

              Зачем всё это нужно, читатель, наверное, знает, но всё же уточним.

              Если некоторая структура данных может быть доступна двум параллельно работающим нитям (или нити и прерыванию), и являет собой сущность, к которой нельзя обеспечить атомарный доступ, то работу с такой структурой нужно производить так, чтобы только одна нить одновременно выполняла сложные манипуляции с состоянием структуры.
              Читать дальше →
            • Чтобы распознавать картинки, не нужно распознавать картинки

                Посмотрите на это фото.



                Это совершенно обычная фотография, найденная в Гугле по запросу «железная дорога». И сама дорога тоже ничем особенным не отличается.

                Что будет, если убрать это фото и попросить вас нарисовать железную дорогу по памяти?

                Если вы ребенок лет семи, и никогда раньше не учились рисовать, то очень может быть, что у вас получится что-то такое:
                Осторожно, тяжелые гифки
              • 7 мифов о Linq to Database

                  Linq появился в 2007 году, тоже же появился первый IQueryable-провайдер — Linq2SQL, он работал только с MS SQL Server, довольно сильно тормозил и покрывал далеко не все сценарии. Прошло почти 7 лет, появилось несколько Linq-провайдеров, которые работают с разными СУБД, победили почти все «детские болезни» технологии и, уже пару лет как, Linq to Database (обобщенное название для популярных провайдеров) готов к промышленному применению.

                  Тем не менее далеко не все применяют Linq to Database и объясняют это не только тем, что проект старый и переписать на linq довольно сложно, но и приводят в качестве аргументов различные мифы. Эти мифы кочуют из одной компании в другую и часто распространяются через интернет.

                  В этом посте я собрал самые популярные мифы и опровержения к ним.
                  Читать дальше →