Факторы выбора работодателя поколением Z в IT-сфере

Актуальность темы 

Рынок труда в России уже в 2021 году испытывал недостаток работников в сфере информационных технологий из-за увеличения количества предлагаемых вакансий (на 64% в указанном году). После начала специальной военной операции в 2022 году главной проблемой отрасли стал отток IT-специалистов в другие страны, который будет продолжаться в будущем и, следовательно, поспособствует увеличению их дефицита.  Таким образом, среди компаний начинается конкуренция за привлечение профессионалов на длительный период. Но в таких условиях потенциальные кандидаты, как правило, имеют свои критерии отбора по отношению к будущему месту работы и во время его непосредственного поиска, и при будущем принятии решения о продолжении сотрудничества. Соответствие этим требованиям осложняется различающимися желаниями и особенностями специалистов. Один из способов их определения — это анализ характеристик необходимых поколений и их предпочтений.

Особую актуальность теме добавляет тот факт, что представители поколения Z в данный момент начинают карьерный путь в IT, а в будущем составят большую часть рабочей силы по всему миру, в том числе и России. Согласно данным к 2036 году доля поколения в целом в трудовых резервах увеличится с 15,2% до 29,7%. При этом, как было сказано ранее, наблюдается недостаток молодежи, занятой в IT, в последние годы, в особенности мужчин. Именно поэтому структуризация информации (предпочтениях, ценностях, мотивах) и дополнительное изучение как о мужском, так и женском поле,  являются наиболее актуальными и перспективными для работодателей, нуждающихся в IT-специалистах, и общества в целом.

Метод исследования 

Данное исследование имеет качественный дизайн с использованием метода полуструктурированного интервью

На основе скрининговой анкеты было отобрано 14 человек: 6 девушек и 8 юношей. Условиями для участия в интервью являлся возраст (18-26 лет), соответствующий годам рождения поколения Z, работающего в сфере IT на данный момент. Также в силу очного формата проведения участники/цы должны проживать в Москве для возможности встречи на нейтральной территории (кафе, антикафе и др.). Кроме того, опыт обучения/работы в сфере рекламы и связей с общественностью, журналистике и т.п. и принятие участие в каких-либо исследованиях являются отсеивающими  критериями.

Разговор с участниками состоял из 6 тематических блоков:

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

  • во втором блоке (Поиск работодателя в IT-сфере) присутствуют вопросы об опыте поиска работодателя  в IT-сфере и о том, на что кандидаты обращают в первую очередь. Это помогает выявить, какие факторы выбора вспоминаются информанту в первую очередь («На что Вы обращали внимание в первую очередь?»);

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

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

  • пятый блок (Важность факторов, влияющих на выбор работодателя) состоит из проективной методики («Проранжируйте, пожалуйста, факторы при выборе работодателя от наиболее значимого для Вас к наименее…»). Факторы представляются перед информантами на разрезанных частях бумаги для удобства их ранжирования. Цель методики заключается в понимании градации значимости критериев, исходя из которой можно выделить список главенствующих;

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

Анализ интервью и рекомендации для работодателей

Как было выяснено из первого блока, информанты работают на таких должностях, как продакт-менеджер (4), бизнес-аналитик (7), UI/UX-дизайнер (12) и др. Большинство из них выбрали эту сферу из-за интереса («И это наиболее близко мне, мне интересно этим заниматься» (3)). При этом многие уже здесь указали, что одним из мотивов их решения являются прибыльность и карьерный рост IT. («…ориентировалась на возможности карьерного роста, во-первых, на, скажем так, скорость обучения, возможность начать работать без профильного образования, при этом в хорошей компании и имея перспективы карьерного роста, то есть исходя из своих возможностей и материальных потребностей» (14))

Во втором блоке можно узнать, на какие условия работодателя участники обращают внимание в первую очередь при поиске вакансии (особой популярностью для этого пользуется сайт Headhunter или Habr): например, заработная плата, престиж, карьерный рост («Основные критерии были бы, наверное, заработная плата, престиж…» (4)), график и формат работы для возможности совмещения с учебой («Мне было важно, что я смогу совмещать с учебой свою работу, вот, и, наверное, это был основной фактор» (2)), интересные задачи, так как в ином случае желание работать будет отсутствовать («Первоочередное, на что я смотрю, должны быть очень интересные задачи» (9)). В качестве отталкивающих пунктов чаще всего указывалось отсутствие возможности хотя бы части дней провести в удаленном режиме («Компания, которая ограничивает свободу в плане удаленной работы мне не подходит» (11)).

Обращаясь к третьей части интервью, можно сделать окончательный вывод, что фактор заработной платы важен для зумеров. Исключение составили лишь трое из них по причине придания большей значимости интересу к задачам («Для Вас важнее именно интерес, а не заработная плата, например?» «Ну, сейчас, да» (1)) Стоит отметить, что при поиске первой должности информанты тоже не придавали этому критерию большую значимость: для них был важен сам опыт («Когда первое место работы и, в целом, конкурсное место достаточно большое, не то чтобы сильно смотришь на зарплату и все такое» (5)). Однако после его получения их мнение касательно дохода изменилось. Как правило, сейчас они не согласятся работать за сумму, которая является ниже рыночной или ниже зарабатываемой в данный момент, так как они рассматривают хорошую материальную обеспеченность как существенный аспект жизни.

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

Аналогичная ситуация и с фактором престижа. Около 8 зетов заявили, что изначально искали какую-то крупную и популярную компанию. Они считают, что именно в такой будут хорошие условия и опыт («Потому что чем престижнее компания, тем лучше опыт можно получить» (4)). Для остальных же важнее, к примеру, полезность их деятельности и присутствие собственного интереса к поставленным задачам («Я понимаю, что если бы я была уверена в том, что делаю что-то полезное, хорошее для общества, мне было бы все равно, насколько престижное место, в котором я работаю» (1)). О репутации можно сделать более однозначный вывод: молодое поколение смотрит на отзывы и мнение о работодателе в обществе, предполагая, что с плохой репутации их ожидает отрицательный опыт соответственно («Да, наверное, условно слышал какие-то негативные отзывы. Допустим, о Wildberries, я бы не очень хотел. Я подозреваю, что там может быть не очень хорошо»  (5)).

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

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

Несмотря на то, что возможность саморазвития зумеры считают важной при выборе организации, предоставлению дополнительных курсов практически все не придали значение. Тем не менее, большинство выделяет главный плюс подобных курсов — улучшение и получение навыков («…расти всегда необходимо, чтобы развивать и компанию, и себя» (4)), но тут же участники добавляют, что им проще самостоятельно найти и пройти какое-либо обучение без участия третьих сторон. Следовательно, нежелание контроля со стороны работодателя во многом повлияло на это («Но, наверное, мне больше комфортно развиваться в своем графике, читать книги, где мне это необходимо, посещать семинары, которые мне интересны, не привязываясь к компании» (7)). Что касается других способов саморазвития, то особенно выделяется изменение подсферы деятельности  непосредственно в самой компании. Это позволяет им разнообразить свою деятельность и узнать еще больше нового. К тому же этот критерий помогает впоследствии ускорить карьерный рост и повышение заработной платы («…чтобы потом больше получать заработную плату и иметь возможность карьерного роста» (7)).

Уже неоднократно упомянутый ранее фактор графика зеты отнесли к “важным”. Кроме того, гибкий график является предпочтительной характеристикой в силу указанной ранее необходимости совмещения с учебой и стремление к свободному распределению времени. Тут же подчеркивается сложность в соблюдении четкого распорядка дня и неприязнь к ранним подъемам («…чтобы не было какой-то жесткой привязки к началу рабочего дня, условно в 10» (5)).

Обсуждение формата работы вызвало у участников исследования еще больший отклик: почти единогласно этот фактор был признан одним из самых значимых. Часть ответивших хочет работать полность удаленно, потому что так они могут с легкостью продолжать посещать учебное заведение, распределять время по своему желанию, оставаться мобильными («…можно перемещаться в разных городах, в разные места, быть более мобильным» (4)). А 2 человека добавили, что им комфортнее работать из дома из-за интроверсии («И в целом я скорее интроверт, поэтому удобнее работать удаленным» (6)). Помимо перечисленных плюсов удаленного, отмечаются его существенные минусы — недостаток общения с коллегами («Ты теряешь какую-то связь с коллегами, не чувствуешь себя настолько причастным» (10)) и отсутствие продуктивности («Чтобы была возможность работать удаленно, но сама я чувствую себя более продуктивной в офисе» (2)) у многих опрошенных. Сочетание удаленного и очного формата позволяет найти баланс, поэтому гибридный формат нравится представителям поколения Z еще больше. К тому же офис в целом создает “рабочую атмосферу”(«В целом более рабочая атмосфера и так далее» (1)).

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

