Орен Эйни: Я научился программировать в армии
В рамках мероприятия «Гуру на Урале», организатором которого выступила компания «СКБ Контур», Екатеринбург посетил Орен Эйни. Это один из авторов программного обеспечения NHibernate и Castle, основатель ряда проектов с открытым исходным кодом для платформы .NET Framework (Rhino Mocks, NHibernate Query Analyzer, Rhino Commons).
В эксклюзивном интервью корреспонденту CNews Орен Эйни рассказал о важности «стартапов», а также о том, как он научился программировать в армии и как вообще нужно обучать программистов.
CNews: Расскажите об основных вехах вашего профессионального пути. Каким образом произошло ваше профессиональное становление?
Орен Эйни: Я начал изучать основы программирования, когда учился в старших классах школы. В 1999 году после окончания школы я прошел годовой курс программирования на С++. Именно этот курс дал понимание того, что происходит между уровнем команд языка и уровнем регистров процессора. Сейчас мне уже кажется, что любой разработчик должен знать язык С++, так как это позволяет понять низкоуровневые аспекты программного обеспечения. Многие из тех, кто пишет на высокоуровневых языках (Ruby, Java или C#), не понимают, что происходит на более низком уровне. А между тем, именно умение программировать на С++ дает, например, понимание того, почему соединение строк – это дорогая операция. <\p>
После в моей жизни было четыре года службы в армии. В тот момент я стал заказывать книги на Amazon, чтобы читать их в свободное время, которого в армии предостаточно. Это были книги, входящие в университетский курс по компьютерным наукам. Например, известный учебник Эндрю Тэнэнбаума Operating Systems Design and Implementation и The Operating Systems Concepts (известная в народе как the “dinasour” book) от коллектива авторов под руководством Абрахама Зльбершатца. Постепенно я перешел от теории к практике — стал использовать в разработке концепции, описанные в книгах, потому что одного чтения недостаточно. Стоит еще отметить, что к моменту окончания службы в армии я уже успел поучаствовал в нескольких открытых (open source) проектах. Это во многом способствовало развитию моих навыков программирования, потому что я научился читать чужие исходные коды. Освоившись с методиками гибкой разработки, я запустил свой проект RhinoMocks, библиотеки, облегчающей модульное тестирование для платформы .Net. В какой-то момент люди начали использовать ее, и я стал получать отзывы в своем блоге.
CNews: В России блоггерская культура получила свое развитие совсем недавно – 2-3 года назад. В Европе и США — намного раньше. А насколько активным блоггером являетесь лично вы?
Орен Эйни: Я пишу в своем блоге приблизительно по 60 сообщений в месяц. Как блоггер, я нахожусь в тесном контакте с сообществом разработчиков. К тому же у меня еще есть стойкое убеждение, что специалисту, который засветился в блогах, проще найти хорошую работу.
CNews: Как Вы думаете, как должен строиться учебный процесс для программистов?
Орен Эйни: Я бы сознательно разделил обучение компьютерным наукам от обучения программной инженерии. Если, скажем, взять выпускника, которого научили самым совершенным алгоритмам, он, скорее всего, будет несостоятелен как разработчик. Чтобы создать программный продукт, нужны совершенно другие знания: как работать в команде, как собирать требования, и так далее. И еще нужно понимать, что программные инженеры имеют разную специализацию, и по мере развития ИТ-индустрии тенденция к специализации будет только увеличиваться. Тем не менее, хочу отметить, что есть и фундаментальные знания, своебразный «пласт теории», как в области компьютерных наук, так и в области программной инженерии. Этот пласт необходим всем типам специалистов.
CNews: Вы говорите о необходимости теории, но ведь согласитесь, чтобы писать бизнес-лапшу, не нужны вообще никакие знания из компьютерных наук.
Орен Эйни: Для меня писать бизнес-лапшу означает потерю квалификации. Если не знать ничего о программной инженерии, можно в принципе успешно закончить разработку программного продукта, просто в этом случае увеличиваются риски, увеличивается стоимость и затраты на поддержку продукта. Если не знать основы информационных технологий, можно изобрести даже не просто велосипед, а ужасного монстра.
CNews: А где проходит граница между компьютерными науками и информационными технологиями?
Орен Эйни: Разница в том, что в отличие от информационных технологий, компьютерные науки не устаревают.
CNews: В своей книге «Мифический человеко-месяц» Фредерик Брукс разделяет сложность при создании ПО на содержательную (essential) и специфичную (accidential). Содержательная сложность определяется сложностью решаемых задач и сложностью ПО как такового. Специфичная сложность определяется выбором процесса и средств разработки. И быстрое устаревание информационных технологий порождает дополнительную специфичную сложность.
Орен Эйни: Здесь необходимо понимать зависимость между выбором средств разработки и стоимостью поддержки продукта. Если мы говорим о Майкрософт, период поддержки того или иного продукта явно прописывается в лицензионном соглашении. Но разница в том, что специфичная сложность находится на одном уровне, а содержательная постоянно растет, и рано или поздно она достигнет уровня, выше которого индустрия шагнуть не сможет и перестанет справляться. Специализация помогает бороться с содержательной сложностью. Например, еще 20 лет назад никто не думал про проектирование пользовательских интерфейсов, а сейчас наличие удобного интерфейса является одним из важнейших требований.
CNews: Но разве увеличение количества разнопрофильных специалистов, участвующих в разработке, не увеличивает специфичную сложность?
Орен Эйни: Для того чтобы этого избежать, нужно снижать трение между членами команды и отлаживать взаимодействие. Пусть я не являюсь одновременно разработчиком и специалистом по дизайну пользовательских интерфейсов. Тогда при создании новой фичи я не буду ждать, пока дизайнер проработает экран. Лучше я сам сделаю экран, намеренно уродливый, фиолетовым по синему, а потом напишу дизайнеру в своей команде письмо и попрошу его переделать качественно. Даже если очевидна необходимость в оптимизации пользовательского интерфейса в более широком контексте, я предпочту выпустить несовершенный продукт и вернуться к этой проблеме позже. Функционал, отвечающий потребностям пользователей, нужно делать от начала и до конца.
Когда я общаюсь с потенциальным клиентом, я никогда не говорю ему, что продукт точно будет выпущен к такому-то сроку и на его разработку будет потрачена точно такая-то сумма. Оговаривать точные до дня сроки и точные до доллара затраты нечестно. Потому, что в 80 процентах случаев такие обещания не выполняются. Я честно говорю, что если мой проект провалится, он провалится быстро, не через два года после начала, а через два месяца.
CNews: Людям, открывающим бизнес под новый программный продукт, должно быть, очень страшно услышать такие слова.
Орен Эйни: Главное, чтобы было легко запускать новые проекты. В Израиле, например, культура «стартапов» очень развита. В отрасли работают молодые люди, быть ИТ-специалистом считается привлекательным. В какой-то момент заниматься разработкой ПО стало выгоднее, чем, например, быть врачом.
Решение заняться разработкой ПО большинство принимает во время службы в армии. Армия Израиля численно уступает армиям своих стран, настроенных по отношению к Израилю недружелюбно, поэтому приходится искать технологические преимущества. После Армии у большинства есть возможность получить высшее образование. Это значимо, так как наличие некоторой критической массы специалистов с высшим профессиональным образованием в отрасли тоже очень важно. В этом плане у России проблемы образования нет. Я отметил для себя, что почти все мои знакомые из России имеют высшее образование.
CNews: А какой, по-вашему, должна быть поддержка со стороны государства?
Орен Эйни: Государство должно всеми силами подталкивать людей пробовать начинать.
А. Радаев
Свежие комментарии