В конце мая Embox, уже традиционно, принял участие в OSDay. Конференция, как и в прошлом году, проходила в главном здании РАН. На этот раз она была посвящена надежности. Тема надежности ПО стара. Она затронута, например, Фредериком Бруксом в его легендарном произведении “Мифический человеко-месяц”, на которое несколько раз ссылались и на самой конференции. В книге упоминается, что одной из проблем, с которой столкнулись в процессе создания операционной системы OS/360, было отсутствие достаточного количества квалифицированных программистов. Наверное, по этой же причине много времени на конференции было уделено образованию в области системного программирования. В общем, кому интересно, какие, на мой взгляд, интересные идеи высказывались и обсуждались на конференции, прошу под кат.

Открывая конференцию, один из ее основателей Дмитрий Завалишин dzavalishin, высказал несколько тезисов:

  • Современные программные системы настолько сложны, что надежность требуется для любой из них, а не только для “особенных”, как было раньше
  • Представления о надежности ПО у разных людей могут различаться, например, некоторые считают надежность синонимом безопасности
  • Методы обеспечения надежности могут быть разными, исходя хотя бы из того, что различаются представления о надежности

В первый день ИСП РАН представил доклад, посвященный надежности ПО с академической точки зрения. И хотя это было скорее данью истории, из него было понятно, что проблема далеко не нова, и определения надежности, как и методов ее оценки, очень разнообразны. Доклад хоть и был сильно порезанным (поскольку докладчик пыталась уложиться в 30 минут), был интересен своей научностью.

Инструментальные методы


Методы обеспечения надежности кода можно разделить на несколько категорий. Начну с инструментальных средств, коими славится хозяин конференции — ИСП РАН. Его сотрудником был представлен доклад об опыте верификации кусков ядра Линукса с помощью средства klever. Klever — открытый фреймворк для статической верификации кода. Собственно, проблему, которую решал автор доклада, можно сформулировать следующим образом. Статическая верификация кода слишком сложна, чтобы проверять современные проекты целиком, но можно попробовать выделить некую более-менее изолированную часть, например подсистему ядра Линукс или отдельный драйвер, и, задав ему соответствующее окружение, верифицировать. Далее можно попробовать итеративно проделать это со всем проектом.

Архитектурные методы


Еще одним подходом к построению более надежных систем является использование “архитектурных” приемов. К ним я бы отнес идею о персистентной памяти ОС Фантом и архитектуру MILS (Multiple Independent Levels of Security/Safety).

Доклад про MILS касался его свойств по повышению безопасности критических систем и был представлен Лаборатории Касперского. Доклад про сборщик мусора в условиях персистентной памяти представлял не только автор ОС Фантом, но и студент университета “Иннополис”. Естественно, идея использовать manage-языки для увеличения надежности систем не нова. И в докладе, на мой взгляд, важным являлось именно вовлечение студентов в проект с открытым кодом по созданию системного ПО.

Методический подход


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

Доклад по методике разработки критически важного ПО был представлен ФГУП «ГосНИИАС”. Доклад был посвящен разработке по стандарту DO-178С (КТ-178С в русском варианте). Как и в самом стандарте, в докладе было много “занудства”, но ведь когда делаешь самолет, одними фееричными идеями не обойтись, нужно кучу раз проверить, прежде чем внести малейшее изменение. В общем, один раз отмерь, семь раз отрежь, ой, наоборот, конечно. Естественно, доклад был интересен не своим “занудством”, а тем, что, был разработан инструментарий для автоматизации данного процесса, т.е. для уменьшения “занудства”.

Open-Source


Наконец, перехожу к разделу, в котором выступал Embox. Наш доклад назывался “Организация поддержки 3d-ускорения в ОСРВ на основе проектов с открытым кодом”. В нем довольно большая часть была посвящена разъяснению, причем тут надежность. Даже был слайд вида “Надежность и аппаратное 3d-ускорение”. Надежность, конечно, не в 3d-ускорении, а во фразе “на основе проектов с открытым кодом”. Суть в том, что нам удалось добавить к себе поддержку закрытого 3d ускорителя vivante, используя открытые проекты. И хотя используемый нами проект Mesa сильно завязан на интерфейс ядра Линукс, адаптация требует куда меньше усилий и содержит куда меньше строк кода, чем разработка с нуля.

Как я уже отметил, open-source — самая многочисленная категория, с которой так или иначе были связаны доклады на конференции. Например, “Базальт СПО” представил доклад о разработке средства синхронизации файлов clsync. Не буду вдаваться в технические детали, важно другое. Как указано в названии компании, инструмент СПО-шный, и после доклада последовало несколько советов, например, использовать futex-ы, на что докладчик предложил присоединиться к проекту и улучшить его самостоятельно.

Самым интересным в плане opensource, на мой взгляд, был доклад сотрудника Positive Technologies Александра Попова.