Информанты неоднократно обозначают значимость наставничества и помощи от других коллег, в особенности на начальном этапе работы. Это обусловлено потребностью в росте в своей деятельности на основе новой информации от сотрудников («Когда тебе что-то могут посоветовать, и ты можешь быстрее расти» (10)) и  потребностью в объяснениях и обучении, что создает комфортную для зуммеров обстановку («Это просто сильно упрощало процесс внедрения в компанию» (4)). Если помощь будет отсутствовать, то участники будут испытывать тревогу, не понимая, как следует поступать при выполнении каких-либо задач («Поскольку это был первый рабочий опыт, тем более в такой крупной компании, в первое время чувствуешь какой-то страх, непонимание того, что нужно делать» (3)). Похожее значение имеет и обратная связь: при ее наличии представители поколения Z смогут проанализировать качество проделанной работы, понять, в чем им необходимо совершенствоваться («Она подробно давала обратную связь на любую задачу, которую я делал, то есть что хорошо, что плохо, что можно улучшить и так далее» (3)), а при отсутствии — будут вновь испытывать тревогу и даже неуверенность в себе из-за неизвестности («Это [отсутствие] даёт чувство неуверенности в себе, наверное» (2)). 

Следующий важный пункт — это коллектив. Опрошенные уже говорили о стремлении общаться с коллегами, а в данном случае они подчеркивают желание иметь хорошие, довольно неформальные отношения с ними («Для меня будет немного тяжело возвращаться в более классическую какую-то такую сферу, когда как с учителем на «вы». Вот, поэтому это тоже важно» (10)), сопровождаемые разговорами на нерабочие темы и совместное времяпрепровождение в свободное время («У меня есть друзья, с которыми мы можем обсуждать…» (2)). Тогда же зетам будет легче задавать професссиональные вопросы, что, как было выяснено ранее, тоже существенный фактор для них («Если что-то непонятно, сразу иду в личку или в чат и узнаю, что конкретно надо, и все подсказывает» (5)). При недружелюбном, или, как в основном информанты заявляют, “токсичном”,  коллективе некоторые из них будут испытывать тревожность и сильный дискомфорт, что даже мешает их карьере («Если я вновь попаду в ситуацию, где мне просто страшно и тревожно, я не могу ходить на работу, и мне прям плохо, я, скорее всего, уволюсь» (1)).

Для информантов предпочтительнее получать задания, предоставляющие возможность для творчества, но при этом не требующие полного додумывания, то есть совмещающие в себе гипотетическую и конкретную части. С таким форматом можно узнать что-то новое, реализовать выполнение по-своему и при этом не испытывать сильную неопределенность («Я очень устала от чувства неопределенности» (1)). Совмещение необходимо и в предоставлении задач: большинство желают получать задачи в текстовом виде с возможностью созвониться или обсудить возникшие вопросы устно для устранения вероятных недопониманий  («Чтобы были понятны требования, что должно там выполнять тот или иной компонент, но при этом есть возможность самой подумать, как реализовать. Не было недопониманий, ну, насколько их возможно минимизировать» (2)). Командные и индивидуальные задачи участники исследования оценивают примерно одинаково, отмечая плюсы и минусы в обоих типах. Например, при первом типе можно лишний раз пообщаться с коллегами и путем совместных обсуждений прийти к достижению цели быстрее и эффективнее («Тебя скорее перепроверяют, тебе могут подсказать какие-то важные вещи, работа идёт и быстрее, и плюс ты больше учишься как бы у своих коллег» (2)). Но, с другой стороны, это приводит к зависимости от других членов группы («Зависима от других своих коллег, а не от себя» (2)), так что заметны такие плюсы индивидуального формата как полная свобода реализации и творчества, некая независимость («Вот у тебя больше свободы в выборе реализации» (2)). Что касается заданий с высокой ответственностью, то, несмотря на возникновение тревоги и переживаний («Это больше стресс, потому что часто ответственные задачи приходят в формате «это ответственно и очень срочно», и поэтому ты чувствуешь просто стресс и давление» (10)), превалирующее число отвечающих все же с интересом относятся к ним и, более того, осознают, что выполнение таких видов способствует их личному и профессиональному росту, что опять же, указывает на их стремление к саморазвитию («Чем больше ответственности, тем больше возможностей» (3)). Особая значимость рассмотренному критерию не придается.

Размышляя о формате отчетности, дающие интервью отнесли его к одним из наименее важных факторов.  Частые регулярные отчеты вызывают неприязнь из-за излишней бюрократизации, которую зеты совсем не любят («Ну, бюрократия, ну, да, бюрократия, конечно, не очень приятна» (14)), и чувстве постоянного контроля, недоверия со стороны работодателя («…будет такое недоверие, что ты делал, сколько делал, как делал, могут возникать очень большие вопросы непосредственно у сотрудника. А нужно ли мне здесь непосредственно работать, если работодатель так не доверяет сильно мне, что я такой плохой ничего не делаю» (9)). Тем не менее, информанты готовы смириться и с такой формой отчетности («Формат отчёта с тебя о проделанной работе на двенадцатом месте, ну, я считаю, это вообще не важно» (10)).

Пятый блок состоит из проективной методики — ранжирования уже перечисленных факторов. По ее результатам были выделены 5 наиболее значимых критериев, которые упоминались информантами в первых пяти: заработная плата (9 упоминаний), наличие/отсутствие карьерного роста (9 упоминаний), формат работы (10 упоминаний), график работы (9 упоминаний), коллектив (10 упоминаний). В этом же разделе были выяснены критерии, которые участники хотели бы добавить сами, самые популярные из них: предоставление социального пакета (ДМС и др.). питания («Чтобы, наверное, было какое-то компенсационное питание или бесплатные снеки на работе» (10)),  корпоративная культура («Плюс корпоративная культура тоже важна, то есть какой настрой» (10)), технически-административная составляющая («Ну вот какие-то технически-организационные вопросы, я бы вот так сказала. На прошлом месте работы у меня все было ужасно с технически-административная составляющая» (12)), этичность  («Пункт про этичность, не знаю, мне кажется, на самый верх буквально, может быть, даже там вторым пунктом или первым» (2)) и другие.

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

Подведение итогов

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


ссылка на оригинал статьи https://habr.com/ru/articles/751512/

Уроки, которые я вынес из десяти лет работы над проектом с открытым кодом

Последние десять лет я занимался разработкой OSINT-инструмента под названием SpiderFoot; он используется для автоматизации сбора и анализа общедоступных данных с целью сократить поверхность атаки и выявить возможные угрозы. Это проект с открытым кодом, он написан на Python и занимает первые строки во многих из тех категорий GitHub, где фигурирует. На момент написания статьи у него около 7000 звезд. Пару лет назад я сделал SaaS-версию SpiderFoot под названием SpiderFoot HX, но это тема для отдельной статьи (а то и серия статей), которую мы отложим на потом. Сегодня я хочу рассказать, чему научился в процессе.

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

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

Позвольте сначала обрисовать вам этапы моего пути, чтобы предоставить какой-то контекст, но если вас интересуют именно уроки – можете спокойно пропустить этот параграф и перейти к следующим.

Моя история до сегодняшнего дня

Забавно, что изначально, в 2005 году, имплементацию SpiderFoot я начал писать, просто чтобы освоить C# на практике. Я выпустил первую версию, и она так и лежала в состоянии «версия 0,1b» на SourceForge (да-да, помните его?) в течение семи лет, пока я не взялся переписывать ее на Python. Так что, если считать этот период, SpiderFoot (как минимум, самому названию и концепции) скоро двадцать лет стукнет!

Вот так выглядела версия на C#. Да, дизайнер из меня был еще тот.

