2.5 Спринт
После нескольких месяцев бюджет утвержден, и проект создания новой архитектуры сайта идет полным ходом. Он даже получил название Project Excelsior (Проект «Все выше и выше»). Отлично. Снова появляется человек в темно-сером пиджаке и проверяет с вами каждую неделю, как идут дела.
Он приносит документы, каждый из которых имеет свое название. Функциональные требования представляют собой комплект, по крайней мере, тысячи формулировок о том, как правильно пользователь должен щелкать кнопкой. «После получения доступа на веб-стрраницу пользователь, если он зарегистрировался и вошел в систему, будет идентифицирован по имени и получит разрешение. В противном случае, ему будет предложено зарегистрироваться и создать аккаунт (смотри последовательность выполняемых действий для регистрации пользователя)».
Господи, смилуйся над нами. С этого момента, вы знакомитесь с перечнем разных сообщений об ошибках. Он представляет собой детальный список всех описаний, как в словесном виде, так и в форме диаграмм. Своеобразная программа, которая не существует.
Некоторые виды функциональных требований представлены в виде «историй пользователей», кратких рассказов о лицах, которые пользуются сайтом, например, «Как посетитель этого веб-сайта я хочу поискать продукты, чтобы быстро приобрести то, что мне нужно».
Кроме того, существует еще нечто, что человек в темно-сером пиджаке называет макетами в натуральную величину каркасной модели, которые служат изображением того, как будет выглядеть веб-сайт, созданный программой, изображающей все в виде выполненных вручную чертежей. Несмотря на то, что модель сформирована компьютером, она имеет волнообразную форму. И сделано это для того, чтобы все поверили в осуществление проекта и воспринимали его всерьез. Покровительственно, но соглашаясь с доводами.
Вы редко увидите человека в темно-сером пиджаке собственной персоной, поскольку он всегда на конференциях, всегда присутствует на заседаниях экспертных групп. Затем он помещает в «Твиттере» соответствующую информацию о комиссиях и отмечает их на своей популярной странице в LinkedIn. Часто он фотографирует аудиторию со сцены, и на снимках вы можете увидеть в основном мужчин, многие из них носят бороды и большинство устремило свой взгляд в лэптоп вместо того, чтобы смотреть на выступающих. Тем не менее, запись в «Твиттере», которая сопровождает фотографию, просто разрывается от возгласов: «Аудитория ИЗУМИТЕЛЬНАЯ! @панель по вопросам архитектуры #микрослужбы на #ArchiCon2015».
Он часто говорит вам, насколько важна эта экспертная панель для набора специалистов. Кто бы спорил? Взять на работу старшего программиста стоит столько же, что и нанять исполнительного управляющего среднего уровня. Поэтому, возможно, посещение подобных конференций является его работой, и на протяжении двух месяцев, которые он провел с вами, он взял на работу четырех сотрудников, из которых два последних работали в Бостоне и Венгрии, в тех местах, где у вас нет своего представительского офиса.
Но что ему до этого? Каждый день он проводит 15-минутные совещания «стоя» через так называемый Slack, который, по сути, является вариантом Google Chat, и программисты подтверждают, что такой вариант обеспечивает превосходную и плодотворную работу.
«Я отслеживаю подтверждения», утверждает человек в темно-сером пиджаке. Это означает, что каждый день он проверяет код, а члены его команды фиксируют все в письменном виде, чтобы убедиться, что он хорошо организован. «Никто не форсирует события и не добивается создания кода без проведения тестов. У нас все хорошо».
Если сравнивать ваши встречи, то они длятся несколько часов, люди сидят за столом и внимают. И вы удивляетесь, как он заставляет своих программистов подняться? Но некоторые уже пользуются рабочими столами на высоких ножках. Возможно, это как раз именно то, что надо. Честно говоря, вам тоже хотелось бы посетить иногда конференции, а также побыть в составе экспертной группы. Вы могли бы попить водички и поразглагольствовать.
2.6 Что нам делать с этими конференциями?
Конференции! Веб-сайт Lanyrd выкладывает списки сотен конференций по вопросам технологий лишь только за один месяц! Это и встреча специалистов по тестированию программного обеспечения в Чикаго, конференция по «Твиттеру» в Сан-Паоло, конференция по управлению контентом предприятий в Амстердаме, в одном только Нью-Йорке: Big Apple Scrum Day, Razorfish Tech Summit, учебный лагерь по вопросам предпринимательства для ветеранов, конференция, посвященная цифровому картографированию, много конференций для торговцев цифровыми продуктами, одна для специалистов Node.js, одна – Ruby, одна – по Scala (это все языки программирования), несколько деловых завтраков, конференция по каскадным таблицам стилей (язык CCS), одна для текстовых аналитиков и нечто под фантастическим названием Employee Engagement Awards (Награда за Вовлеченность Сотрудников в Рабочий Процесс).
Конференции по вопросам технологий выглядят именно так, как вы их представляете. Скопище лиц в отеле «Шератон», основной доклад – в шикарном зале Ballroom D. Или огромные потоки участников, прогуливающихся в South by Southwest Остин, штат Техас. Прибывшие собираются в группы и посещают заседания экспертных групп, якобы для получения знаний, они слушают презентации и совершенствуют свои навыки. Но есть еще и вторичная функция конференции, это – акультуризация, или заимствование черт чужой культуры. Вы посещаете конференции по вопросам технологий, чтобы подтвердить свою племенную идентичность, выделить себя из толпы дилетантов и попасть в мир профессионалов. Вы хватаете добычу и общаетесь с поставщиками, если это именно то, что вам нужно.
Первый ряд: конференция для разработчиков Google I/O, Сан-Франциско, май 2013, TechCrunch Disrupt NYC, май 2011; Конференция «Глобальный мобильный интернет», Пекин, апрель 2015
Второй ряд: Nvidia GPU, Сан-Хосе, сентябрь 2010; Интерактивный Фестиваль South by Southwest (SXSW), Остин, март 2013; Конференция разработчиков Apple Worldwide (WWDC), Сан-Франциско, июнь 2008
Третий ряд: TechCrunch Disrupt, Нью-Йорк, май 2012; Конференция Re:publica, Берлин, май 2015;
Четвертый ряд: Интерактивный Фестиваль South by Southwest (SXSW), Остин, март 2014; Конференция разработчиков Apple Worldwide (WWDC), Сан-Франциско, июнь 2015; Конференция по информационным системам Bloomberg,Сан-Франциско, июнь 15-16, 2014
Конференция по вопросам технологий – это место, где полностью представлена динамика приматов, где могут быть установлены взаимоотношения между властью и иерархией. Есть основные докладчики. Часто это лица, создающие технологию, которая является главной темой конференции, или разрабатывают заданный язык. Есть обычные докладчики, которым или вовсе не платят, или оплачивают только авиаперелет. В своих выступлениях они представляют некоторые идеи, технологию, или подход. Затем, есть экспертные панели, куда входят лица, создающие видимость взаимодействия, в то время, как слушатели проверяют свою электронную почту.
Я немного опущу панели. Они, как правило, меняются. Но я не уверен, зачем они существуют.
Есть еще одна вещь, которая касается конференций по вопросам технологий: слишком много сексуальных домогательств и сексистского контента. Что само по себе является глупостью, поскольку компьютеры – тупые камни, у которых отсутствуют гениталии, но это реальность. Проблема широко распространена:
Женщины, связанные с программным обеспечением, натерпелись, начали писать об этом, публиковать в блогах. Другие женщины сделали то же самое. Конференций проходит много, и было ещё больше сообщений о домогательствах. Язык Ruby, предпочитаемый язык братства стартаперов, получил худшую репутацию. На конференции по Ruby в 2009 году кто-то выступил с речью озаглавленной «Perform Like a Pr0n Star» c вызывающими слайдами.
Подобное поведение не могло не вызвать разочарование. Кроме того, известны случаи уголовного преследования за подобное поведение. Участники конференций начали разрабатывать кодекс поведения, правила и алгоритмы для мужчин с требованием придерживаться их.
Если вы подверглись дискриминации, либо были свидетелями социально недопустимого поведения, или у вас есть любые другие вопросы, пожалуйста, проинформируйте организаторов как можно быстрее.
– Конференция Burlington Ruby
php[architect] планирует провести мероприятие для всех желающих без домогательств, и не позволит проявления оскорбительного или агрессивного поведения в любой форме.
The Atlanta Java Users Group (AJUG) (Группа пользователей языка Java из Атланты) готовы провести отличную конференцию для всех посетителей, выступающих, спонсоров, волонтеров и организаторов, которые задействованы в конференции профессиональных разработчиков DevNexus, несмотря на пол, сексуальную ориентацию, физические особенности, ограниченные возможности, габариты тела, расовую и религиозную принадлежность, финансовый статус, цвет волос (или их количество), предпочтения касательно платформы, или текстового редактора.
– devnexus
Когда люди начинают обсуждать поведение участников конференции, они также начинают говорить и о более важных проблемах культуры программирования. Это был важный момент, однако вопросы, которые рассматривались на конференции, дали участникам общую точку отсчета. Почему мы ведем себя так странно? Почему так тяжело работать в одном коллективе с женщинами-программистами и вести себя, как нормальные взрослые люди?
«Когда я прихожу на работу, то выгляжу белой вороной. Меня часто принимают за помощника по административной работе. И это происходило неоднократно. Меня спрашивали, являюсь ли я представителем службы безопасности. И это, несмотря на то, что ее сотрудники носят особенную униформу», пишет Эрика Джой Бейкер на сайте Medium.com, которая работала в разных местах, в том числе и в «Гугле».
«Всегда только женщины выступали на собраниях, часто они были первыми – первая женщина инженер Научно-исследовательского отдела, первая женщина руководитель проекта, первая женщина руководитель коллектива по написанию программного обеспечения – в тех компаниях, где я работала», написала еще одна женщина в журнале Fast Company.
Согласно данным Национального Центра для Женщин и Информационных технологий (National Center for Women & Information Technology) в 2012 году женщины составляли чуть меньше одной пятой выпускников колледжей информатики и компьютерных наук. Менее 30% специалистов в сфере информационных технологий являются представительницами слабого пола. С 1980-х годов количество женщин в этой сфере уменьшилось, несмотря на то, что рынок для применения их знаний расширился. Информационный канал представляет собой большую проблему. Однако ее можно решить. Я встречался с менеджерами, которым удалось создать прекрасно функционирующие большие коллективы, в которых более 50% сотрудников составляют женщины – специалистки по кодированию. Примером может служить сайт электронной коммерции Etsy, сотрудники которого разработали образовательные программы и программы наставничества. А такие организации, как некоммерческая Girl Develop обучает женщин, как правильно создавать программное обеспечение.
Это все произошло во время бума. В 2014 году некоторые компании начали выпускать отчеты по культурному многообразию для своих коллективов программистов. Они не стали популярными, но выявили следующие факты: штат фирмы Intel на 23% состоит из женщин, Yahoo! – 37%. Apple, Facebook, Google, Twitter и Microsoft – порядка 30%. Эти показатели касаются целой компании, а не только одних программистов. Есть много сотрудниц, которые не получают опционы на акции, а ситуация с цветными работниками и выходцами из стран Азии еще хуже. Компания Apple выделила $50 миллионов для поддержки развития инициатив, связанных с культурным многообразием сотрудников, что составляет 0,007% общей стоимости всех выпущенных в обращение акций компании. Фирма Intel вложила $300 миллионов в аналогичный проект.
Обычный программист – это старательный специалист с базовыми знаниями математики, обладающий практическими знаниями одного или нескольких языков программирования и способный внятно объяснить руководству и своим коллегам чем он или она занимается. Учитывая существенное количество женщин журналисток и редакторов, хирургов, а также руководителей компаний, или способных управлять малыми предприятиями и пользоваться электронными таблицами, принимая во внимание тот факт, что некоторые из них работают в Верховном Суде, а также то, что мы уже привыкли видеть их в должности бухгалтеров, преподавателей, профессоров, статистиков, или управляющими проектами, трудно представить, что они не могут написать JavaScript. Несмотря на назойливую рекламу и своекорыстные фантазии программистов, программирование не представляет собой самую главную творческую задачу, которую можно вообразить.
Из чего следует неминуемое заключение: Проблема с женщинами в технологиях находится не в них.
Ниже приводятся некоторые демографические выкладки из опроса разработчиков популярной системы вопросов и ответов о программировании Stack Overlow (2015 год):
Coder gender – пол кодировщика
Coder experience – стаж работы кодировщика
Men – Мужчины
Women – Женщины
Prefer not to disclose – Предпочитают не раскрывать информацию
Other – Другие
3. Почему программисты так чувствительны к языкам?
Многие конференции организованы на основе конкретного языка программирования, или конкретного сообщества (PyCon для программистов, которые используют Python; конференция Strata – большие массивы данных; Oscon – для специалистов по открытым исходным кодам). Это ритуальные события для тех людей, которые являются членами таких сообществ. Участники конференций собираются, обсуждают и размещают свои видеоматериалы на YouTube. Язык имеет значение.
Программисты следят за успехом компьютерных языков точно также, как другие люди за результатами спортивных событий, публикуя свои комментарии на таких форумах, как Reddit (где много языков получают собственные подразделы «subreddit», и reddit.com/r/programming на данный момент имеет 620 202 читателей), или Hacker News, принадлежащий венчурной фирме Y Combinator (компания получила название от специальной функции, которая действует на основе других функций), или Lambda the Ultimate (название взято у сборника статей, написанных преимущественно в 1970-х годах о влиятельном языке программирования Scheme. Чем больше таинственности в названии, тем менее интересная тема для обсуждения).
В Сети существуют сотни блоггеров-программистов. Многие крупные корпорации позволяют своим инженерам вести блоги (благородный жест, учитывая то количество вербовщиков персонала, которые «зависают» на них). Обсуждение вопросов о программировании можно встретить везде, они открыты, публичны и на многих языках. Люди остро чувствуют, чего можно ожидать, а что останется в прошлом.
И это не просто дань уважения моде. Карьера программиста зависит от того, насколько он способен продемонстрировать свои способности в одном или нескольких языках. Поэтому рейтинги, которые часто обновляются, редко могут шокировать. В последнее время наиболее частым в употреблении компьютерным языком, согласно индексу Tiobe (который использует разные индикаторы, чтобы сгенерировать единый рейтинг для мира программирования) является Java, C, C++, Objective-C, и C#, после них следуют JavaScript, PHP и Python. Данные рейтинги не отличаются точностью. В другом документе, подготовленном консультационной фирмой RedMonk, первое место занимает JavaScript, после нее идет Java. Существует много возможных выводов, однако очевидным является тот факт, что, несмотря на равноправие языков, очень хороший программист со знанием Java, который сумеет прекрасно зарекомендовать себя во время интервью, будет иметь больше вариантов для карьеры, чем аналогичный кандидат, использующий малоизвестный язык.
Если вы занимаетесь кодированием, то до того момента, когда любой язык пробьется в десятку или двадцатку лучших, вы уже слышали о нем, читали блоги или посты, слышали от людей, насколько эти языки ужасны или великолепны, или принимали участие в практических занятиях в видео режиме, или экспериментировали немного с ними. Выбрать новые языки для предварительного знакомства – это очень хорошая практика для программиста. Часто единственное, что вам нужно сделать, это загрузить несколько файлов и написать пару строк программы, а затем решить, стоит ли продвигаться дальше. Большинство языков можно загрузить для использования бесплатно.
Почему разработчики создают, а затем раздают бесплатно языки? Дело в том, что хороший язык программирования создается специалистом топ-класса, поэтому результат его труда признается, как результат титанических усилий, что сродни публикации многотомной истории войн, или участие в одной из них. Соответствующее вознаграждение – это слава. Замена языка – это повторное участие в битве, а некоторые языки на протяжении короткого периода времени проживают жизнь от устаревшей версии до многообещающей. Например, Perl 5, который появился в середине 1990-х годов, идеально подходил для Всемирной сети World Wide Web, и по мере ее развития развивался и сам. Perl 6 должен был стать лучшим по всем параметрам. Его переработка сопровождалась широкой рекламной кампанией и началась в 2000 году. Над этим проектом специалисты работали бесплатно, поскольку считали, что это в интересах общественности. Однако даже через 15 лет официальной версии Perl 6 нет. (Последнее примерное время релиза: Рождество 2015.)
Пользователи языка Python (все знают о существующих проблемах этого сообщества), решили внести необходимые, но непонятные изменения в язык, поскольку это была часть переходного цикла с Версии 2 на Версию 3. Они усовершенствовали, сгладили неровные края, но не предприняли кардинальных изменений. Разработка языка Python 3.0 началась в 2006 году, первая рабочая версия была выпущена в 2008 году, а затем – в 2015. Однако, переходной период еще не закончился.
Создание нового языка связано с трудностями. Написание популярного языка требует еще больших усилий и улыбки фортуны. А изменения принципов работы популярного языка – это вообще один из самых трудных процессов, на которые способно человечество, поскольку здесь необходимы годы согласований для того, чтобы привести стандарты под один знаменатель. Языки являются крупными, комплексными и динамическими выражениями человеческой культуры.
3.1 Красота Библиотеки Стандартных Программ
Настоящим мерилом языка являются точки с запятой, а вернее, как они используются. Это –библиотека стандартных программ каждого языка. Язык является программным обеспечением для написания программного обеспечения (прошу прощения за тавтологию). Библиотека стандартных программ – это набор ПО в виде «полуфабрикатов», которые вы можете использовать и применять неоднократно.
Например, возьмите Python с «батареями в комплекте». Это означает, что язык уже включает в себя большое количество заранее существующих кодов, организованных в «модули». Благодаря своим функциям, библиотека позволяет копировать веб-страницы, или менять слова в документе.
Что означает обработать текст? Ну, у вас может быть строка текста (The Quick Brown Fox) и вам нужно ее сохранить в переменной под названием my_string. Поэтому сейчас вы можете применить стандартные методы для этой строки. Можете сказать my_string.lower(), и она предложит все слова нижнего регистра строки “the quick brown fox”. Если вы по-настоящему поймете библиотеку стандартных программ языка, можете смело считать себя специалистом в этой сфере. Обычно нужно или посещать соответствующие веб-страницы, или читать специальную литературу.
Однако, библиотека стандартных программ – это лишь только начало. Для многих языков – а для Python – это характерно – существует обширный набор предварительно написанных модулей, которые доступны для мгновенной загрузки с помощью программного обеспечения «диспетчер пакетов». Модуль (или библиотека, или пакет) представляет собой код, который расширяет возможности языка.
Представьте себе, что вы работаете в рекламном агентстве, и вам необходимо обработать, масштабировать и увеличить резкость изображения 100 000 фотографий.
Вы печатаете одну команду: sudo pip install Pillow (установить от имени суперпользователя менеджер пакетов Pillow), и модуль Pillow загружается, автоматически собирает данные и размещается в правильной директории для последующего повторного использования. Конечно, вы должны знать, что большинство современных языков имеют модули для обработки изображения, а Pillow является наиболее часто используемым инструментом для этой цели. Понять это, является частью кодирования. Вы можете научиться этому путем поиска информации в интернете с помощью «Гугла», можете спросить у друзей, а можете прочитать в специальной литературе, как например The Hitchhiker’s Guide to Python.
Кодировщик должен быстро изучить и определить, какая из гигантских и комплексных библиотек была недавно модифицирована и лучше всего соответствует вашим требованиям. Кодировщик должен быть хорошим слушателем.
Зато какой результат! Теперь, после того, как инсталлирован Pillow, вы имеете мгновенный доступ к десяткам стандартных программ и функций, имеющих отношение к обработке изображений, которые вы можете использовать в своем коде: менять цвета, вращать их на нужное количество градусов, масштабировать, конвертировать изображения из GIF в JPEG и так далее. Или, если вам нужно провести комплексный цифровой анализ и статистические исследования, вы можете загрузить NumPy, и сразу получить доступ к огромному количеству математических алгоритмов и результатов многолетних научно-исследовательской деятельности. Обработка аудио сигнала, взаимодействие с особым видом аппаратного обеспечения, контакты с базами данных – существует огромное количество пакетов для этих видов деятельности. Но вы должны знать, как найти их, и как они называются. Код – это не просто помещенная в файле невразумительная команда. Ему нужно, чтобы у вас в голове была карта, которая поможет вам найти место нахождения хороших библиотек, лучшей документации, самой полезной доски сообщений. Если вы этого не знаете, то потратите все свое время на поиски вместо создания классных новых продуктов.