Доклад назывался: “Как STACKLEAK улучшает безопасность ядра Linux” и казалось, что он должен был посвящен рассказу об STACKLEAK и с чем его едят. Но основное время доклада было уделено теме, которая выражается во фразе из аннотации к докладу: “Данную работу Александр ведет уже год. Он поделится своим опытом взаимодействия с сообществом разработки ядра Linux”. То есть, в течении года проталкиваются полезные изменения, вовлечено много людей, изменения рассматриваются под микроскопом квалифицированными специалистами работающими в разных подсистемах ядра. Конечно, это не гарантирует полное отсутствие ошибок, но уменьшает их число, а следовательно — повышает надежность кода.

Альтернативный подход


На конференции, как и в прошлом году был представлен доклад, посвященный QP ОС. В тезисах к докладу вы можете увидеть следующее: “Защищённая операционная система QP ОС является полностью отечественной разработкой, созданной «с нуля» коллективом научно-технического предприятия «Криптософт».” В докладе тоже был озвучен принцип разработки «с нуля», причем не только операционной системы, гипервизора, сетевого стека, но и всех подсистем и пользовательских приложений, а также компилятора, виртуальной машины C#, и, я так понимаю, всех остальных средств разработки. На мой вопрос к докладчику, а как же быть с надежностью, ведь коэффициент количества ошибок на тысячу строк кода, никто не отменял. Получил ответ, что под надежностью можно понимать разные вещи, и, что для данной операционной системы надежным считается, если между двумя перезапусками она падает все реже. Уже после доклада, в кулуарах, я посоветовал взять открытый проект для обеспечения более полной поддержки samba. Но получил ответ, что это принципиальная позиция, разрабатывать все самостоятельно, с пояснением, что такой подход имеет право на жизнь. Что ж, я назвал это альтернативным подходом.

Тут нужно отметить, что на конференции была выставка, и был представлен стенд, на котором QP ОС можно было попробовать вживую. Я поигрался с их редактором, он вполне работал. На стенде подтвердили, что не заимствовали даже код библиотек для работы с xml. Кроме того, возможно, подобный подход “все «с нуля»”, происходит из сферы применения, в которой работают разработчики. Сфера эта характерна своей чрезмерной безопасностью, лучше пусть упадет, чем где-нибудь будет закладка. Правда, это не оправдывает отказ от использования открытого кода.

Жесткое реальное время


В данном разделе я не могу не сослаться на еще один доклад, как минимум потому, что докладчик сослался на мое выступление, поэтому и я в праве сделать то же самое. После моего выступления мне был задан вопрос, не мешает ли обеспечению характеристиками реального времени поддержка 3d-ускорителя, ну и вообще, является ли наш проект ОС жесткого реального времени? На последний вопрос я ответил уклончиво, поскольку время на конференции ограничено, а вопрос, что понимать под реальным временем требует достаточно серьезного разъяснения. Упомянутый докладчик выступал сразу после меня с докладом о своей ОСРВ Eremex FX-RTOS и заявил, что в отличие от нашего проекта, их ОС является системой жесткого реального времени. Признаком жесткого реального времени, по мнению докладчика, является отсутствие циклов с переменным числом итераций при заблокированных прерываниях.

Не берусь судить о том, есть ли потенциально бесконечные циклы с заблокированными прерываниями в ОСРВ FX-RTOS или нет, поскольку код закрытый, но, конечно, соглашусь с тем, что такие циклы недопустимы даже в обычных ОС, не говоря уже об ОСРВ!

Кроме того, в ходе доклада было заявлено, что разработчикам удалось полностью избежать блокировку (маскирование) прерываний, правда только на arm cortex-m, но все равно это большое достижение, что по мнению докладчика также указывает на реальное время. В дополнение докладчик достаточно долго остановился на устройстве на базе FX-RTOS, которое отвечало по интерфейсу UART за несколько миллисекунд, что опять же указывает на жесткое реальное время.

Не знаю, у кого из нас альтернативный подход к понятию “реальное время”, просто выскажу свою точку зрения. И как раз отвечу на вопрос, является ли Embox системой реального времени.

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

Временны?е параметры реакции — один из важнейших факторов предсказуемости, но в системах реального времени важна не столько скорость реакции, сколько разброс времени реакции, и именно он должен быть жестко ограничен. Я встречал определение, где мягкое реальное время определялось как система с малым средним значением отклика системы, а жесткое — с малым максимальным. А поскольку скорость современных процессоров сильно выросла, то время (среднее) исполнения уже не играет той роли, ведь для увеличения скорости реакции достаточно поставить более мощный процессор. Но от влияния алгоритмов и архитектуры избавиться не удается, то есть Линукс с его честным планировщиком, нацеленым на максимальную загрузку процессора, не может считаться системой реального времени. Хотя уверен, что время реакции по UART-у можно сделать достаточно маленьким, но оно будет не стабильным, ведь планировщик может решить, что нужно загрузить процессор какой-то другой задачей, и время отклика непредсказуемо увеличится. Поэтому можно сформулировать следующую характеристику операционных систем реального времени: это операционные системы которые предоставляют лучший контроль для всех своих систем, внутренних в том числе. Взять, например, ARINC-653 с его требованием в части планировщика со статическим расписанием. В этих операционных системах разработчику доступны таблицы планирования, которые он заполняет на момент разработки системы. То есть, разработчик выделяет время (тайм слоты) в общем периоде планирования каждому разделу, все прерывания отключены (кроме таймера, естественно, доступного только планировщику), и разработчик должен сделать такое временно?е расписание, чтобы каждому разделу хватило времени на решение его задачи. При этом планировщик не имеет права как-то менять это расписание.