А вот SpiderFoot в своем современном виде – веб-инструмент с интерфейсом командной строки, написанный на Python:

Так откуда взялась эта пропасть в семь лет между первой версией и переписыванием на Python?
Ну, изначальной моей целью было попрактиковаться в C#, сделать полезную вещь и выпустить ее в большой мир – всё это я выполнил. У меня не было долгосрочных планов или идей, как расширить функциональность – сделал и ладно, на тот момент этого для меня было достаточно. К тому же в то время я занимался целым рядом интересных технических проектов на работе, и потребности что-то разрабатывать в свободное время тоже не ощущал.

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

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

Отсюда проистекал вопрос: что бы такое создать в свободное время? Я знал три вещи: что хочу выучить Python, заняться чем-то, связанным со сбором и анализом данных, и поместить всё это в контекст защиты данных – в этой сфере я отработал более двадцати лет.

SpiderFoot по-прежнему удовлетворял всем требованиям! И вот, в конце 2011 года, я вернулся к истокам, освоил Python настолько, чтобы хватало на первых порах, и стал заливать коммит за коммитом в новенький репозиторий на GitHub, пока наконец не опубликовал «версию 2.0» в мае 2013 года.

Именно так: понадобилось больше года коммитов, прежде чем мне хватило уверенности скроить релиз и представить его миру. Это стало первым уроком.

За десять лет, которые миновали с этих первых коммитов, я продрался сквозь учебный процесс, понемногу постигая Python, расширил масштабы проекта с нескольких модулей (так в SpiderFoot называются компоненты для сбора и обработки данных) до двух с лишним сотен, в частности, благодаря многочисленным значительным вкладам от сообщества (в первую очередь, _bcoles), и в конечном итоге пришел к этапу, когда удалось выстроить вокруг продукта успешный бизнес.

Если вкратце, вот список самых примечательных событий (в случайном порядке), через которые я прошел в ходе работы над SpiderFoot и которые подвели меня к выводам, представленным ниже:

  • Получал неожиданные письма с благодарностями: от пользователей, от предприятий, которые благодаря продукту обнаружили бреши в своей защите, от элитных компаний, предлагающих консультации по кибербезопаности, которые с его помощью завоевали новых клиентов, и даже от следователей, использовавших его в поисках пропавших людей!
  • Встречал упоминания продукта в книгах, журналах, учебных курсах и на конференциях.
  • Видел, как члены сообщества снимают о нем ролики-туториалы и пишут посты в блогах.
  • Попал в топ HackerNews, причем даже не сам себя подавал.
  • Освоил новые инструменты и технологии.
  • Совместно работал с людьми из сообщества – они помогали мне в развитии SpiderFoot, а я показывал, как использовать SpiderFoot в их проектах.
  • Построил вокруг SpiderFoot бизнес, параллельно работая на полную ставку.
  • Боролся за права на интеллектуальную собственность с тремя разными работодателями.
  • Получал предложения от потенциальных инвесторов и даже потенциальных покупателей бизнеса.
  • Выступал с разными докладами о SpiderFoot.
  • Использовал средства, заработанные на SpiderFoot HX, чтобы оплатить вклады в открытый код проекта, и даже спонсировал некоторые общественные инициативы – OSINTCurious, abuse.ch и TraceLabs.
  • Писал статьи на темы, связанные с продуктом (и эту, и другие).
  • Встречался с другими основателями и руководителями компаний, получал приглашения в различные сообщества.
  • Наблюдал, как продукт (некорректно) использовали, чтобы доказать подтасовку результатов в ходе президентских выборов в 2020 году.
  • Наблюдал, как некто тоже пытается выстроить бизнес вокруг SpiderFoot, и в конечном счете положил этому конец.
  • В общем и целом, учился распределять время между проектом, семьей, работой и друзьями (но тут мне еще учиться и учиться).

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

Урок первый: создание проекта с открытым кодом может принести много отдачи, на которую вы не рассчитывали

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

  • Слушать, как пользователи благодарят меня и рассказывают, в каких ситуациях их выручил SpiderFoot, в течение многих лет для меня было, пожалуй, лучшей наградой и источником мотивации. Многие ли могут похвалиться тем, что создали нечто такое, что послужило на благо тысяч людей и продолжает приносить пользу без дополнительных усилий?
  • Я существенно вырос и в написании кода, и в программировании в целом, с тех пор как взялся за проект, благодаря обратной связи от людей вроде _bcoles. Это помогло мне на основной работе – и в управленческих обязанностях, при работе с другими программистами, и в собственных задачах.
  • Уверен, что проект сыграл свою роль в том, что мне удалось устроиться на работу в некоторые компании и получить приглашения выступить на некоторых мероприятиях.
  • У меня появилась отличная платформа для встречи и общения со многими одаренными людьми. Проект придавал мне авторитетность в разных контекстах – люди не знали, кто я такой, но знали про SpiderFoot, и это позволяло с легкостью установить контакт.
  • В конце концов проект открыл мне коммерческие возможности и заронил семена, из которых выросла SpiderFoot HX.
  • То, что я постоянно вкладывал усилия в проект в течение долгого времени, повысило его качество и усилило положительный эффект от всего вышеперечисленного.

Кроме того, выше я не коснулся более личных и косвенных преимуществ, которые стал замечать с годами: я стал более дисциплинированным, разобрался в том, на какие компромиссы готов идти по техническим и личным вопросам, а также в основаниях своего выбора, научился лучше распределять время, находить источники энергии и способы укрепить здоровье – этот список можно продолжать.

Урок второй: настраивайтесь на долгий путь

Сколько раз вы искали проект с открытым кодом под какую-нибудь свою потребность и отметали варианты из-за того, что с последнего коммита прошло много лет или потому что единственным коммитом была вся кодовая база, сделанная одним человеком, и больше к проекту никто не притрагивался?

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

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

Урок третий: выдавайте результат, и почаще

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

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

Урок четвертый: ставьте перед собой цели общего и открытого характера

Моя цель овладеть Python на самом деле была лишь частью мотивации для работы над SpiderFoot. Другими, более широкими и долгосрочными целями были следующие:

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

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

Например, в этом году я мог бы переписать фронтенд на React или внедрить новый фреймворк для тестирования, чтобы развить свои навыки, а в следующем – перевести бэкенд на другую базу данных. А возможно, мне захочется за этот год удвоить регулярный месячный доход от SpiderFoot HX или достичь еще какого-нибудь результата в предпринимательском аспекте.

Всё это скорее направляющие принципы, а не жестко заданные цели, что позволяет мне смотреть в будущее и сохранять мотивацию изо дня в день.

Пятый урок: если есть желание, найдется и время

Когда люди узнают, что у меня есть жена и дети, работа на полный день, а также побочный бизнес в виде SpiderFoot HX, первый вопрос, который они мне задают – это всегда что-то в духе «И как вы находите время?» Конечно, было бы приятнее считать, что у меня какая-то необычайная способность сосредотачиваться (нет) или я просто программист высочайшего класса (однозначно нет), но полагаю, всё дело в нескольких простых вещах:

  • Для работы я обычно отвожу те периоды, когда знаю, что меня пару часов никто не потревожит. То есть либо раннее утро, либо поздний вечер, смотря какой режим сна изберет для себя мой годовалый ребенок.
  • Я очень мало времени провожу перед телевизором (где-то пару часов в неделю), а социальными сетями пользуюсь только для продвижения SpiderFoot (см. седьмой пункт). Основной инструмент прокрастинации у меня – это, пожалуй, чтение HackerNews, однако я не оставляю комментарии нигде, кроме как под своими постами, что ограничивает расход времени.
  • Если я не на ноутбуке и не могу писать код, то изучаю новые источники данных, ищу новые рекомендации для работы с Python, смотрю, как дела у других инструментов в моей нише, отвечаю на письма и т.д.
  • После стольких лет работа над SpiderFoot вошла у меня в привычку. Я берусь за нее без размышлений и не могу пропустить больше чем пару дней – появляется чувство, что что-то не так.

Урок шестой: всем плевать на покрытие кода тестами

Если перефразировать, людям есть дело только до двух вещей: делает ли ваша программа то, что заявлено, и хорошо ли у нее получается.

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

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

