На главную > Программисту> Статьи > К вопросу подготовки программистов

К вопросу подготовки программистов

УДК 681.3.06

К вопросу подготовки программистов

Н.П.Вельдяксов

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

Английский язык

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

Вопрос – в какой мере программисту необходимо знать английский язык? Владение языком складывается из совокупности умений, среди которых можно выделить следующие:

  • Умение понимать устную речь;
  • Умение читать письменные тексты;
  • Умение строить предложения;
  • Умение писать;
  • Умение произносить слова вслух;
  • Умение думать на данном языке.

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

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

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

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

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

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

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

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

Существуют различные способы преподавания грамматики английского языка. Cпособ Милашевича [1], позволяет “любому человеку уже за несколько дней занятий понимать 70-80% неадаптированного текста” (цитата из [2]). Способ “Милгред” [2] подает английскую грамматику в целостном, системном виде и показывает взаимосвязь грамматических явлений. В обоих способах обучение ведется на модельных, а не на настоящих английских словах. Это позволяет сосредоточить внимание именно на вопросах грамматики, а не на значениях отдельных слов. При таком изучении грамматики становится неважным исходный уровень знаний английской лексики и не теряется время на поиск слов в словаре.

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

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

Математическая культура

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

И тем не менее компьютер много чего еще не умеет. В обычном человеческом общении задавая конкретные вопросы мы, в принципе, готовы услышать неконкретные ответы. Компьютер же требует большей однозначности. Задавая вопрос, компьютер может предложить варианты ответов “Да”, “Нет”, “Не буду отвечать”. Варианты ответов “Может быть” или “Не знаю” как правило не предусмотрены. Разговаривая между собой, люди могут понять иностранца, который неправильно строит предложения и ошибается в падежах. Компьютер же требует, чтобы тексты программ стопроцентно соответствовали синтаксису языков программирования. Программы ближе к математическим формулам, чем к естественным языкам.

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

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

Основные идеи программирования

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

  • Необходимо знать идеи структурного программирования и видеть в подпрограммах, функциях, операторах ветвления и циклов не просто конструкции языка, а средства обеспечения проектирования сверху-вниз и снизу-вверх;
  • Необходимо знать структуры данных, уметь из элементарных строить более сложные;
  • Необходимо знать основы объектно-ориентированного программирования, что такое наследование, полиморфизм и инкапсуляция;
  • Полезно понимать разницу между событийно-ориентированном программированием и обычным;
  • Желательно иметь представление о клиент-серверной архитектуре и программировании для Интернета;
  • Необходимо знать суть реляционных баз данных и уметь писать запросы к ним на языке SQL;
  • Для общего развития полезно иметь представление о языках низкого уровня, о макросредствах.

Жизненный цикл программ

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

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

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

Документирование

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

В процессе работы над проектом создаются разные документы. Например, требования заказчика, постановки задач, протоколы тестирования, различные инструкции. Виды конкретных документов и их потоки зависят от используемой методологии программирования. При методологии главного хирурга – это одно, при методологии MSF (Microsoft Solution Framework) – другое, при экстремальном программировании – третье.

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

Групповая работа

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

Технологическая дисциплина

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

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

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

Коллектив

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

Неинтересная работа

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

Интернет

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

Рекламная пауза

В заключение рекламная пауза. Приглашаю всех присутствующих посетить мой персональный сайт www.nikvel.ru – Юмор, English, Изображения (а также рассказать о нем всем своим друзьям и знакомым). На данном сайте кроме развлекательных материалов можно посмотреть другие мои статьи по программированию и учебник английского языка для программистов.

Литература:

  1. Милашевич В.В. Обучение научно-техническому переводу с английского языка, часть II. Логическое изучение грамматики: Методические рекомендации. Изд. 10-е, переработанное. Владивосток: ДВО АН СССР – НТТМ “Техника”, 1988. 41с.
  2. Описание изобретения к патенту Российской Федерации RU 2153705 C1. Способ “Милгред” обучения английскому языку. Российское агенство по патентам и товарным знакам. 28.08.2000.





























Статья поступила в редакцию 05.11.04.

Интернет-конкурс Золотой сайт