Если задуматься, какие еще операционные системы предоставляют полный или расширенный доступ к своим “потрохам”, легко прийти к выводу, что современные проекты маленьких ОС не зря имеют гордое имя RTOS (real-time operating system). Поскольку они предоставляют этот доступ, и разработчик уже отвечает за то, чтобы конечная система, построенная на базе RTOS, отвечала всем требованиям, в том числе и предсказуемостью реакции на любое воздействие!

Что касается Embox, то мы тоже предоставляем механизмы контроля всех служб, в том числе и ядра. И с этой точки зрения, Embox — операционная система реального времени. Да, на базе Embox делались системы с MILS-архитектурой (сознательно не называю это ARINC-653, поскольку ARINC-653 — определяется сертификатом на соответствие стандарту), но точно также можно построить и другую архитектуру, которая бы гарантировала достаточную предсказуемость реакции. Один заказчик, например, проверял время реакции на осциллографе, время было с точностью до нескольких тактов процессора и ограничивалось очень жестко. Правда, система была не нагружена, из активных приложений крутился только сервер, который и реагировал на событие. Но заказчик был очень доволен результатом. Поэтому мы считаем, что говорить о реальном времени, можно только в приложении к системе в целом, и за это отвечает разработчик, а операционная система жесткого реального времени, только предоставляет механизмы достижения этого самого реального времени. Мы более аккуратны в своей классификации и у нас написано »Embox — Essential toolbox for embedded development".

Кадры решают все


Странная фраза в названии “Чему нужно учить студентов, чтобы они сразу начинали работать в российских IT-компаниях и оставались там” — это на самом деле вопрос, прозвучавший на панельной дискуссии. Проблеме обучения и образования в сфере IT была посвящена четверть конференции. Понимая всю важность и вместе с тем противоречивость проблемы, организаторы очень интересно подошли к вопросу. Прозвучало четыре доклада, по задумке организаторов, докладчики представляли собой конкурентные подходы. Так, два доклада о курсе с одним и тем же названием «Архитектура ЭВМ и язык ассемблера» на факультете ВМК МГУ. Один доклад делал Георгий Курячий, другой — Вартан Падарян. Собственно, подходы были схожи, и не важно, что в одном курсе изучался ассемблер MIPS, а в другом x86. В обоих случаях преподаватели стремились развить курс в практической области. В продолжение темы про важность практической составляющей обучения был представлен доклад Алексея Хорошилова «Конструирование ядра операционной системы». Данный курс, можно сказать, расширяет представление об архитектуре ЭВМ и позволяет студентам глубже погрузиться в ядро операционной системы. В итоге, вместо конкурирующих подходов получилось, что на факультете ВМК присуствует системный подход, то есть курсы не конкурируют, а дополняют и развивают друг друга. Собственно, так и должно быть. Также прозвучала фраза: “Чтобы научиться программировать, нужно программировать”, — которая, на мой взгляд, определяет общий принцип обучения в IT.

Еще в данной секции выступал Роман Симаков из компании ”РЭД СОФТ” с докладом “Особенности подготовки системных программистов в малых городах”. Остальные докладчики в этой секции были из Москвы, как вы, наверное, догадались.

Доклад по перечисленным проблемам очень мне (и не только мне) напомнил доклад “Ошибки в государственном надзоре за высшим образованием — главная проблема высшего образования в России” с конференции OSEDUCONF-2018 описанной мной на хабре.

Сравните:
взято со страницы с тезисами текущего доклада
1) При распределении бюджетных средств на специальность в ВУЗе учитывать количество работающих по этой специальности выпускников. Если специалисты не востребованы, то нет смысла финансировать бюджетные места. Да. Выпускники работают, платят налоги, но зарабатывают чем-то другим! Работодатель мог бы при регистрации сотрудника указывать его специальность и ВУЗ и сейчас все это очень легко агрегировать.
2) Изменить коммерческую основу образования. Платить нужно не за подготовку, а за ее результат. IT-компании могли бы заказывать обучение специалистов и оплачивать согласно результатов. Грубо говоря специалисты предприятия присутствуют на экзаменах, оценивают для себя и «подписывают акт приемки» результатов подготовки.
Взято из моего обзора доклада на Хабре
В данном докладе автор обозначил проблемы неэффективности нынешнего образования. Возможной причиной этого является забюрократизированность. Про проблему забюрократизированности сильно распространяться не буду, т.к. все, кто связан с образовательным процессом, так или иначе с ней сталкивались. Автор выразил мнение, что основной проблемой образования является то, что контролируется процесс, а не результат. То есть ВУЗу навязывают формальные требования к процессу, и именно они проверяются. Реальной же ценностью образования является востребованность его выпускников.
В обоих случаях основная мысль в том, что ВУЗ должен подготавливать успешных в своей отрасли специалистов, а не отчитываться по количеству мест. Когда автору доклада сказали, что эти идеи не новы, он обиделся, и сказал, что они оригинальные. В этом никто не сомневается, а вот тот факт, что оба доклада были представлены малыми городами (Муромом и Переславль-Залесским), наводит на мысли о том, что проблемы с распределением бюджетных денег на образование достаточно серьезны, и особенно проявляются в малых городах.