Если у вас есть что-то, что может принести пользу – просто выложите, смирите гордость, будьте открыты к указаниям на ошибки и учитесь на них. В SpiderFoot есть фрагменты воистину ужасного кода и за всё время об этом высказались всего пару раз. Какая вообще разница?

Не забывайте: проект ваш и у вас есть время его улучшить (см. пункт второй).

Урок седьмой: продвигать свой продукт не стыдно

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

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

Поэтому изучите своих пользователей и среду их обитания (Twitter? LinkedIn? TikTok?) и отправляйтесь прямиком туда. Свяжитесь с лидерами мнений в своей нише (то есть с теми, кто ведет блоги или составляет рассылки), которым может пригодиться ваш продукт и попросите его испробовать. Вы удивитесь, насколько охотно люди откликаются на просьбы авторов проектов с открытым кодом – они ценят то, что вы тратите свое время на помощь другим.

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

Урок восьмой: проясните всё с работодателем

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

Гораздо проще все утрясти с правами на интеллектуальную собственность а) до начала работы на работодателя; б) до начала работы над проектом. Я доходил даже до того, что предъявлял не существующие в реальности проекты, которые хотел бы когда-нибудь реализовать, просто для уверенности, что в обозримом будущем у меня всё схвачено.

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

Урок девятый: выстраивайте сообщество

Этот урок дался мне, наверное, тяжелее всего – в том плане, что я осознавал необходимость, но оказался не готов к тому, что это требует столько времени, и заниматься этим следовало с самого начала. Документацией я действительно занимался с самого начала, но ничего к этому больше не добавил, решив, что сойдет и так. Но в наши дни этого, похоже, уже недостаточно.

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

Вот несколько примеров:

  • Документация, видеотуториалы, посты в блоге
  • Отклик на запросы по функциональности, имплементация востребованного (если, конечно, это не идет вразрез с вашими целям и видением)
  • Создание канала в Discord или Slack, где люди могли бы задавать вопросы и помогать друг другу
  • Выступления на конференциях

Урок десятый: получайте удовольствие

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

Временами может казаться, что это просто неподъемно.

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

Нет такого правила, которое обязывало бы вас проводить слияние по каждому pull request-у, разбираться с каждой проблемой и вообще делать то, чего вам делать не хочется, по любым причинам. Если вы будете работать через силу, это со временем охладит ваш энтузиазм и может привести к гибели проекта – а вот это уже серьёзная проблема!

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

Заключение

Помимо перечисленного выше за эти годы я, разумеется, научился и многим другим вещам, в том числе и связанным с Python – в одну статью всё не поместится. Но когда я возьмусь за следующий проект (возможно, что-то на Golang?), все эти уроки останутся со мной. Надеюсь, что и с вами тоже.

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

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


ссылка на оригинал статьи https://habr.com/ru/companies/productivity_inside/articles/751522/

Почему атомы — величайшее чудо Вселенной

Один из самых удивительных фактов нашего существования был впервые постулирован более 2000 лет назад: на каком-то уровне каждая часть нашей материальной реальности может быть сведена к ряду крошечных компонентов, сохраняющих свои важные индивидуальные характеристики, которые позволяют им собираться воедино и создавать все, что мы видим, знаем, встречаем и переживаем. Эта простая мысль, приписываемая Демокриту Абдерскому, со временем переросла в атомистическое представление о Вселенной.

Хотя буквальное греческое слово «ἄτομος», означающее «неразрезаемый», не совсем применимо к атомам, поскольку они состоят из протонов, нейтронов и электронов, любая попытка «разделить» атом дальше приводит к потере его сущности: того факта, что он является определённым, конкретным элементом таблицы Менделеева. Именно это свойство позволяет ему создавать все те сложные структуры, которые существуют в нашей наблюдаемой реальности: количество протонов, содержащихся в атомном ядре.

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

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

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

Поведение атомов поистине удивительно. Рассмотрим следующие факты:

  • Они состоят из небольшого массивного положительно заряженного ядра, вокруг которого вращается большое маломассивное рассеянное облако отрицательно заряженных электронов.

  • При приближении друг к другу атомы поляризуются и притягиваются, в результате чего они либо обмениваются электронами (ковалентно), либо один атом отбирает у другого один или несколько электронов (ионно).

  • Когда несколько атомов связываются друг с другом, они могут образовывать молекулы (ковалентно) или соли (ионно), которые могут быть как простыми, состоящими всего из двух атомов, так и сложными, состоящими из нескольких миллионов атомов.

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

Существует два ключа к пониманию того, как взаимодействуют атомы.

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

  2. Электроны, вращающиеся вокруг атома, будут занимать самый низкий доступный энергетический уровень. Хотя электрон может находиться в любой точке пространства в пределах примерно 0,1 нанометра от атомного ядра, он может занимать только определённый набор значений энергии, диктуемый правилами квантовой механики. Распределения вероятности нахождения электронов в зависимости от энергетического уровня также определяются правилами квантовой механики и подчиняются определённому распределению вероятности, которое однозначно вычисляется для каждого типа атомов с любым произвольным числом связанных с ними электронов.

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

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

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

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

Хотя человек состоит из клеток, на более фундаментальном уровне мы состоим из атомов. Всего в человеческом теле насчитывается около ~1028 атомов, по количеству в нас больше всего водорода, а по массе — кислорода и углерода.

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

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

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

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

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

Это более глубокое открытие, чем может показаться на первый взгляд. Внутри атомного ядра существуют два типа составных частиц с почти, но не совсем одинаковыми массами, причём более лёгкая имеет положительный заряд, а более тяжёлая – нейтральный. Вокруг всего ядра вращаются электроны — частицы, имеющие одинаковый с протоном заряд и меньшую массу, чем разница масс протона и нейтрона внутри ядра.

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

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

Это небольшое осознание, внезапно пришедшее в голову, могло бы научить вас огромному количеству знаний о фундаментальной природе реальности.

Во-первых, оно сразу же подскажет вам, что между протонами и/или нейтронами должно существовать какое-то дополнительное взаимодействие, отличное от электромагнитной. Например, существование дейтерия (изотопа водорода с 1 протоном и 1 нейтроном) говорит нам о том, что между протонами и нейтронами существует некая сила притяжения, которую нельзя объяснить ни электромагнетизмом (поскольку нейтроны нейтральны), ни гравитацией (поскольку гравитационные силы слишком слабы, чтобы объяснить такое связывание). Должна существовать какая-то ядерная сила, связывающая нейтроны.

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

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

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

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

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

Наиболее простая и низкоэнергетическая версия протон-протонной цепочки, в которой из исходного водородного топлива получается гелий-4. Отметим, что только при слиянии дейтерия и протона из водорода получается гелий; во всех остальных реакциях либо образуется водород, либо гелий получается из других изотопов гелия.

Для того чтобы существовала Вселенная с большим количеством типов атомов, необходимо, чтобы наша реальность обладала определённым набором свойств.

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

  • Электрон должен быть менее массивным, чем разница масс протона и нейтрона, иначе нейтрон был бы абсолютно стабилен.

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

  • И, наконец, уровни энергии, достигаемые в звёздах, должны быть достаточными для того, чтобы атомные ядра внутри них подверглись ядерному синтезу, но не может быть так, что всё более тяжёлые атомные ядра всегда более стабильны, иначе мы получили бы Вселенную, заполненную сверхтяжёлыми и сверхкрупными атомными ядрами.

Существование Вселенной, богатой разнообразными атомами, но с преобладанием водорода, требует наличия всех этих факторов.

Анатомия очень массивной звезды на протяжении всей её жизни, кульминацией которой является сверхновая типа II (с коллапсом ядра), когда в ядре заканчивается ядерное топливо. На последней стадии термоядерного синтеза, как правило, происходит горение кремния, в результате чего в ядре на короткое время образуется железо и железоподобные элементы, после чего возникает сверхновая. Наиболее массивные сверхновые с коллапсом ядра обычно приводят к образованию чёрных дыр, а менее массивные — только нейтронных звёзд.

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

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


ссылка на оригинал статьи https://habr.com/ru/articles/751510/

OpenVMS: операционная система для атомных станций (часть 1). Установка и первые опыты

