Почему, несмотря на то, что ИТ-отрасли уже почти полвека, говорить о ее зрелости по-прежнему не приходится? Почему мы до сих пор проектируем, разрабатываем и реализуем программное обеспечение, в котором так много изъянов? Информация о том, что делается для создания безошибочных программ, оптимизма не внушает.

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

Незрелость отрасли объясняется многими факторами. Большинство этих факторов нам не подвластно, хотя уменьшить их влияние можно с помощью жестких мер со стороны профессиональных ассоциаций, таких как IEEE и ACM.

Затянувшаяся юность

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

Маркетинговые перегибы

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

Затем с появлением Internet были созданы новые инструменты и методы (такие как Java, EJB, UML, BPEL, middleware и SOA), которые зачастую конфликтовали с большинством предложенных ранее инструментальных средств. Эти «инновации» вынуждали предприятия постоянно вкладывать все новые и новые средства без каких-либо заметных улучшений в их ИТ-системах.

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

Современные системы, сложные требования

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

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

Стандарты на образование и обучение

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

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

Кроме того, в обучении ИТ-специалистов практически отсутствуют стандарты. Это сулит серьезные проблемы, ведь ИТ — это не только смесь науки, технологии, инженерии и управления; она к тому же требует инновационного мышления и творчества. Поскольку сейчас мы проектируем все более сложное программное обеспечение, умение работать в группе так же важно, как и творчество и инновации. Очень немногие из современных специалистов, получивших образование в области программной инженерии, обучены методам формирования групп и работы в составе группы.

В поиске выхода

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

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

Ракеш Тендон (tandon_rakesh@verizon.net) — исполнительный архитектор ИТ подразделения IBM Global Business Services.


Rakesh Tandon, So, What is Wrong with Our Profession? IEEE IT Pro, July/August, 2006. IEEE Computer Society, 2006. All rights reserved. Reprinted with permission.