mishafurman: (Default)
[personal profile] mishafurman
Нет такой специальности "программист". А если и есть, то не одна а две.

На самом деле эта заметка является запоздалым ответом [livejournal.com profile] nepejvoda_n_n - на его статью, адресованную
победителям олимпиад по программированию, которую я раскритиковал, но недостаточно
детально.

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

На самом деле подобные профессии могут различаться по трем признакам:
1. Что дано - постановка задачи.
2. Что требуется получить в качестве результата.
3. Как выполняется работа (метод, инструменты).

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

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

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

Еще один пример из другой области. Представим себе деятельность состоящую в строительстве, скажем, мостов.
Вроде одна профессия - ан нет! По крайней мере две:

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

Цели - в значительной степени разные. И методы разные, хотя может оказаться, что лопата (это же упрощенный пример)
и там и там уместна.

Вот я и подошел к программированию - здесь профессии тоже две:
1 - Использование компьтеров (включающее создание програм) для решения задач. Скажем, найти 100000....-ю цифру
десятичного разложения числа пи. Или посчитать какой-нибудь интеграл (последним я зарабатывал 52 рубля 50 копеек
в месяц во время учебы в пединституте - считал интегралы для физиков из того-же института занимающихся
какими-то исследованиями).
2 - Создание программного обеспечения для массового использования. Например компайлера, операционной системы или
библиотеки стандартных (так это в те времена называли) программ.

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

Абсолютно четкой границы между 1 и 2 иногда нет. Но крайние случаи (то есть наиболее трудные, продвинутые) сильно отличаются.

№1 - в пределе - решение очень трудных задач из какой-то области. Компьютер и программа - только подсобные средства; часто
после завершения они не нужны. Сравнивая с мостами - красота и надежность не нужны - лишь бы полк переправился на другой
берег. Цена строительных материалов также часто не важна - она мала по сравнению с другими затратами.

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

№2 - в пределе - создание программ и подходов к программированию, которые экономны, предназначены для массового применения.
Легко приспасабливаемые для слегка других задач. Легко отлаживаемые и понятные другим. Использующие ограниченные ресурсы, как
при разработке, так и при использовании.

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

На моем опыте люди умеющие хорошо делать и то и другое встречаются не часто (и по моему мнению они представляют особенную
ценность). Большинство программистов тяготеют к №1 - и успех здесь в основном определяется способностями, любопытством и
трудолюбием.

№2 - здесь, скажем, способности типа решения олимпиадных задач не так уж важны. А "инженерное" мастерство обычно требует
обучения и опыта. И с обучением - проблемы, потому что учителя - часто академического тима и либо вообще склоняются к №1,
либо имеют ограниченный опыт.

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

В серьезных проектах нужны и те и другие. Когда созданием software занимаются специалист №1, программы получаются
часто не надежные, не универсальные, дорогие и недолго живущие.

В противоположном случае, специалист №2 может создать паровоз, когда надо бы давно уже использовать фотонный
двигатель...

И, я бы сказал, подготовка специалистов типа 1 и 2 нужда разная - скажем, так же как классическая подготовка физиков
исследователей и инженеров.

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




This account has disabled anonymous posting.
If you don't have an account you can create one now.
HTML doesn't work in the subject.
More info about formatting

Profile

mishafurman: (Default)
misha furman

October 2019

S M T W T F S
  12345
6789101112
131415161718 19
20 212223242526
2728293031  

Most Popular Tags

Style Credit

Expand Cut Tags

No cut tags
Page generated Jul. 13th, 2025 08:52 pm
Powered by Dreamwidth Studios