Есть в мире вещи, про которые говорят, что они сделаны на века. Проходят десятилетия, а они просто продолжают работать как ни в чём не бывало. Сегодня мы погрузимся в историю и расскажем про операционную систему OpenVMS, разработанную почти полвека назад в недрах Digital Equipment Corporation (DEC) для семейства компьютеров VAX.

Предыстория

Весной 2023 года на OpenNET вышла интересная новость — энтузиастам предоставлен доступ к редакции ОС OpenVMS 9.2 для архитектуры x86-64. Казалось бы, ничего особенного, но на самом деле эта ОС весьма интересна. Начну с того, что впервые она была представлена в 1977 году и до сих пор применяется в отказоустойчивых системах. Любопытство вызывает и то, что выпущенный образ должен спокойно заработать в качестве виртуальной машины для гипервизоров VirtualBox, KVM и VMware. 

Разумеется, такую штуку захотелось самостоятельно протестировать на тестовом ноутбуке. Доступ к образам выдаётся только после одобрения заявки. Форма была должным образом заполнена и отправлена. Увы, но спустя несколько дней пришёл отказ:

На этом история имела все шансы завершиться, не успев начаться. Ситуацию спасло то, что автор живёт в одной из стран Евросоюза. При общении с любыми госорганами и банками принято в качестве подтверждения адреса присылать счета за оплату коммунальных услуг. Так что в VMS Software полетело письмо с несколькими счетами за электроэнергию, интернет и услуги мобильной связи.

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

Установка в VirtualBox

Дистрибутив операционной системы, файл лицензии и дополнительный софт размещается на портале VSI Service Platform. Переходим в раздел Packages и находим следующие файлы:

X860921OE — ZIP-архив с дистрибутивом в формате ISO

X86COMMUNITYPAK — ZIP-архив с лицензией в формате TXT

Предполагается, что на вашем компьютере есть установленный гипервизор Oracle VirtualBox с плагином Oracle VM VirtualBox Extension Pack. Все действия далее выполнялись на VirtualBox версии 7.0.10.

Создаём виртуальную машину со следующими параметрами:

  • тип — Other (Unknown 64-bit)

  • основная память — 8 192 Мб (или более)

  • процессоры — 2 (или более)

  • включить EFI

  • жёсткий диск — 15 Гб (или более)

После того как виртуальная машина создана, не стоит пытаться её запускать сразу. Потребуется сделать ещё несколько важных настроек:

  • [Система] Чипсет — ICH9

  • [Система] Включить I/O APIC

  • [Носители] Удалить Контроллер IDE

  • [Носители] Добавить Контроллер AHCI Тип AHCI

  • [Носители] Добавить виртуальный жёсткий диск, созданный ранее

  • [Носители] Создать и добавить ещё один виртуальный жёсткий диск под sysdump.dmp

  • [Аудио] Убрать галочку «Включить аудио»

  • [Cеть] Тип подключения — Виртуальный адаптер хоста

  • [Cеть] Дополнительно — Intel PRO/1000 MT Desktop

  • [COM-порты] Порт 1 — Включить последовательный порт

  • [COM-порты] Порт 1 — Убрать галочку «Подключаться к существующему сокету/порту»

  • [COM-порты] Порт 1 — Режим порта TCP

  • [COM-порты] Порт 1 — Путь/адрес 1111

Запуск установки

Перед тем как приступать к установке, надо отключить механизм безопасной загрузки Secure Boot. Это делается в прошивке EFI, для чего сразу после запуска выбираем раздел Device ManagerSecure Boot Configuration. Убираем крестик с пункта Attempt Secure Boot. Дважды нажимаем ESC, выбираем пункт Reset и подтверждаем с помощью Enter. Это действие отключит Secure Boot.

Теперь из главного меню выбираем Boot ManagerEFI Internal Shell. В загруженной оболочке вводим FS0:\efi\vms\vms_bootmgr:

Полученный загрузочный экран достаточно информативен. OpenVMS использует собственную нумерацию дисковых устройств, отличную от той, которую мы привыкли видеть. Система подсказывает нам, что смонтированный ISO-образ определился как DKA100. Теперь нужно загрузиться с него, введя BOOT и подтвердив нажатием Enter. Это будет равносильно команде BOOT DKA100 0 00000000.

Начнётся процесс загрузки OpenVMS Installation Kit. После того как показатель загрузки достигнет 100%, графический вывод будет отключён в целях безопасности. Дальнейшую установку нужно выполнять в текстовой консоли, подключившись к COM-порту через Telnet.

Подключение к консоли

Старые технологии хороши тем, что для них придумали и создали множество реализаций клиентов. Протоколу Telnet уже 40 лет, и клиентов для него хоть отбавляй. Мы решили отправиться в прошлое и выполнить аутентичное подключение из OS/2 Warp 4. В состав этой операционной системы входил отличный клиент TelnetPM. Перед подключением проверяем параметры в меню Options:

  1. Убираем параметр Local echo

  2. Carriage return — выбираем Carriage return only

Если проигнорировать первый пункт, то все данные, введённые вами в консоли, будут задваиваться. Второй пункт более важен, поскольку на этапе ввода пароля системного пользователя после нажатия Enter (Return) будет автоматически посылаться непечатный символ протяжки (line feed). Система не может его распознать и выдаст ошибку, что вы использовали некорректный символ.

В очень старых компьютерах устройством ввода служила электрическая печатная машинка. В неё вставляли не отдельный лист бумаги, а целый рулон. Всё, что вы вводили, одновременно отпечатывалось на бумаге и отправлялось в ЭВМ. Нажатие Return возвращало каретку ввода к началу той же самой строки. Для начала следующей строки требовалось протянуть рулон бумаги. Именно это и пытается эмулировать TelnetPM.

Подключаемся и запускаем установку:

Также можно подключиться, используя PuTTY. Там предварительно надо проверить настройки в разделе Terminal:

  1. Отключить Implicit CR in every LF

  2. Отключить Implicit LF in every CR

  3. Переключатель Local echo выставить Force off

  4. Переключатель Local line editing выставить Force off

Установка

