Потенциал Образовательный журнал
для старшеклассников и учителей

<< К разделам
Информатика
Алгоритмы
Теория информации
Теория программирования
Все статьи
Журнал
Подписка
Интернет-Журнал «Потенциал» External link mark
Авторам
Печатные номера
Полезные сайты
ЗФТШ External link mark
МЦНМО External link mark
Журнал "Квант" External link mark
"Открытый Колледж" External link mark
Союз образовательных сайтов External link mark
Интернет-портал "Абитуриент" External link mark
Другие ссылки...

WOlist.ru - каталог качественных сайтов Рунета Союз образовательных сайтов Rambler's Top100 Портал ВСЕОБУЧ. Все образование Москвы и регионов РФ.

Главная Подписка Архив Авторы Фотоальбом Подготовка в вуз Магазин

О знаниях и умениях программиста

Ворожцов Артём Викторович Ворожцов Артём Викторович
Закончил Московский физико-технический институт (МФТИ), преподаватель кафедры информатики МФТИ, тренер команд МФТИ по программированию, ответственный редактор раздела "Информатика".


Предположим, что, прочитав в журнале «Потенциал» №3, 2008 г. заметку про программирование, вы взвесили все ЗА и ПРОТИВ и решили стать программистом.

Какие способности в себе имеет смысл развивать и как узнать есть ли у вас призвание к программированию?

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

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

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

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

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

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

Если провести анализ видов деятельности типичного IT-специалиста или программиста, то окажется, что это вовсе не работа с математическими абстракциями, а анализ технических текстов, аннотирование, выражение мыслей и концепций максимально кратко и чётко.

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

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


Комментарии читателей

Автор: Taron 26.01.2012 02:28 That's a smart way of looikng at the world.
Автор: Old 07.06.2012 06:02 Если сравнивать программиста с переводчиком, то нужно добавить программист - это технический переводчик, который обязательно должен быть знаком с предметной областью

Новый комментарий:

 
 
 

© Журнал "Потенциал", 2005-2014. Все права защищены. Воспроизведение материалов сайта и журнала "Потенциал" в любом виде, полностью или частично, допускается только с письменного разрешения редакции.
Отзывы и пожелания шлите почтой.
Подготовка к ЕГЭ
ЕГЭ по математике
login