Что же касается вопроса из названия статьи, я предложил его автору не думать о том, чему же нужно учить программистов, а развивать саму IT-индустрию. Ясно, что если специалист не найдет применения своим знаниям и умениям, он уйдет туда, где они окажутся востребованы. Именно промышленность формирует требование к специалистам, а не ВУЗы и не государство. Меня поддержал докладчик из ИСП РАН, который сказал, что должно быть “триединство”: образование, наука, промышленность. Без любой из этих составляющих начинают проседать и другие части.

В дополнение сошлюсь на свою статью “Где взять программиста” в которой я постарался предложить свой подход к улучшению образования в IT.

Итоги


Подводя итоги, хочу отметить, что конференция интересна прежде всего своим разнообразием мнений и, конечно, качеством докладов. Я вообще не упомянул о целой секции по безопасности и многих других докладах, не со зла, просто рассказал, о том что было особенно интересно лично мне. А официальный отчет можно почитать тут.

Видео всех докладов с конференции, а не только упомянутых в статье можно посмотреть тут. Там еще много интересного.

Комментарии (59)


  1. akryukov
    28.06.2018 12:52
    +2

    От статьи с заголовком "чему учить студентов" ожидается соответствующее содержание, а не классификация докладов на конференции РАН.
    Зачем читать эту статью, если ответ на вопрос из заголовка вы предложили почитать в другой статье?


    1. abondarev Автор
      28.06.2018 13:03
      -3

      Не согласен с Вами. Статья не является классификацией докладов на конференции, хотя бы потому, что не рассмотрено половина докладов. В статье, я постарался поднять вопросы которые мне лично показались интересными из обсуждений на конференции.
      По поводу вопроса из названия:

      Что же касается вопроса из названия статьи, я предложил его автору не думать о том, чему же нужно учить программистов, а развивать саму IT-индустрию. Ясно, что если специалист не найдет применения своим знаниям и умениям, он уйдет туда, где они окажутся востребованы. Именно промышленность формирует требование к специалистам, а не ВУЗы и не государство. Меня поддержал докладчик из ИСП РАН, который сказал, что должно быть “триединство”: образование, наука, промышленность. Без любой из этих составляющих начинают проседать и другие части.

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


      1. akryukov
        28.06.2018 13:08
        +1

        Вы рассматривали вариант названия статьи "Обзор конференции OSDay" вместо нынешнего заголовка?


        1. abondarev Автор
          28.06.2018 13:14
          -2

          Рассматривал конечно, но мне показалось, что такой заголовок будет меньше отражать суть статьи. В конце концов перед катом, написано о чем статья!
          Так же рассматривались, «Как повысить надежность ПО» и «Что же такое реальное время»


    1. abondarev Автор
      28.06.2018 14:49

      А в качестве ответа на полный вопрос: «Чему нужно учить студентов, чтобы они сразу начинали работать в российских IT компаниях и оставались там», мне посоветовали следующее: патриотизму, скрепам, словам гимна Российской Федерации.
      Собственно это правильный ответ, а вопрос именно для того, чтобы показать глубину проблемы!


  1. pewpew
    28.06.2018 13:00

    В статье на поднимается вопрос «зачем это людям?». Люди вольны сами решать за себя свою судьбу. В том числе, выбирать место работы и страну проживания. Если они посчитают, что образование в ВУЗе им потребуется в жизни и поможет усвоить интересующую их профессию, то будут обучатся. Но при необходимости могут переехать жить в другую страну. А если страна в них нуждается, то это уже эгоизм со стороны гос-ва.
    Кроме того, необходимость высшего образования сама по себе — отдельный вопрос. Уж если ВУЗы обучают на коммерческой основе, то чем знания, предоставляемые ими лучше знаний, приобретённых людьми на профильных курсах или самостоятельно?
    Лично я — за профильное образование. Но привязывать его к какой-то определённой локации — бред. Вы ещё договор со студентами подписывайте — работать по профилю только в России, не менее 20 лет.


    1. abondarev Автор
      28.06.2018 13:11

      Собственно, абсолютно с Вами согласен, по поводу локации в РФ. Вопрос вынесенный в название и был призван показать эту проблему. Не буду еще раз себя цитировать, но мое отношение, есть в статье и в комментарии выше.


  1. cmd01
    28.06.2018 13:55

    я уже молчу про то, что творится в ВУЗах страны… тот же МТУСИ — такая помойка…
    помню, проходили обмен пакетами(аля рукопожатие), спрашиваю, почему изучаем устаревший протокол(забыл уж)? намекал на привычный TCP, было предложено что-то устаревшее…
    ответ: «разберетесь в нем, поймете все остальное» — ответила преподаватель лет под 50… (базара нет, конечно, но медиков тоже так же учат?)
    я уже молчу про материально техническое обеспечение…


  1. Tiamon
    28.06.2018 17:36
    -1

    Наверно учить не обращать внимание на зарплаты в западных компаниях, уровень жизни и отношение там же и прочее. )


    1. abondarev Автор
      28.06.2018 17:46

      Интересно, как выразить сарказм в вопросе из заголовка :)

      Конечно, нужно учить хорошо! Чтобы специалисты получались мирового класса.
      А чтобы оставались нужно, чтобы компании были конкурентоспособными, а не студенты! А то, свалимся к обучению патриотизку, а не программированию!


      1. Tiamon
        28.06.2018 17:50

        Тут больше не сарказм, а «грустняк», куча талантливой молодежи и такое бездарное государство, обидно.
        «Я люблю родину и ненавижу государство» (с) Задорнов.


        1. abondarev Автор
          28.06.2018 17:55

          На счет грустняка согласен. Более того, мне показалось, что тот кто задал вопрос, представлял не государство, а IT-компанию (возможно государственную), это на мой взгляд куда хуже!


    1. Industrialman96
      28.06.2018 22:44

      Чем отношение в том же Яндексе отличается от отношениях в западных компаниях?


      1. abondarev Автор
        28.06.2018 22:48

        А я не говорил, что в отличается. Я говорил, что такой проблемы как уход при первой возможности специалистов, это проблема не обучения специалиста. Яндекс как раз и пример, как должны удерживаться работники.


  1. alexeykuzmin0
    28.06.2018 18:29

    Что-то я не понял, а где ответ на вторую часть вопроса «и оставались там»?


    1. abondarev Автор
      28.06.2018 18:35
      +1

      Ох, все таки расплывчато я написал…

      Что же касается вопроса из названия статьи, я предложил его автору не думать о том, чему же нужно учить программистов, а развивать саму IT-индустрию. Ясно, что если специалист не найдет применения своим знаниям и умениям, он уйдет туда, где они окажутся востребованы. Именно промышленность формирует требование к специалистам, а не ВУЗы и не государство. Меня поддержал докладчик из ИСП РАН, который сказал, что должно быть “триединство”: образование, наука, промышленность. Без любой из этих составляющих начинают проседать и другие части.


      По сути дела ответом является, что не нужно учить программистов, чтобы они где то оставались, а нужно учить компании, чтобы в них стремились и в них оставались. На российском рынке, кстати, есть такие, но их конечно мало!

      Если же вопрос ставить именно так как он поставил, то как я уже написал в комментарии, нужно учить: патриотизму, скрепам, словам гимна Российской Федерации. но это конечно, никакого отношения к IT не имеет!


      1. Stas911
        28.06.2018 19:18
        +2

        Какая бы ни была замечательная компания — отгородиться от происходящего в стране все равно не удастся.


      1. berez
        28.06.2018 21:21
        -1

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

        Вы считаете, что компанию можно научить привлекательности?
        Мне почему-то кажется, что компания — это не девушка, а привлекательность для работника — это не макияж.


        1. abondarev Автор
          28.06.2018 22:51

          Конечно не макияж. Но почему стремятся например в Гугл, Амазон, Фейсбук. Ну или наши, Яндекс, ДжетБрейнс, Лаборатория Касперского. Естественно, как и с любой красотой, на вкус и цвет товарищей нет, но конкурентоспособность, она и в Африке конкурентоспособность!


          1. berez
            29.06.2018 16:26

            Вы все очень верно говорите, но я имел в виду другое. Конкретно — у меня вызывает очень сильные сомнения словосочетание «учить компании».

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

            Теперь берем какую-нибудь мелкую компанию. Можно ли ее «научить» быть крупной? :)
            Мне кажется — нет. Вот когда она дорастет до крупной компании — тогда да, станет привлекательной для разработчиков просто в силу того, что компания крупная.

            Для мелких компаний есть свои методы employee retention. Например, каждый сотрудник в компании становится совладельцем, и получает доход, пропорциональный доходу компании. Это ли не лучший стимул работать в компании хорошо и долго? К сожалению, такие решения принимаются на этапе создания компании. Когда компании уже несколько лет, их уже поздно «изучать».

            Возможно, я предубежден, но видимых результатов «обучения быть привлекательной компанией» я не видел ни разу. Обычно все сводится к бесплатным печенькам в офисе и периодически организовываемым коллективным праздникам (тимбилдингам, пьянкам и прочим мероприятиям). Не зарплату же повышать, право слово. :)


            1. VolCh
              29.06.2018 16:33

              «Никогда не поздно начинать». Те же доли можно раздать в любой момент, разрешить (хотя бы) использовать новые технологии, ну и зарплаты повысить :)


              1. berez
                29.06.2018 19:01

                Те же доли можно раздать в любой момент,

                Э-э-э нет, не все так просто. :)
                Раздача долей — это переход от модели «мы вас наняли» к модели «мы все тут немножко собственники». И граблей на пути у такого перехода гораздо больше, чем кажется — начиная от чисто юридических (форма организации компании) и до психологических.

                разрешить (хотя бы) использовать новые технологии, ну и зарплаты повысить :)

                Чтобы раздать доли и повысить зарплаты, нужно где-то взять деньги. На бытовом-то уровне все кристально ясно и понятно: раз директор катается на «мерсе», значит, надо все отобрать и перераспределить. Но когда дело доходит до конкретных расчетов, почему-то оказывается, что перераспределение даст единовременную прибавку к зарплате в размере этак тыщи рублей, а хотелось-то побольше и навсегда. :)


            1. abondarev Автор
              29.06.2018 16:38

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


              1. berez
                29.06.2018 19:21

                У нас на рынке точно есть какие нибудь мастадонты с гораздо большим, и оборотом и количеством сотрудников, но что то я не слышал чтобы туда рвались разработчики, вот в начальники да.

                Рвутся, поверьте. К примеру, в питерском отделении Моторолы никогда не было дефицита разработчиков, хотя никакими особыми плюшками они не отличаются.
                Крупная компания интересна сама по себе, особенно для начинающих разработчиков.

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

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

                Допустим, наш гипотетический молодой специалист, которого надо привлечь, не очень парится насчет зарплаты — была бы работа хорошая, а уж на еду и жилье хватит. Но не все же время он будет оставаться беззаботным молодым человеком с аккуратной бороденкой, правильно? Когда-нибудь он женится, заведет детей, влезет в ипотеку и кредиты… Вот тут-то и окажется, что хорошая компания хорошей компании рознь. :)


                1. abondarev Автор
                  30.06.2018 14:41

                  То ли я не понимаю Вас, толи Вы меня.

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

                  Адекватная зарплата как раз позволяет не думать о том как прокормить семью и не уступает рыночной в данной точке пространственно временного континуума.
                  По поводу зарплат в российских и забугорных компаниях. Не буду приводить в пример некоторые замечательные сколковские зарплаты, но вот почему Вы считаете, что в компаниях Параллелс ДжетБрейнс Однокласники зарплаты сильно уступают забугорным в том же городе?


                  1. berez
                    01.07.2018 14:01

                    но вот почему Вы считаете, что в компаниях Параллелс ДжетБрейнс Однокласники зарплаты сильно уступают забугорным в том же городе?

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


            1. abondarev Автор
              29.06.2018 16:45

              а, и да, заставлять повышать зарплату в коммерческой компании дело неблагодарное. Моя идея в том, чтобы развить отрасль, появятся много компаний, компании будут конкурировать, выживут сильнейшие, которые сумеют привлечь лучших разработчиков.
              Это я назвал обучение компаний :) Согласитесь обучения специалистов тут еще меньше.


              1. berez
                29.06.2018 19:23

                Это не обучение компаний, а развитие отрасли. Согласитесь, что «развить отрасль» звучит лишь немногим лучше, чем «вы должны стать ёжиками». Как именно вы ее хотите развить, за счет чего?


                1. abondarev Автор
                  30.06.2018 14:32

                  Не соглашусь!
                  Вообще то государтсво должно развивать интерисующие отрасли. За счет чего: уменьшение налогов, уменьшение бюрократических барьеров, дотации и другие виды стимулирования.
                  Лично на мой взгляд действенным может считаться только стимулирование реального спроса на продукцию компаний в данной области.


                  1. berez
                    01.07.2018 14:08

                    Не соглашусь!

                    С чем именно?

                    Вообще то государтсво должно развивать интерисующие отрасли.

                    То есть, пользуясь вашей терминологией, это государство должно «учить компании быть привлекательными»? Интересный у вас взгляд на мир.

                    За счет чего: уменьшение налогов, уменьшение бюрократических барьеров, дотации и другие виды стимулирования.

                    Есть мнение, что протекционизм способствует не развитию отрасли, а скорее наоборот — ее застою и загниванию.
                    Развитию отрасли может поспособствовать здоровая конкуренция.

                    Лично на мой взгляд действенным может считаться только стимулирование реального спроса на продукцию компаний в данной области.

                    То есть перечисленные вами выше протекционистские меры вы сами действенными не считаете?
                    И каким образом вы предлагаете стимулировать спрос на продукцию компаний? Мне пока видится только один путь — внедрение в приказном порядке.


        1. Stas911
          28.06.2018 22:56

          Можно, мне известны примеры, когда контора, которую считали гиблым местом, через 5 лет стала вполне адекватным и приятным местом для работы.


          1. berez
            29.06.2018 15:55

            И достигнуто это было именно через обучение?
            Кого именно обучали, какие курсы проводили, сколько это стоило?


            1. Stas911
              29.06.2018 16:07

              Насколько мне известно, просто весь HR поменяли сверху донизу, подробностей не знаю, я там работал уже после всех преобразований


              1. berez
                29.06.2018 16:29

                И где же здесь обучение?


                1. abondarev Автор
                  29.06.2018 16:33

                  Я просто думаю, что там не только сменили весь HR, для подобных изменений нужно сменить культуру компании. Как известно рыба гниет с головы и культура тоже распространяется с головы.


                1. VolCh
                  29.06.2018 16:34

                  Обучение компании — это не обучение людей.


                  1. berez
                    29.06.2018 19:24

                    А что же это? :)


                    1. VolCh
                      29.06.2018 20:05

                      Изменение бизнес-процессов, в данном случае в сфере HR. Может все всё умеют, только команды не было для исполнителей, и решение не созрело у руководства.


  1. rumkin
    28.06.2018 18:33

    Согласен с остальными комментаторами, ни в заголовке, ни в водном абзаце нет информации связанной с основным содержимым. И даже последний абзац никак не восполняет логический разрыв. Напоминает локализацию названий фильмов.


    1. abondarev Автор
      28.06.2018 18:44

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


  1. VolCh
    29.06.2018 10:35

    Ответ очевиден: учить тому, что больше востребовано в российских компаниях, а не в иностранных. Но есть нюансы: можно поднять российские компании так, чтобы за одни и те же знания и опыт российские предлагали лучшие условия. А можно сделать так, чтобы выпускники не обладали знаниями, востребованными на Западе. Учить только тому, чего на Западе нет и вряд ли будет. Ну и российскую индустрию перевести полностью на это, импортозамещение, самоизоляция и прочие скрепы.


    1. abondarev Автор
      29.06.2018 11:58

      Я полагал, что ответ очевиден, не нужно так ставить вопрос!
      IT отрасль, по определению интернациональна и не знает границ. Попытка чему то особенному научить, приводит к неконкурентоспособности компаний в которых подобные специалисты будут работать. Нет для перекачки газа и нефти конечно подойдет, но вот для IT как то не очень.


  1. VolCh
    29.06.2018 10:47

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


    1. abondarev Автор
      29.06.2018 12:14

      На мой взгляд университеты, должны учить учиться и думать разумеется.
      Это очень хорошо заметно в IT, поскольку эта отрасль очень быстро меняется. Взять текущие популярные вещи: bigdata, blockchain и так далее. Сейчас всем дружно броситься учить этому? А что будет через 5-6 лет, когда студент закончит образование?

      Ваше предложение интересно, но вроде так сейчас и есть, первые два курса достаточно общая программа для технарей с каким то уклоном, потом идет специализация. На счет выработки общей программы для всех ВУЗов. На мой взгляд, это утопия к тому же в нашей действительности преступная утопия. Преподавателям нужно давать свободу, критика контроля процесса как раз и приведена в статье. Все таки ВУЗ это не школа, там важна свобода. А то мы придем к общим правилам в науке, творчестве… инновациях нано-технологиях :)


      1. alexeykuzmin0
        29.06.2018 12:31

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


        1. abondarev Автор
          29.06.2018 13:11

          Безусловно учить учиться нужно начинать ещев школе, а то и раньше. И заканчивать процесс не стоит и в ВУЗе, но…
          Речь немного о другом. Мы с одним из докладчиков обсуждали как же учить студентов, понятно в IT. Советы по обучению медиков, мы не даем. Так вот когда зашла речь чему нужно учить, например, конкретному языку, решили, что это уровень техникума, а не университета. Сообщественно, толпы которые нужны для верстки страниц или разработки мобильных приложений, вполне могут обучаться в средних специальных заведениях. Кстати, на пленарном заседении прозвучала интересная мысль, что индусы, каким то чудесным образом могут превращать толпы не очень квалифицированных программистов в фабрики разрабоки ПО, на выходе которых получается работающий код, пусть и не очень высокого качества.


          1. berez
            01.07.2018 14:35

            Безусловно учить учиться нужно начинать ещев школе, а то и раньше. И заканчивать процесс не стоит и в ВУЗе, но…

            Но есть одно объективное препятствие вашим с Алексеем фантазиям, и имя ему — дети. :)
            К сожалению, в школе «учить учиться» еще рановато: мозг ребенка еще не способен к критическому восприятию действительности. Да и подростки еще не вполне осиливают это дело. «Учить учиться» можно только в старших классах школы, но тут уже на арену выходят наши образовательные реформы, «баба ЕГЭ» и ориентация на формальное заучивание фактов.
            Что же касается вузов — они да, пытаются привить научное мировоззрение и критическое мировосприятие. К сожалению, вузовские программы не в состоянии сделать это хорошо — ибо тут тоже на арену выступает образовательная реформа, переориентация на бакалавриат и фактически отказ от выпуска полноценных специалистов. В вузовских программах просто не остается времени на то, чтобы «научить учиться».


            1. alexeykuzmin0
              01.07.2018 14:36

              К сожалению, в школе «учить учиться» еще рановато: мозг ребенка еще не способен к критическому восприятию действительности. Да и подростки еще не вполне осиливают это дело.
              А вот это, кстати, очень интересно. Если можно, поделитесь материалами по этой теме.


              1. berez
                01.07.2018 16:13

                Это мой вольный пересказ сведений из курса подростковой психологии. Курс проходят в любом педагогическом вузе, но я, если честно, не рекомендую читать учебники — там много воды и философствований о том, как труден и важен кризис подросткового возраста. :)

                Вкратце всё выглядит примерно так:

                Особенность детской психологии — это беспрекословный авторитет взрослых. Все, что сказал взрослый — истина, никакой критичности восприятия нет. А без этого не будет никакого «научиться учиться».

                Особенность подростковой психологии — ребенок уже пытается критически мыслить, но ввиду неполноты картины мира это у него получается плохо. Казалось бы — самое время начинать, но нет. Из-за склонности подростков ниспровергать авторитеты обучать их «правильным подходам» привычными методами малоэффективно. Тут нужно или индивидуальное занятие (один взрослый — один подросток), или же нужны методы «воспитания коллективом», как у Макаренко. С индивидуальным подходом все плохо по причинам недостатка квалифицированных кадров, а подход Макаренко прочно обосран еще во времена перестройки.


                1. alexeykuzmin0
                  01.07.2018 16:50

                  Особенность детской психологии — это беспрекословный авторитет взрослых. Все, что сказал взрослый — истина, никакой критичности восприятия нет. А без этого не будет никакого «научиться учиться».
                  Я бы определил умение учиться как способность быстро освоить новый навык. Не очевидно, что критическое мышление является для этого необходимым. Я вот, например, могу прочитать учебник по Haskell, поверить в нем каждому слову без перепроверки, и получу новый навык — программирование на Haskell.

                  Полностью согласен с вашими рассуждениями относительно критического мышления.


      1. VolCh
        29.06.2018 16:05

        А диплом дают после 4-го, а не 2-го, правильно? То есть два года, человек поступивший на схемотехника, учит то, что ему и как программисту скорее понадобится, чем нет, а потом два года наоборот. Ему последние два, а то и четыре года нужны только чтобы был диплом технический, а лучше «айтишный», но специализация в области где он не собирается работать, ему не нужна. Даже если не сможет специализацию получить которая нужна, лучше для всех (ну кроме кафедр, дающих специализации, которые мало кому реально нужны) было бы делать из него генералиста, а не специалиста, которым он заведомо не будет работать.


        1. Neikist
          29.06.2018 16:11
          +1

          Кстати а я бы не отказался от какого нибудь второго высшего «общетехнического» на 4 года. Без специализации как раз.


        1. abondarev Автор
          29.06.2018 16:19

          не уверен, что правильно Вас понял. Но возможно Вы имели в виду что не обязательно учить общим вещам, поскольку они ему не понадобятся в будущей работе.

          Давайте возьмем, например, курс «Архитектура ЭВМ… » ну действительно кажется какому прикладному программисту это может понадобиться, или скажем изучение машины Тьюгинга, ну не будет же он на ней программировать. Но в этом то и суть университететского (высшего) образования, чтобы глубоко понять проблему и было не важно на каком языке программировать какими технологиями пользоваться, необходимы знания с разных областей. Если нет, то добро пожаловать в техникум, их выпускники гораздо быстрее пишут под конкретные изученные технологии. В этом кстате нет ничего плохого.


          1. Neikist
            29.06.2018 16:51

            Автор комментария выше говорил о случаях когда человек или не определился на момент выпуска из школы, либо на желаемую специальность не смог поступить, и поступил на другую. В итоге работать хочет (и будет) программистом, а изучал например динамику и прочность машин, просто потому что нужна техническая специальность.


            1. abondarev Автор
              29.06.2018 17:26

              Да, спасибо. Теперь понял.
              Но кроме динамики он должен был изучать и физику и математики, а вот они ему точно пригодятся при программировании.


          1. VolCh
            29.06.2018 16:57

            Нет, я имел в виду, что мало смысла учить специальным вещам, если человек не намеревается работать по этой специальности, а ему просто нужен диплом о ВО, желательно отраслевой «айтишный», но хотя бы просто технический, но специальность практически не важна, кроме одной-единственной, на которую ему по каким-то причинам не получилось попасть.

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

            А хочешь профессию инженера, идешь получать не высшее общее (университетское), а высшее техническое, где при сравнимых с выпускником техникума практических навыках будет больше теории по конкретной специальности и больше «непрофильных» предметов типа экономики или экологии, выпускнику техникума («кодеру») не нужные для профессиональной работы. А вот инженеру нужно, например, ТЭО писать на свои решения.


            1. abondarev Автор
              29.06.2018 17:24

              Извините, не правильно Вас сначала понял.
              Да, с этим я абсолютно согласен. Университетское образование должно быть шире чем у конкретного специалиста.
              Но вот вопрос кто определяет, что нужно программисту? И если отличие только в том что он технико-экономическое обоснование может написать, что для большинства программистов не нужно, то какой толк вообще получать диплом о высшем образовании? С другой стороны алгоритмам, математике, архитектуре ЭВМ в рамках техникума, врядли можно научить.
              Конечно, нужно давать возможность попробовать себя в разных сферах. Может в итоге он вообще гениальным хирургом станет, но вот как такой объем знаний впихнуть за короткий промежуток времени.
              Поэтому на мой взгляд самым ценным является именно университетское образование. Ведь люди с качественным образованием прекрасно находят себя в самых разных областях знаний. А на специальность по диплому смотрят, ну скажем так только в проблемных случаях.


              1. VolCh
                29.06.2018 20:03

                Вот именно, что смотрят в редких случаях, но ресурсов разных на её получение тратится много. И непонятно кому эти траты нужны, по сути какая-то ИБД получается.


                1. berez
                  01.07.2018 15:52

                  И непонятно кому эти траты нужны, по сути какая-то ИБД получается.

                  Эти траты нужны для того, чтобы у студентов сформировалось научное мировоззрение и критическое мировосприятие. К сожалению, этим вещам нельзя научить — их можно только попытаться сформировать.

                  Как видим, попытки по большому счету бесплодны.