Как только загрузилось меню:

  1. Выбираем пункт 1 (Upgrade, install or reconfigure OpenVMS X86-64 Version E9.2-1).

  2. Система спросит, является наша установка новой или существующей (INITIALIZE или PRESERVE). Поскольку это новая установка, вводим INITIALIZE. Регистр не имеет значения.

  3. Теперь пора выбрать, на какой диск производить установку. Чтобы ничего не перепутать, вначале запросим список доступных дисков, введя знак вопроса ?. В полученной таблице находим диск, обозначенный VBOX, и вводим его имя — в нашем случае DKA0.

  4. Метку диска можно оставить по умолчанию, то есть X86SYS. Просто нажимаем Enter.

  5. Девятая версия OpenVMS требует, чтобы в качестве файловой системы использовалась ODS-5. Это пятая версия ФС семейства Files-11. Поскольку у ODS-5 опционально поддерживались жёсткие ссылки, то установщик спросит, включить ли эту самую поддержку. Ответим положительно — Yes.

  6. В терминале появится небольшое summary по предыдущим ответам. Если всё правильно, то подтверждаем наше желание отформатировать жёсткий диск и продолжить установку. Ещё раз ответим Yes.

  7. Теперь важный момент: пришла пора задать пароль суперпользователя. В Windows такой пользователь называется Administrator, в Linux — root, а в OpenVMS — SYSTEM. Пароль — минимум 8 символов. Вводимое не будет отображаться на экране по соображениям безопасности. Подтверждаем нажатием Enter.

  8. Система попросит ввести пароль повторно. Вводим — и ещё раз Enter.

  9. В 1975 году DEC разработала собственный стек протоколов DECnet для одноранговой сети между компьютерами PDP-11. DECnet активно развивался и встраивался во все операционные системы Digital. Каждое поколение получало название, состоящее из слова Phase и римской цифры. Например, DECnet Phase IV. К 1987 году cтeк получил поддержку сетей неограниченного размера и даже TCP/IP. Эта пятая фаза (Phase V) получила название DECnet/OSI, а впоследствии была переименована в DECnet-Plus. Чтобы корректно настроить сетевую подсистему для работы в сетях DECnet, надо задать уникальное символьное имя ноды (SCSNODE). Мы решили назвать ноду OPNVMS.

  10. Вторым важным параметром работы в сети DECnet является уникальный идентификатор (SCSSYSTEMID). Система задаст вопрос: планируется ли использование DECnet? Отвечаем положительно — Yes.

  11. Инсталлятор предложит использовать адрес 1.1 в сети DECnet. Соглашаемся с ним, подтверждая нажатием Enter. Система сама сгенерирует и задаст SCSSYSTEMID.

  12. Правильное исчисление времени жизненно важно для любой операционной системы. Задаём наше местоположение EUROPE, введя цифру 20.

  13. Выбираем город, например ATHENS, введя 4. Значение для Москвы — 34.

  14. Проверяем выбранную таймзону EUROPE / ATHENS и подтверждаем, введя Yes.

  15. Законодательство о переводе на летнее/зимнее время в разных странах по-разному регламентирует этот вопрос. Если в вашей стране перевод на летнее/зимнее время есть, то ответьте положительно — Yes.

  16. Инсталлятор попросит ввести Time Differential Factor, например 3:00, и переспросит, верно ли, что NEW SYSTEM TIME DIFFERENTIAL FACTOR = 3:00. Подтверждаем — Yes.

  17. Теперь будет вопрос про наличие у вас так называемых PAKs (Product Authorization Keys). Конечно, у нас есть лицензионный PAKs комьюнити-редакции, но рекомендуем выбрать No. В случае положительного ответа вам надо будет вводить кучу параметров для каждого из устанавливаемых продуктов. Проще это сделать потом, скопировав файл по сети и запустив в качестве COM-скрипта. Мы расскажем об этом в следующей статье, посвящённой OpenVMS.

  18. Следующий вопрос будет про устанавливаемые пакеты. Первым система спросит про DECwindows Motif for OpenVMS X86-64 V1.8. Это графическая оболочка, собственная клиент-серверная реализация X Window System. Говорим Yes. Сразу оговоримся, что работать без лицензии она всё равно пока не будет. Поскольку мы пропустили введение PAKs, доступна только установка.

  19. Теперь предстоит выбрать, будем ли мы устанавливать DECnet Plus. Поскольку мы хотим работать с TCP/IP, то также отвечаем положительно — Yes.

  20. В процессе установки можно получать либо детальную, либо общую информацию. Согласимся на получение детальной информации — Yes.

  21. Инсталлятор начнёт проверять установочные пакеты и, если всё хорошо, задаст три вопроса относительно настроек устанавливаемого софта. Дважды вводим Yes, отвечая, что готовы на дефолтные настройки, и разрешая перезагрузить сервер автоматически после первой успешной загрузки. Это нужно для применения автоматически сгенерированных конфигов. А на вопрос о ревью настроек можно сказать No, что финально запустит процесс инсталляции.

Наливаем кофе и ждём, пока процесс завершится. Даже на мощной машине это займёт не менее 10 минут. После соответствующего запроса (Press Return to continue…) нажимаем Enter и возвращаемся в главное меню установки. Мы выбрали пункт 9 (Shut down this system) и нажали Enter. Система выполнит отключение и попросит нажать любую клавишу для перезагрузки. Нажимаем пробел и закрываем виртуальную машину.

Останется только отмонтировать установочный диск и заново запустить VM. В консоли BOOTMGR> введите BOOT DKA0. Это первый запуск системы, в процессе которого она создаст все дефолтные конфиги и автоматически перезагрузится. Только после этого мы получим скромное приглашение ввести имя пользователя и пароль. В качестве имени пользователя вводим SYSTEM, а в качестве пароля тот, который задали при установке. Поздравляем, вы установили OpenVMS.

Заключение

Когда мы только начинали работу над статьёй, то не могли подумать о том, что установка ОС — лишь первый этап подготовки системы к работе. Оказалось, что даже банальная процедура активации комьюнити-лицензий весьма нетривиальна. Так что вас ждёт часть 2, в которой мы вначале активируем сеть TCP/IP, подключим OpenVMS к интернету и только потом выполним активацию остальной части PAKs.

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

А вам доводилось использовать OpenVMS? Ждём вас в комментариях.


ссылка на оригинал статьи https://habr.com/ru/companies/ru_mts/articles/751530/

Революционные IDE, повлиявшие на разработку ПО

В старину при написании кода вы видели лишь чёрный текст на белом фоне. Для того чтобы писать код, требовалось много внимания и аккуратности. Опечатки не подсвечивались автоматически, а синтаксические ошибки обнаруживались только в процессе компиляции. По сравнению с современным программированием это был совершенно иной процесс.

Asymetrix ToolBook, когда-то популярный благодаря мультимедийным возможностям, но уже давно позабытый

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

▍ 10. THINK C

При создании приложения для первого Macintosh необходимо было использовать Macintosh Programmer’s Workshop (MPW). Так как Macintosh сильно опережал другие системы своего времени благодаря своему графическому интерфейсу пользователя, программирование для него было совершенно иным процессом, чем, например, разработка для систем наподобие DOS. MPW компании Apple был предназначена для опытных программистов и имела приличную цену. Когда в середине 1986 года Think Technologies выпустила Lightspeed C, это существенно упростило программирование на Macintosh.

THINK C Version 3, ранее Lightspeed C

Think C (ранее называвшаяся Lightspeed C) стартовала столь мощно, что знаменитый журнал BYTE в сентябре 1986 года назвал её продуктом месяца. Она сочетала в себе мощные возможности, простой GUI и чрезвычайно конкурентоспособную цену примерно в $200 (около $500 по современным ценам), притом, что за MPW C просили больше $600 (больше $1500 по современным ценам). Think C также имела отладчик уровня исходного кода, который сегодня мы воспринимаем как нечто само собой разумеющееся.

Приложение ResEdit для Macintosh

Так как интерфейс пользователя Macintosh был чем-то новым и неслыханным, разработчикам нужна была возможность создавать пользовательские интерфейсы. Apple продавала небольшой инструмент под названием ResEdit, который распространялся как отдельный продукт или как часть пакета MPW. Отдельно он стоил примерно $100-$200 (сегодня около $500). В те времена программирование было дорогостоящим занятием. Сегодня WYSIWYG-редакторы GUI стали бесплатным и стандартным дополнением любой современной IDE, ResEdit оказался первым нативным WYSIWYG-редактором GUI.

▍ 9. Apple Xcode

Задолго до выпуска в 2007 году iPhone компания Apple выпустила IDE под названием Xcode, бывшее основным и единственным официальным IDE Apple для создания приложений MacOS, iPhone, iPad, WatchOS, CarPlay и всех других платформ экосистемы Apple. Когда Apple перешла с классического Macintosh на OSX, разработчикам пришлось сильно меняться. THINK C, Apple MPW и CodeWarrior на Macintosh System 8+ предназначались для C и C++, а на новой OSX преимущественно использовался Objective C с Xcode IDE на основе NextStep.

Программирование на NextStep — заметили что-нибудь похожее на Xcode?

Появление Xcode также ознаменовало конец многих IDE для системы Macintosh, которые не портировали IDE целиком и все библиотеки времени выполнения на новую OSX, по сути, являвшуюся NextStep. Все библиотеки и объекты на новой OSX идентифицировались префиксом NS, подчёркивающим их происхождение от NextStep. Кроме новизны самой Xcode, полностью сменилась и парадигма Apple. Разработчиков для экосистемы Apple и в прошлом, и в настоящем в большей или меньшей степени вынуждали использовать среду разработки Apple. Это уже было частично справедливо в случае MPW, но с появлением Xcode стратегия замкнутой экосистемы «огороженного сада» усилилась.

Xcode 15 с горячей перезагрузкой при сборке приложений для iOS

Хотя для MacOS позволяют писать программы многие другие IDE, например, MonoDevelop, с появлением iOS для iPhone, iPadOS для iPad, watchOS для Apple Watch и CarPlay для автомобильных развлекательных систем разработчики практически были вынуждены пользоваться Xcode, если хотели иметь доступ ко всей экосистеме Apple и всем возможностям. С другой стороны, ежегодная плата в $99 за программу Apple Developer — это справедливая цена, учитывая, что она включает в себя все инструменты разработки и распространение через Apple App Store.

Xcode — это, вероятно, первая IDE для большой замкнутой экосистемы. Это потрясающая IDE с огромными преимуществами замкнутой экосистемы, хотя у неё иногда возникают трудности с поспеванием за прогрессом. Появление языка программирования Swift как замены Objective C повысило привлекательность разработки для платформ Apple.

▍ 8. vim

Выпущенный в 1976 году vi (расшифровывается как Visual) и vim (расшифровывается как Vi Improved) стал практически стандартным редактором для Unix и Linux. Да, существует emacs, и это тоже хороший редактор. Однако в 2015 году на Stack Overflow проводился опрос, который выявил, что vim используется шире, чем emacs. Как vim удалось выжить, учитывая множество появившихся за эти годы современных IDE?

Ответ очень прост: он не отставал от времени. В нём есть подсветка синтаксиса, отладка замечательно работает, а сам vim быстр. Очень быстр. Как только вы освоитесь с горячими клавишами, то не захотите пользоваться ничем иным даже для простого редактирования. Особенно если вы всё равно целый день работаете в терминале.

VIM, Vi IMproved 9.0 в Warp Terminal на macOS

Vim также обладает преимуществом высокой портируемости между всеми операционными системами. Он может работать в Windows, Linux, Mac, больших мейнфреймах, MacBook и сетевом роутере. Благодаря этой портируемости vim доступен разработчикам на любой платформе, которым потребуется удобное редактирование файлов конфигурации, исходного кода и многого другого. Более новые версии, например, Neovim, ещё больше повышают удобство разработки, придерживаясь при этом функциональности vi и vim. Вполне вероятно, что vim проживёт ещё много десятков лет. Это был один из первых и самых популярных редакторов для Unix и по-прежнему остаётся главным выбором в Linux и Unix. Особенно любят опытные разработчики vim за его скорость и удобную работу с клавиатуры.

▍ 7. CodeWarrior

Когда Apple перешла с процессоров 68k на платформу PowerPC, компании наподобие Symantec, владевшей тогда THINK C, вынуждены были выполнять миграцию своих IDE на новую процессорную архитектуру. Компания под названием MetroWerks работала над новым CodeWarrior IDE со многими участниками бывшей команды разработки THINK C. CodeWarrior известна своей простотой использования, меньшим по сравнению с MPW компании Apple временем компиляции и привлекательной ценой. Её первый релиз вышел в 1993 году.

CodeWarrior 4.1 на Mac OS 9 с архитектурой PowerPC

За промежуток времени с 1994 до 2002 года CodeWarrior стала доминирующей IDE разработки приложений для Mac OS 8 и 9. В своей истории развития Apple переходила от процессоров 68k к PowerPC, потом к Intel, а затем на новые Apple Silicon с архитектурой arm64. Каждая смена аппаратной платформы становится полным кошмаром для производителей IDE. THINK C и CodeWarrior оказались единственными IDE, получившими серьёзную долю рынка профессиональной разработки ПО на Macintosh с конца 80-х до начала 2000-х. Но и их потом вытеснила собственная IDE Apple — Xcode. И не потому, что Xcode была существенно лучше, а благодаря тому, что Apple смогла вынудить разработчиков пользоваться Xcode, сильно усложнив выживание на платформе сторонним IDE.

▍ 6. IntelliJ IDEA

Когда в середине 1990-х появился язык Java, IDE для него было мало. Часто при написании кода на Java использовались простые редакторы, а код компилировался в командной строке. Вероятно, первыми выдающимися IDE для Java стали Netbeans и Microsoft Visual J++. IntelliJ IDEA была выпущена в январе 2001 года и имела продвинутые функции навигации по коду и рефакторинга.

IntelliJ IDEA имела все функции, которые только можно представить

IntelliJ и по сей день считается одной из самых продвинутых IDE. Вероятно, ей может бросить вызов только полнофункциональная Microsoft Visual Studio. Кроме наличия в ней всех воображаемых функций, IntelliJ также продемонстрировала превращение IDE из легковесных редакторов кода в (иногда монструозные) среды разработки с бесконечными вариантами настройки. Разработчикам иногда требуется несколько дней, чтобы освоиться в новых современных IDE. IntelliJ начала эпоху полнофункциональных интегрированных сред разработки, вместивших все необходимые разработчикам инструменты в одно приложение.

▍ 5. Eclipse

Примерно во время появления IntelliJ была выпущена Eclipse. Хотя Eclipse изначально предназначалась для языка программирования Java, она быстро расширилась на все известные нам языки. Более того, обширная среда плагинов позволяла делать всё и со всем. Конечно, IntelliJ и сегодня можно использовать со множеством разных языков, например, PHPStorm для PHP, и многими другими, Eclipse, по сути, стала первой IDE, нацеленной на многоязычность, многоплатформенность и многофункциональность.

Разработка на C++ в Eclipse IDE

Нет почти ничего, что нельзя было бы собрать при помощи Eclipse. От C++ до PHP, Python и Go.
В Eclipse есть плагины для всего. Eclipse начала эпоху открытой среды разработки, которую может использовать каждый для создания собственной IDE. В конечном итоге, Eclipse временами кажется слишком хаотичной, однако несмотря на своё будущее и недостатки, Eclipse заслужила особое место в зале славы, потому что дала свободу рынку сред разработки. Я написал своё первое приложение Google App Engine в Eclipse в 2008 году. На пике популярности Eclipse компания Microsoft всё ещё продавала свои среды разработки за внушительные суммы. Eclipse была бесплатной, полнофункциональной и влюбляла в себя разработчиков с первого взгляда.

▍ 4. Dreamweaver, Flash и Fireworks

1995-й и последующие годы стали временем бурного развития world wide web и появления таких должностей, как веб-мастер, а позже и веб-разработчик. Большинство IDE того времени, например, выдающаяся Visual C++ 1995 года, проектировалось под разработку приложений для десктопов и серверов. С точки зрения дизайна предлагаемый ими максимум заключался в конструкторе WYSIWYG GUI для целевой операционной системы, позволяющем проектировать окна, списки и кнопки. Для браузера они ничего предложить не могли.

Dreamweaver UltraDev — IDE для веб-разработки, выпущенная в декабре 2000 года

Именно в это время компании наподобие Macromedia выпустили свои продукты. ПО Macromedia Dreamweaver было WYSIWYG-редактором HTML, а позже CSS и JavaScript. Первая версия Dreamweaver была только для Macintosh, за ней последовала и версия для Windows. Пик популярности Dreamweaver пришёлся на время пузыря Новой Экономики в 1999-2002 годах. Dreamweaver UltraDev 4 была самой совершенной IDE для веб-разработки того времени. В ней не только присутствовали функции разработки для фронтенда (JavaScript, HTML и CSS), но и имелась поддержка Microsoft ASP с серверным JavaScript и Visual Basic, JSP, PHP и собственного ColdFusion компании Macromedia.

Macromedia Flash ушла навсегда, но мы будем помнить её вечно

Macromedia Flash и её скриптовый язык ActionScript предоставляли безграничные возможности создания любых мультимедийных приложений, запускаемых в браузере с установленным плагином Flash. Кто-то всегда будет помнить её как кошмар, для других это был невероятный опыт. При помощи Flash люди создавали свои первые игры для веба, на первых популярных сайтах потокового воспроизведения видео и аудио использовался Flash, а владельцы веб-сайтов любили анимированные заставки на главной странице. Flash и программирование на ActionScript стали идеальным представителем той эпохи, какой она нам запомнилась.

Macromedia Fireworks: WYSIWYG-редактор графики и HTML

Рассказ об инструментах веб-разработки Macromedia был бы неполон без упоминания Fireworks. Хотя Flash, учитывая существование ActionScript, можно считать средой разработки, Fireworks похожа на редактор векторной графики. Однако в Fireworks есть интегрированный генератор кода, позволяющий нарезать графику, встраивать анимации и экспортировать HTML-содержимое, в том числе и необходимые фрагменты кода на JavaScript. Dreamweaver, Flash и Fireworks были неслыханными WYSIWYG-инструментами, поднявшими понятие WYSIWYG на совершенно новый уровень. Хотя Dreamweaver по-прежнему существует, Flash и Fireworks были заброшены после приобретения Macromedia компанией Adobe. Сегодня Dreamweaver является частью Adobe Creative Cloud. Если вам интересна история веб-разработки, то прочитайте мою статью A tale from 30 years of HTML.

▍ 3. Microsoft Word and Excel

Несмотря на мемы о людях, пишущих код в Microsoft Word, любой, нажимавший ALT+F11 в Excel для Windows, знает, что к чему. В Word, PowerPoint и Excel есть полнофункциональная среда разработки Visual Basic For Applications. Сама IDE очень похожа на Visual Basic 6 1998 года и позже. В ней используется исключительно Visual Basic 6 (также называемый VB6). Впервые VBA появился в Excel в 1993. Билл Гейтс представлял VBA как универсальный язык макросов, и именно такую функцию он выполнял десятки лет.

Visual Basic for Applications (VBA) в Microsoft Excel для Windows

Электронные таблицы и, в частности, Excel были основным бизнес-приложением на компьютерах, начиная с 1980-х. По популярности с ними были сравнимы только текстовые редакторы наподобие Microsoft Word и приложения для создания презентаций наподобие Microsoft PowerPoint. Возможность наличия полной IDE с новым Visual Basic 6 внутри Microsoft Excel позволяла пользователям подключать электронные таблицы к любому источнику данных и заставлять их выполнять любые задачи. Хотите автоматически собрать список сетевых хостов в локальной сети в таблицу? Excel и VBA могут сделать это автоматически.

Конструктор форм и редактор VBA в Microsoft Word

VBA не ограничен простыми алгоритмами и базовыми макросами. Он включает в себя полный конструктор GUI, классы, модули и практически всё, что есть в VB6. Это превращает обычные листы Excel, документы Word и презентации PowerPoint в готовые приложения. VBA — это секрет, стремительно завоевавший пакету Microsoft Office доминирующее положение на рынке. IDE больше не были отдельными приложениями, теперь в крупных приложениях имелся свой IDE. Это ознаменовало начало эпохи расширения стандартных приложений при помощи IDE, интегрированных в сами приложения.

▍ 2. Borland C++ Builder и Delphi

Название Borland было известно всем в мире сред разработки ПО в 1980-х, 1990-х и до начала 2000-х. У Borland имелись знаменитый C++ Builder, Delphi как потомок Turbo Pascal, купленная компанией dBase и многое другое. При обсуждении IDE в 90-х было не обойтись без упоминания Borland. Многие из выдающихся приложений для Windows 90-х были написаны при помощи ПО Borland. Вузы учили молодых разработчиков на C++ в Borland Builder. Лично я сам изучал C и C++ в ПО Borland для DOS и Windows.

Десктопное приложение на C++ в Borland C++ Builder

Delphi была для Borland тем, чем был Visual Basic для Microsoft. В конце 90-х и начале 2000-х сообщества Visual Basic и Delphi были очень популярны. Delphi, являясь диалектом Object Pascal, жива по сей день и остаётся самым серьёзным конкурентом Microsoft Visual Basic. В обеих IDE Borland имелись продвинутые редакторы GUI, имевшие множество мелких преимуществ перед продуктами Microsoft. Кроме того, Borland предлагала более широкий спектр элементов управления пользовательским интерфейсом, а Microsoft придерживалась стандартных компонентов Windows.

IDE Delphi 4 компании Borland

Многие годы Borland C++ и Delphi конкурировали с Microsoft Visual C++ и Visual Basic. В этой фазе ожесточённой борьбы между Borland и Microsoft были придуманы одни из самых мощных функций, например, автозавершение кода, сложная подсветка синтаксиса, простые в использовании компоненты, упрощённые абстрактные системные API и многое другое. Многие помнят браузерные войны той эпохи, однако разработчики вспоминают и войны IDE, происходившие в то же время между Microsoft и Borland.

▍ 1. Microsoft Visual Studio

Номер один, неоспоримый чемпион в тяжёлом весе среди интегрированных сред разработки за тридцать лет — это Microsoft с её ПО Visual Studio, развивавшееся с Visual C++ и Visual Basic до Visual Studio .NET с C# и Visual Studio Code. С момента основания Microsoft компания делала упор на разработку ПО и инструменты для него. Microsoft BASIC был фундаментальным продуктом компании. Microsoft — гигант в продаже ПО, но по своей сути это гигант в разработке ПО.

Microsoft Visual C++ 6.0 для Windows 95/98/NT4

Знаменитая речь (или, скорее, танец) Стива Балмера «разработчики, разработчики, разработчики» не просто стала Интернет-мемом на все времена. Она также подчеркнула важность для Microsoft постоянного привлечения разработчиков и обеспечение большой доли рынка в сообществе разработчиков ПО. Пока кто-то задавался вопросом, зачем Microsoft купила Github, инсайдеры хорошо понимали, что Microsoft не хочет позволить никому бросать ей вызов в мире инструментов и сервисов для разработки ПО.

Microsoft Visual Basic 3.0 для Windows 3.1

Microsoft Windows 3 и её графический интерфейс пользователя — не стали чем-то новым, ведь уже существовал Macintosh. Однако ситуацию полностью изменила Microsoft Visual Basic IDE. В Visual Basic появилась возможность перетаскивать элементы интерфейса или управления на холст окна. Благодаря этому, Microsoft начала в 1991 году эпоху визуального программирования. Разработчики теперь могли визуально проектировать приложение с чётким видением интерфейса пользователя, а значит, и UX. Это ознаменовало начало эры дизайна ПО для пользователей.

Microsoft Visual Basic 6.0 — успех Microsoft на рынке IDE

Visual Studio 6 стала поворотным моментом для Microsoft и Visual Studio. Это была первая Visual Studio для работы с базами данных, способностью собирать приложения и библиотеки для Windows, Pocket PC серверных приложений для IIS с ASP, элементы управления ActiveX, и многое другое. Кроме того, Visual Studio 6 можно было расширять, чтобы создавать сборки для платформ наподобие PalmOS. Компоненты ActiveX и COM позволили использовать в Windows сторонние компоненты.

Microsoft Visual Studio .NET в Windows XP, 2002 год

В 2000 году Microsoft выпустила новый язык программирования C#, который станет соперником популярного языка Java и будет использовать новый фреймворк .NET. Фреймворк .NET был полной библиотекой классов, абстрагирующей Windows API. Также был выпущен Visual Basic .NET, дающий Visual Basic более беспроблемный доступ к функциональности Windows через фреймворк .NET. Microsoft Visual Studio продолжила эволюционировать и превратилась в богатую функциями монструозную среду, сравнимую с IntelliJ IDEA.

Последняя Visual Studio запросто может конкурировать с IntelliJ как в плохом, так и в хорошем

Учитывая, что IDE стали ещё больше, прожорливей к ресурсам и тяжеловесней, а все их функции и сложность не были нужны многим разработчикам, в начале 2010-х постепенно началась тенденция перехода более простым редакторам. Благодаря редакторам наподобие Sublime Text, выпущенному 2008 году, Github Atom, выпущенному в 2015 году и Notepad++, уже завоёвывавшему долю рынка с 2003 года, масштаб перехода от полнофункциональных IDE обратно к редакторам был существенным. Microsoft быстро отреагировала на эту тенденцию и выпустила в 2015 году легковесную среду разработки Visual Studio Code.

Microsoft Visual Studio Code, сокращённо VSC или Code

Согласно опросу разработчиков, проведённому в 2022 году StackOverflow, 74,48% разработчиков использовало Visual Studio Code. Microsoft уже тридцать лет продолжает доминировать на рынке IDE, имея долю рынка намного больше 60%. Сегодня VSCode поддерживает все языки программирования, работает в Windows, macOS и Linux. Благодаря Github, Copilot она предоставляет самые современные функции автоматического завершения кода при помощи ИИ. Она поддерживает контроль версий, отладку, расширения и просто бесконечное количество возможностей.

Ни одна компания за прошедшие тридцать пять лет не внесла такой вклад в развитие интегрированных сред разработки, как Microsoft. Именно поэтому Microsoft и семейство Visual Studio заслуживают первого места в списке революционных IDE, повлиявших на разработку ПО.

Telegram-канал с розыгрышами призов, новостями IT и постами о ретроиграх 🕹️


ссылка на оригинал статьи https://habr.com/ru/companies/ruvds/articles/751516/