Як готувати системних програмістів

[ виправити ] текст може містити помилки, будь ласка перевіряйте перш ніж використовувати.

скачати

Терехов Андрій Миколайович, професор, завідувач кафедри системного програмування математико-механічного факультету СПбДУ

Професійним викладачем Університету я став майже випадково. У принципі, я читав спецкурси, будучи ще студентом мат-хутра, керував дипломними роботами, 9 осіб захистило кандидатські дисертації під моїм керівництвом, але все це було швидше фоновою, ніж основний. Ще в молоді роки я почав керувати лабораторією системного програмування НДІ математики і механіки мат-хутра, і був цілком задоволений цією роботою. Але питання про те, щоб забезпечити приплив нових молодих фахівців, у мене не виникало. Ми займаємося наукою, трохи допомагаємо у підготовці студентів, отримуємо молодих фахівців, і все. Коли поїхав працювати до Франції зав. кафедрою мат. забезпечення ЕОМ А.О. Слісенко (зараз він завідує кафедрою в університеті Париж-12), наш декан вирішив, що я буду хорошою кандидатурою на цей пост. Організували збори кафедри, попросили мене розповісти про свою програму. Вона була дуже коротка, усього з двох пунктів. Перша теза: кожен викладач повинен бути спочатку дослідником, а вже потім викладачем. Я готовий пробачити деякі недоробки, але не готовий пробачити начетничества, коли викладач сьогодні почитає книжку, а завтра розповість. Треба, щоб викладачі в основному розповідали про свої роботи або про тих, в яких вони брали участь. І друга теза був у тому, що треба відповідати міжнародним програмам. Кожні два роки друкуються стандарти, ми відстежували ці стандарти з 1992 року.

За кожним з цих тез була моя вистраждана позиція. Не люблю я "начотчиків". Страждав від таких викладачів, коли сам вчився, і, природно, не хочу підтримувати їх зараз. А щодо міжнародних стандартів бували жахливі історії. Саме так хочу сказати - жахливі.

Наприклад, ми за родом своєї діяльності багато контактували з групою молодих людей з Академмістечка, з Новосибірська, які під керівництвом доктора наук Котова робили нову машину, "Кронос". А ми в цей час робили свою машину, "Самсон", тому дуже цікаво було поговорити, поспілкуватися, обмінятися результатами, і хлопці справили на мене незабутнє враження. Вони часто приїжджали до нас, жили у мене вдома. Багатьох з них я добре пам'ятаю до цих пір. Двоє з них наприкінці 80-х років пробували вступити до аспірантури американського університету. У них була дуже потужна підтримка. Керівником їх лабораторії був А. Марчук, а його батько був президентом Академії наук. Тому співробітники А. Марчука мали додаткові можливості, отримували доступ до матеріалів, пов'язаних з аспірантурою в Америці, яких молодші наукові співробітники інших організацій не мали. Коротше кажучи, вони поступали в аспірантуру в американському університеті. Вони обидва були дуже розумними, я мріяв би мати таких співробітників. І не надійшли. Не тому що погано говорять по-англійськи або з якоїсь ще формальної причини. Вони просто на половину питань не знали відповідей.

На мене це справило приголомшуючі враження, тому що я звик думати, що ми, принаймні в області програмування, "попереду планети всієї". У деяких областях це дійсно так. В області техніки трансляції, в області теоретичних питань програмування, теорії оптимізації. Але виявилося, що програмування за цей час розрослося, і ми в своїх роботах, в основному на оборону, дуже багато аспектів просто упустили. І в 1992 році, за моїми підрахунками, ми не накривали навіть 40% міжнародного стандарту за фахом computer science and software engineering. Тому я і сказав співробітникам кафедри, що нічого почивати на лаврах, засукати рукави і займайтеся, будемо наздоганяти світову цивілізацію. На що отримав абсолютно негативну реакцію: не треба згущувати фарби, наша кафедра підготувала таких добрих спеціалістів, та й ти закінчив цю кафедру, що тобі ще треба?

Наш декан, Г.А. Леонов, молодий, енергійний чоловік, вирішив, що він це так не залишить, і вирішив створити ще одну кафедру. Була маса проблем, були дискусії на Вченій Раді, що мат-хутро і так скорочується, а тут вводять нову кафедру ... Коротше, були неприємні і навіть болючі ситуації, але великий дипломат Леонов всі подолав, змусив мене написати купу паперів, і в результаті сформувалася нова кафедра. Моєї заслуги в цьому майже що і немає. Я всього лише запропонував кілька ідей.

Так 6 років тому я став завідувачем кафедри системного програмування. Я почав чесно втілювати власну ж програму, розвивати дослідження, яких у нас раніше не було. Думаю, що зараз ми накриваємо відсотків 80 міжнародного стандарту, але не можу обіцяти, що скоро ми накриємо всі 100%. Дійсно, світова наука розвивається стрімкими темпами, і в дуже різноманітних напрямках. Початково мені дали 3,5 ставки, але в перший же рік на кафедрі працював 21 чоловік. Тобто працювали співробітники нашого підприємства, практично завжди безкоштовно, і аргумент мій був тільки один: якщо вам потрібні молоді співробітники, якщо вам потрібен зворотній зв'язок - вперед, в аудиторії!

Ми домоглися певних успіхів, 3 роки тому в нас був такий незабутній епізод, коли закінчував кафедру один з перших випусків, 12 чоловік, і всі 12 отримали червоні дипломи. Причому без всяких "натягування", вони самі цього домоглися.

Саме співробітники нашої кафедри керують командами нашого Університету на міжнародних змаганнях. Ми двічі стали чемпіонами, але для мене ще важливіше, що протягом 5 років поспіль ми були в призовий "десятці" з 2500 команд. Помітна стабільність результату. Я вважаю, що кафедра системного програмування, незважаючи на свою молодість, розвивається досить успішно.

У даний момент я хочу зосередитися не на успіхах (я чітко розумію - сьогодні є успіх, а завтра тебе ніхто не згадає), а на проблемах, які заважають нам розвиватися далі. Їх кілька, і я не знаю, чи зумію я зв'язно про них розповісти в цьому інтерв'ю. Але спробую.

Почну я, як не дивно це, можливо, з боку здасться, з практики. Студенти повинні мати практику. Програмування - це така спеціальність, якої не навчиш біля дошки з крейдою в руках. Для того, щоб краще зрозуміти можливі шляхи організації практики, подумки перенесемося в Оксфордський університет, де мені доводилося читати лекції, і я спеціально вивчав місцеву постановку освіти. Звичайно, там іноді віддає деякою "замшілість", але, тим не менш, співробітники університету свято бережуть традиції і з великим небажанням розлучаються з чимось старим. Іноді їм це можна поставити в мінус. Наприклад, зараз Оксфордський університет трохи відстав в галузі природничих наук від Кембриджа, і фахівці говорять, що одна з причин цього в тому, що в Оксфорді на 60 років пізніше скасували обов'язкове навчання латині. У Кембриджі скасували в 20-х роках, а в Оксфорді тільки в 80-х. І ці 60 років багатьох молодих людей відлякувала необхідність вчити мертву мову тільки тому, що так робили 800 років тому.

Але зазвичай вірність традиціям гідна поваги. Наприклад, в Оксфорді для кожного предмета є теоретичний курс, тобто лекції, практичний курс, коли викладач зі студентами вирішує завдання в аудиторії, біля дошки, біля комп'ютера, але при цьому стоїть поруч, і практикум - з кожного курсу студент повинен виконати деяку роботу самостійно. Причому не раз на півроку, як наша курсова робота, одна на весь семестр, а з кожного предмета кожні два тижні. Є величезні аудиторії, сотні вільних обчислювальних машин. Приходиш, сідаєш, вирішуєш, і потім свій результат показуєш тьютору. Це ще одна особливість - персональне навчання. По кожному предмету година в тиждень студент працює зі своїм тьютором - таким викладачем, який за нього відповідає. Було п'ять предметів на тиждень - значить, п'ять годин студент з викладачами проведе один на один. Причому тьютор складає основу викладання. Саме тьютор веде вступні іспити, саме тьютор відбирає собі студентів, а не коледж чи університет в цілому. Саме тьютор може сказати своєму колезі: "Знаєш, я вже набрав собі потрібну кількість студентів, є ще такий-то студент, візьми його собі в інший коледж".

Якщо читають, наприклад, операційну систему реального часу, то кожен студент повинен написати програму: керування пам'яттю, управління процесорами, управління часом. Викладач дивиться не тільки на результат, а й на те, як написана програма. З усіх предметів є лекції, практика і практикум.

У нас з цим слабкіше. Курсові роботи - раз на семестр, і часто перетворюються на фікцію. І важко змінити цю ситуацію на краще, тому що немає відповідних матеріальних ресурсів. Як зобов'язати всіх студентів з кожного предмета зробити самостійну роботу, якщо ми не можемо їм забезпечити повноцінний доступ до обчислювальних машин? Класи завжди перевантажені. Так, щоб студент, займався без викладача, у нас не прийнято. Обов'язково подумають, що й вірус занесуть, і що-небудь вкрадуть, і що-небудь зламають. Самостійну роботу дуже важко налагодити. Про тьюторства я просто не мрію. Це перш за все питання грошей. У нас, напевно, знайшлося б багато хороших викладачів, але для того, щоб забезпечити індивідуальне навчання - скільки треба викладачів і яке потрібно фінансування? Хоча ще з середніх століть відомо, що навчання - це завжди робота майстра з підмайстром з безпосередньою передачею досвіду. Так що єдина "жива" практика в нас - на п'ятому курсі, піврічна переддипломна практика. І тут теж є свої проблеми. Добре, якщо практика була, якщо ми говоримо про програмування, у відомій фірмі, яка успішно і продуктивно на сучасному технологічному рівні займається програмуванням. Але так буває не завжди.

Перша теза - сьогодні треба практику реально поєднати з теорією. Формально кажучи, все у нас є. П'ятий курс півроку проходить переддипломну практику. І чим це закінчується? Ось у мене товста пачка звітів з практики (шелест бумаги). Люди просто прилаштовуються працювати (наприклад, програмістами) в яку-небудь маловідому контору, найчастіше я навіть назви такого не знаю. Вони працюють. З одного боку, які можуть бути претензії? Людина півроку пропрацював, отримував гроші, комусь був корисний. Питаю, я, завкафедрою: "Чому ти там навчився?". "Ось, отримав практичний досвід програмування на Java або C + +". "Як була організована робота?". "Ніяк. Начальник дав завдання, я написав програму". "Як був організований колектив? Які були стосунки? Як велося планування, звітність? Чи були щотижневі збори? Чи була регулярна перевірка якості? Чи були перехресні читання?". "Не було". "Так чому ти, милий, там навчився?". "Програмуванню". "Чому тоді треба говорити, що ти закінчуєш мат-хутро факультет найстарішого університету Росії?". Тут явна невідповідність теорії і практики.

Наведу приклад з іншого боку. У нас декілька чоловік проходило практику у закордонній фірмі тут, у Санкт-Петербурзі. У цій фірмі все добре організовано, але є інша крайність: скрізь завіса секретності. Навіть якщо дипломну роботу написав там, її в Університеті захистити не можна. Треба захищати в фірмі, організовувати ДЕК. Це ціла проблема. Гаразд, врешті-решт, навіть на військових працювали, могли все організувати. Але ж людина відривається від колективу, нічого не може обговорити. Найголовніше в навчанні - це бесіда, розмова. А тут кілька людей проходять практику, і навіть зі своїми однокурсниками не спілкуються. Заборонено. Зовсім інша крайність. Дуже високий рівень роботи, але занадто індивідуальний. Люди з цієї фірми, можливо, скажуть, що я не правий, що у них є і семінари, і регулярне навчання. Але я кажу про те, що бачу за результатами роботи наших студентів.

Деякі студенти проходять практику на підприємствах. Тут я вимагаю, щоб це була не тільки робота, але й навчання. Теж виникають протиріччя: "Ми виробниче підприємство, нам треба заробляти гроші, приносити прибуток, тому займатися суто навчальними справами якось не з руки. Ні-ні, ми розуміємо, що треба готувати кадри, але всі повинні займатися своєю справою".

І ще раз повторю, оскільки для мене ця теза важливий, що практика - це не просто робота "від забору до обіду", переробив готову програму або спаяв електронну схему. Практика має на меті деякий дослідження, навчання організаційним формам, сучасним методам. Практика повинна бути різноманітною. Наприклад, електронник повинен не тільки спаяти, але й спроектувати схему, спроектувати кристали, які всередині. Він повинен брати участь у налагодженні, і не просто брати участь, а зробити тестове оточення. Електронники повинні програмувати. Це все тісно пов'язане.

Вас не дивує, що я весь час згадую електроніку-У мене є цілий відділ електронників, у них і керівник відділу математик, і багато співробітників математики. Зараз електроніка така, що все одно треба програмувати. Але приходять інженери, які не знають, як найпростіший тест написати. А як написати не один тест, а систему тестів для вичерпного тестування, їм навіть пояснити неможливо. Практика повинна включати в себе організаційні аспекти, елементи дизайну, елементи розробки, і, саме головне - доведення до результату. За півроку завжди можна зробити результат. Все, щодо практики поговорили, хоча на цю тему можна було ще багато чого обговорити.

Теза друга - чому навчаємо? Ось переді мною лежить програма 35.15. За цією програмою вчиться відділення інформатики математико-механічного факультету. Ми із співробітниками нашої кафедри брали участь у її розробці. Для порівняння скажу: у нас відділення прикладної математики навчається по 01.02. Мат. статистика, моделювання, теоретична кібернетика - це все чудово. У дипломі написано: "Математик. Системний програміст". Я прошу авторів це програми: "Покажіть, де тут програмування". На першому курсі вчать програмуванню на мові С, і все. Я ж не кажу, що в програму включили зайвий матеріал. Всі потрібні речі: і моделювання треба, і кібернетику треба, і розпізнавання образів, і питання оптимізації. Але навіщо пишуть у дипломі "Системний програміст"? Ось я завідую кафедрою системного програмування. Сподіваюся, що я знаю, що таке системне програмування. Давайте я теж буду вчити програмування, а писати в дипломі "спеціаліст за методом Монте-Карло". Кому це сподобається? Звичайно, всі розуміють, що треба залучити людей, звучить назва спеціальності добре, але не зовсім відповідає змісту курсу.

Повернемося до того, що я дійсно вважаю хорошим. Наприклад, спеціалізації 35.15: математичні основи інформатики, інформаційні системи, технології програмування, архітектури обчислювальних систем, мережі. Далі: експертні системи, теорія оптимізації баз даних, інтернет та інтранет, інструментальні системи для С + +, Java-технології, інструментальні засоби візуального програмування, інструментальні засоби логічного програмування, технологія трансляції, мови і системи програмування, технологія програмування, архітектура ЕОМ, програмно -апаратні комплекси, операційні системи реального часу, телекомунікації, і так далі.

Ми на кафедрі підрахували годинник цієї програми, все одно 50% - це "чиста математика". Найголовніший недолік навіть не в цьому, а в тому, що та половина часу, яка нам відведена на спеціальність, віднесена на кінець. На перших трьох семестрах - тільки 4 години на тиждень. Уявляєте собі, людина вступив на відділення інформатики, не на відділення "чистої математики", не на відділення астрономії чи механіки. І вчиться півтора року, три семестри, маючи 4:00 програмування на тиждень! У самих різних видах, все про все. Як можна його навчити? Найцінніше час минає. Я навіть зустрічався із заступником міністра освіти, обговорював це все у нас в Університеті, в УМО. Сценарій розмови завжди був таким: "На кого скаржитеся, ви ж самі професор, член УМО! От і вносите пропозицію, скоротіть те, додайте це, для чого і створено УМО". Добре. Коли я тільки намагаюся це робити, мені відразу говорять: "Як? Ти що? На факультеті працюють старі професори, які і тебе вчили мат. Аналізу, алгебри, геометрії вищої ... Якщо ти зменшиш навантаження, їх треба буде скорочувати. Невже ти хочеш звільнити старих професорів-математиків? " Звичайно, не хочу. Але є правила, встановлені Міністерством, що кількість викладачів пов'язано з кількістю студентів. Якщо число студентів зменшилася, відповідно зменшується число викладачів. Тобто така проста річ, як перерозподіл годин, вже стикається з міністерськими правилами, і ніякої Університет, ніяке УМО змінити це не може.

У нашій програмі є федеральний компонент, вузівський компонент (регіональний) та за вибором. Федеральний компонент: математичний аналіз, 4 семестри, кількість годин на тиждень: 8, 4, 6, 6. Алгебра і теорія чисел, три семестри, годинник: 4, 4, 4. Геометрія і топологія, три семестри, годинник: 4, 4, 4. Диференціальні рівняння, два семестри, по 4 години. Функціональний аналіз, один семестр, 4 години. Коли я був студентом, було два семестри. Рівняння мат. фізики: один семестр, але 6 годин. Теорія ймовірностей і математична статистика: два семестри, 7 годин.

(Коли я навчався, вся теорія ймовірностей обмежувалася вивченням міри Лебега. Про те, що ймовірність знаходить застосування в нашій науці, я дізнався років через 15: виявляється, відмови обчислювальної техніки розподілені за законом Пуассона. Так можна оцінити ймовірність відмови, але дізнався я про це тільки коли зіткнувся на практиці. Ми зробили нову обчислювальну машину, від нас вимагали розрахунок, я взявся за книжки, і з подивом дізнався, що теорія ймовірностей - корисна наука. Мені було вже під сорок. Нічому такому, як пророкувати відмови, як рахувати їх інтенсивність - нічому цього нас не вчили. Одні інтеграли, інтеграли, інтеграли. Ні, з цих інтегралів потім ідуть і закон Пуассона, і все інше, але містка між мірою Лебега і ще чим-небудь корисним немає.)

Є обчислювальний практикум, три семестри по 2 години, і є програмування, три семестри, 3, 2, 2 години. А тут повинні бути общепрофессіональние дисципліни (федеральний компонент): архітектура обчислювальних систем комп'ютерної мережі, операційна система оболонки, структура алгоритму комп'ютерної обробки даних, бази даних і СУБД, комп'ютерне моделювання, комп'ютерна графіка, теорія формальних мов і трансляцій, спецкурси за вибором, спецсемінари. Але проти всього цього - порожні клітки.

Далі, розглянемо третій курс (п'ятий-шостий семестр). Десять годин на тиждень. Як можна навчити студентів? І тільки на 4-5 курсі починають вчити "за фахом". Але на п'ятому курсі вже переддипломна практика, там тільки спецкурси, і те потрошку. Тобто ми можемо вчити практично тільки четвертий курс. Хіба так можна? Ось де проблема. Причому не можу сказати, що у мене є рішення.

Теза третя - необхідність теорії. Один мій колишній однокурсник зараз професор Західно-Берлінського технічного університету. Я бував у нього, і він у нас побував кілька разів. Я одного разу його запитав, чого навчають у них в університеті. З'ясувалося, що вивчають і логіку, і все інше, але формулювання теорем. Я його запитав: "Скажи чесно, якщо я зараз підійду до якого-небудь вашому студенту і запитаю, що таке теорема Геделя про неповноту, він відповість?" "Ні, - каже, - навіть не згадає". "Тоді навіщо так вчити?" - "Ну, належить. А навіщо вам теорема Геделя?" "Хоча б для того, - кажу, - щоб молодий спеціаліст мав уявлення про межі застосування. Теорема Геделя говорить про те, що коректність арифметики не перевірити засобами самої арифметики, і дає теоретичні обмеження, що треба шукати якісь метатеорії, залучати додаткові можливості . Якщо людина про це навіть не підозрює, він буде в якихось місцях марно витрачати час. У мене був випадок, коли один випускник кафедри мат. фізики, працює у нас, повинен був реалізувати аналіз потоків даних у програмі. Він досить швидко все реалізував. Найпотужніша машина тоді була 486-я, і він на ній 4:00 тест з 20 рядків ганяв. Я подивився програму - простий перебір шляхів у графі. Я його питаю: "Ти хіба не знаєш, що число шляхів у графі зростає експоненціально щодо числа вершин? "-" Не знаю. Подумаєш, експонента! Машина залізна, все порахує ". Я йому довго читав лекцію про актуальну нескінченність, про те, що якщо в програмуванні бачиш експоненту, то треба шукати інше рішення. Це не означає, що треба здаватися. Я часто наводжу студентам такий приклад. На конференції, присвяченій 1000-річчю алгоритму, в Ургенчі (на батьківщині Аль-Хорезмі), була представлена ​​стаття Ю. В. Матіясевіча "Що нам робити з експоненціально складними завданнями?" Це мені подобається, це конструктивний підхід. Не просто "Все, здаюся, більше нічого зробити не можемо ". Завжди можна знайти окремі випадки. Є й інша протилежність" теоретичного "сприйняття завдання. Інший не менш відомий вчений мене мучив, коли я здавав кандидатський мінімум: що значить теорема Геделя про неповноту? І змушував мене на іспиті (за два тижні до захисту дисертації!) визнати, що з цього випливає, що машина не все може. Але це не так! Немає загального підходу - знайдемо приватні.

Наприклад, знаєте, на чому заснована шифрация? Зводять завдання до якої-небудь важкою (наприклад, розкладання числа на множники). Мої колеги, практики, зробили систему шифрування. Популярна система, продається добре. Вони мене попросили показати кому-небудь з колег - наскільки їхня робота теоретично обгрунтована. Я попросив Ю.В. Матіясевіча подивитися їх статті. Він хвилин 10 дивився, відразу вказує мені фразу: "Оскільки ніякого іншого способу обчислити, крім як простий перебір, ні, це трудноразрешимая завдання". Мені навіть образливо стало, що сам не розгледів. Раптом знайдеться якийсь інший метод, який для даного конкретного класу задач знайде гарний алгоритм? Тоді все це розсиплеться як картковий будиночок. Можливо, такого методу і не знайдеться, але математика відрізняється тим, що все треба доводити. Вони не довели, що іншого методу, крім прямого перебору, немає. Я трохи в бік пішов від основної теми, але ніякого протиріччя в порівнянні з тим, що я почав говорити, немає.

Отже, потрібні теоретики, потрібні дослідження, і потрібні докази. І вже якщо людина говорить, що ця система шифрування стійка - будь люб'язний, доведи, що ніякого способу, крім повного перебору, немає. Інша справа, що і в деяких класичних задачах криптографії це питання досі відкрите.

Якщо у тебе немає теоретичної підготовки, то так і будеш перебирати шляху в графі, не замислюючись про експоненціальної складності алгоритму. На практиці це означає, що алгоритм працювати не буде. Теорія дає певні межі: за що братися, за що не братися, де шукати, де не шукати. Де з самого початку треба шукати зріз, підзадачі, спеціальний випадок.

Все-таки це знання становить малу частину нашої професії, 5-10%. Просто є речі, які треба знати. Якщо ти їх взагалі не знаєш, можеш налетіти на такі граблі, що лоба собі расшібешь.

"Нам потрібні не прилади в принципі, а прилади в корпусі". Давайте, все-таки, поговоримо про програмування. Я багато разів читав лекції в Гамбурзі, і в Класичному університеті, і в Технічному університеті, там навіть поговорити про програмування часто не з ким. Дві крайності: або "коробочнікі", які вміють користуватися стандартними програмами, або теоретики, які займаються чимось таким, що невідомо коли на практиці здійсниться. А людей, що займаються нормальним програмуванням, часто і не зустріти.

Я наведу ще один приклад. Приблизно в 1975 році ми отримали першу ЄС ЕОМ 1030 серед цивільних організацій СРСР, про це навіть в газетах писали. Перші ЄС ЕОМ йшли тільки на оборону. І ось ленінградський мат-хутро отримав за рахунок того, що ми робили багато програм для ЄС ЕОМ, найпершу машину. Приклад полягає в наступному. Машина часто ламалася, а ми сиділи вечорами, ночами. Робити було нічого, всі теми були обговорені, весь чай випита. І ось я почав одну дівчину-оператора навчати його своїй коханій мові АЛГОЛ-68. Такий складний мова програмування, і рідко який студент міг його освоїти у повному обсязі. Але часу було багато, дівчина була симпатична, треба було про щось говорити. І за тривалий час, кілька місяців, я навчив її так, що не кожен студент міг з нею зрівнятися. Кажу їй: "Тепер тобі треба переходити працювати програмістом. І зарплата вище, і робота цікава. Адже що таке робота оператора? Поставити диск, завантажити машину". І тут я з жахом зрозумів, що вона не знає, що програмувати. Вона не знає, як можна Ітеративний обчислити квадратний корінь, вона не знає, як влаштований транслятор. Вона знає мову програмування, іспит здати може, а програмувати не може. На мене цей епізод справив дуже сильне враження.

Минуло 25 років, начебто багато що змінилося. Але подивіться, ми з Вами тут сидимо, кожні 10 хвилин двері відкриваються. Кожен третій приходить з питанням: "Андрій Миколайович, я хочу у Вас працювати. Я чув, що у Вас багато людей займається цікавою роботою". "Дуже добре, що ти знаєш?" "Я вмію програмувати на Паскалі". "А що ти знаєш-то?". "Ну як, я ж навчуся". "Подивись на список спецкурсів кафедри. Що з цього ти знаєш?". "Нічого". "І як ти будеш працювати? Я тебе визначу до групи" Телефонія ". Ти знаєш, що як влаштовано? Що ти там будеш програмувати? Ти вмієш писати a: = b, a: = b + c, але ж це не програмування. Треба знати, що програмувати ".

Результатом таких розмов може бути одне з двох. Хтось все життя мене після цього ненавидить за те, що він хотів займатися цікавою справою, а злобний Терехов на нього відро холодної води вилив, а бувають такі дурні, які кажуть: "Нічого, я навчуся". Добре, перші три місяці стажування, і якщо з'ясується, що людина працювати не може, йому просто ввічливо скажуть: "Вибач, друже, нам треба рухатися далі". Це не означає, що людина пропаде, може бути, він до іншої групи потрапить. Буває, що люди з третьої спроби своє місце знаходять. Буває так, що людина навчиться в процесі роботи, але це швидше виняток, ніж правило. Правда, це обходиться великими зусиллями, ніж у студента в процесі навчання, але зате закріплення зовсім інше, і мотивація інша.

Отже, третя теза був приблизно такий. Між собою взаємопов'язані практика, межі між теорією і практикою, кордони придатності теорії, деякі особисті знання. Студент вчив теорію, вчив, куди не треба ходити, але я не хочу, щоб це перетворювалося в основу науки. Я вважаю, що все-таки основа науки в тому, як треба робити. Я пояснюю своїм студентам, що системний програміст - це сфера обслуговування. Ми не робимо кінцевих продуктів. Наприклад, людина проводить розрахунки. У нього є якийсь результат. При цьому він користується трансляторами, операційними системами, обчислювальними машинами, які придумали інші люди. І системники - якраз ті люди, які роблять транслятори, інструментальні засоби, розробляють методології щодо їх використання. А потім вже прикладні програмісти цими засобами та методологіями користуються і отримують кінцевий результат. Дуже часто, до речі, люди бачать тільки кінцевий результат, особливо коли йде мова про розподіл грошей, і зовсім не бачать тієї дороги, тих труднощів, які були витрачені, щоб цей результат отримати. Системне програмування - це досить стара назва. По-русски ми добре знаємо, що таке системне програмування. Але були проблеми, як перевести це словосполучення на англійську мову. Є наука computer science, вона більш теоретична. А є наука software engineering. Ось я завідувач кафедрою software engineering. Еngineering - це розробка програмного забезпечення. І мені здається, що це досить чітко зараз визначилося.

Тепер наступну тезу, наступна проблема. Ось захищається мій аспірант у нас на Раді. Я сам член Вченої Ради. І кожен раз попадається який-небудь, м'яко сказати, недоброзичливець, який, оскільки на Вченій Раді може виступати хто завгодно, говорить: "Ви знаєте, я не розумію, чому це математика. Ні теорем, немає доказів збіжності, чому ця дисертація захищається на математичному факультеті? " У реальній дійсності найкраща відповідь - сказати: "Ви нічого не розумієте в цій області". Часи, коли математика була тільки в теоремах, скінчилися, як мінімум, 100 років тому, а, може, й більше. У середині XIX століття Ч. Беббідж придумав обчислювальну машину, в якій були всі основні елементи (процесор, пам'ять, програма, що зберігається в пам'яті). Дочка Байрона, Ада Августа леді Лавлейс, п'ятисторінковому доповідь на італійській мові цього Ч. Беббіджа перетворила у 100-сторінковий англійський текст, де вперше ввела слова "Переадресація", "Процедура", "Цикл" - це що, не математика? Це було зроблено більше 150 років тому. Була розроблена нова модель.

Проблема вирішується просто, якщо говорити серйозно і без злості. Просто мені вже набридло 20 років пояснювати одне й те саме. Є спеціальність - "Математичне забезпечення обчислювальних машин, мереж та систем". Це не мат. аналіз, не мат. фізика. Є критерії, які пред'являються до кандидатської дисертації. Нові результати з практичним впровадженням, мови програмування, їх реалізація, операційні системи, і, найголовніше, моделі. Математика починається тоді, коли ми можемо щось формалізувати, коли ми можемо сформулювати завдання настільки точно, що можна побудувати алгоритм.

Чому виникли потреби в строгій формалізації? Тому що прийшло розуміння того, що деякі завдання в принципі не можна вирішити, потрібна алгоритмічна формалізація, і за допомогою цих формальних методів вдалося довести нерозв'язність декількох проблем. Перші такі докази було коректно отримані в 30-х роках XX століття. Чому це, коли я довів, що цього немає і бути не може, це математика, а коли я побудував формальну модель і за неї зробив алгоритм, який працює - це вже не математика? Ніхто не сказав, що тільки негативні результати є математичними. У нашій країні такий консерватизм особливо сильний. Коли в 1953 році з'явилася БЕСМ, відразу з'явилися дисертації, наприклад, такого змісту: "Розрахунок скосу залізничного полотна". ВАК ухвалила рішення про недопущення до захисту робіт, що носять чисто розрахунковий характер. Це було правильне рішення, але разом з водою виплеснули і дитину. Добре, чистий розрахунок за формулами - це не наука, всі визнають. Але, наприклад, як зробити систему програмування для БЕСМ? Коли БЕСМ-6 з'явилася, в 1966 році, 6 колективів робили операційну систему. І перемогли не найвідоміші академіки країни. Я пам'ятаю всі прізвища, але не хотів би їх нагадувати, щоб нікого не образити. Це справді важке завдання.

Кордон між "наукою" і "не наукою" в даному випадку достатньо зрозуміла, професіонал її знає, але досить важко формалізуються, і тому викликає масу проблем у нашій науці. І постійно на Вченій Раді хто-небудь починає пояснювати, що це "не наука". Важливо створити нову модель, нову мову, новий метод, новий алгоритм, показати, що він відрізняється від інших. Я вже багато разів був опонентом, а не тільки керівником дисертації. Для новачка, для людини з боку це, може бути, буде навіть дивно. У завдання опонента входить не тільки оцінити, хороша дисертація чи погана. Головне завдання - оцінити співвідношення цієї роботи з іншими відомими роботами. Чи не забув дисертант, що це вже зроблено? Він порівнював свою роботу з іншими? Чи не забув він якийсь важливий результат, який був отриманий іншим, а в нього навіть не згадано? І друге - наскільки коректно проведено порівняння власної роботи з іншими відомими роботами? У вимогах ВАК чітко зазначені задачі двох опонентів: наскільки повно дисертант висвітлив інші роботи у цій галузі і наскільки коректно порівняв свою роботу з ними. Якщо відомий результат, який перекриває результат дисертанта, а дисертант про це не згадав, то завдання опонента - про це згадати.

Це проблема, яка є до цих пір, і про це треба писати в самих різних, і в наукових, і в публіцистичних матеріалах. Є така наука, яка називається software engineering, в ній є своя область діяльності, свої вимоги, свої критерії. Професіонали знають, що зробити гарний транслювати - це дуже важко. Зробити технологію, якою користуватиметься широке коло людей - це теж дуже важко. І так далі.

Наприклад, зараз у нас час захисту дипломних робіт. У мене захищається в цьому році 19 чоловік. Отже, приходить студент V курсу, який провів півроку десь на практиці. Показує свою програму. Я кажу: "Добре, давай подивимося, наскільки наукова твоя робота. Що тут найголовніше? По-перше, наскільки це новий результат? Чи писав хто-небудь про це раніше?". "Не знаю". "Ти робив огляд літератури?". "Ні" ... Чим відрізняється дослідник від практика в гіршому розумінні цього слова? Дослідник зрозуміє, що не треба винаходити велосипед. У наш час, коли є Інтернет, інші канали отримання інформації, має сенс подивитися, що зробили інші. З цього треба починати. Далеко не всім це спадає на думку. Друге. Знайшов, що такого результату немає, і ти його сам отримуєш. Але є схожі результати. Проведи порівняльну характеристику. Мене дратує така ситуація: люди працювали, писали дипломи, писали дисертації. Питаєш: "Чим ваша технологія краще, ніж інші?" І йдуть аргументи: "З одного боку не можна не визнати, з іншого боку не можна не погодитися ..." Питаю: "Хлопці, ви витратили на цю роботу стільки сил і часу. Ми інтуїтивно розуміємо, що це добре. Але хіба так важко все це чітко сформулювати, а між багатьма програм є демо-версії, і порівняння їх з вашим варіантом входить в роботу" . Нинішня молодь ніяк не розуміє, що просто зробити щось, що працює, це менше половини справи. Справжній дослідник повинен дивитися, як працюють інші, викачувати демо-версії, читати інструкції - як у них запускається програма, навчитися запускати, подивитися, попрацювати, зрозуміти, що добре, що погано, може бути, запозичувати якісь ідеї. Необхідно чітко сформулювати, в чому твоя заслуга. Що ти такого зробив, чого в інших немає? Зараз цим займаються тільки бідні дисертанти, і те, на жаль, є така десятиліттями сформована практика, що вони займаються цим в останній момент, коли вже "цегла" пишуть. Покладено мати огляд літератури за темою, вони і сидять в бібліотеці по 3 місяці в самому кінці. І, між іншим, на моїх очах була ситуація, коли аспірант захищається з налагодження, а його на Раді запитують: "Як це співвідноситься з такими-то методами налагодження?" Виявилося, що він у бібліотеці Академії Наук порівнював свій метод з американськими роботами, а те, що в СРСР є такі роботи, і не знав ...

Зараз я спробую ще раз сформулювати цю ідею. Далі тобі роботу - не полінуйся, витрать час, подивися, що є в інших. Які є методи. Не винаходь велосипед. І в той же час - ніякого нізкопоклоннічества перед Заходом, навіть якщо там є якісь публікації. Подивися, наскільки вони гарні. Якщо гарні - використовуй, з посиланням. Для цього і існує вся світова наука, щоб користуватися її результатами. Не треба нічого висмоктувати з пальця. Але погано, коли людина не витратив часу на те, щоб зайвий раз подивитися, а потім йому хтось інший вказує на точно такі ж, якщо не кращі, результати інших дослідників.

Отже, важливо вміння сформулювати завдання, вміння подивитися на неї з боку "що є у світі", вміння чітко пояснити, що в тебе нового.

Я в черговий раз відволікся, але все-таки закінчу. Отже, приходить студент або студентка з дрібної фірми з програмою. Ніякого аналізу не зроблено, порівняльних характеристик не зроблено, ніяких моделей не побудовано, нічому новому він не навчився, то є просто сидів і працював на зарплату. Що тепер робити? Я запевняю, що це не може бути дипломною роботою. Дипломна робота обов'язково повинна нести елемент наукової творчості.

А зі студентами зазвичай відбувається наступне. Переддипломна практика, слава Богу, на першому семестрі п'ятого курсу. І коли людина нормально практику пройшов, чогось навчився і прийшов з результатом, у нього ще є час на те, щоб перетворити цю роботу в дипломну. Бувають сміховинні випадки. Два студенти зробили транслятор з Java. Жодних посилань - ніби-то в безповітряному просторі. "Скільки ви знаєте трансляторів з Java?" "Один або два". Пошукали в Інтернеті - виявилося 20-30. "Дайте порівняльні характеристики". З'ясувалося, що програють у 500 разів одному з трансляторів. Кажу: "Хлопці, я читав про унтер-офіцерську вдову, яка сама себе висікла, але не думав, що це може бути серед студентів мат-хутра". Подивилися програму - це оптимізуючий транслятор з мови С. Java - це інтерпретатор за визначенням, тому їх і порівнювати по ефективності не можна, це завдання з абсолютно різними цілями. Уміння грамотно сформулювати тут було необхідно. Добре, що я встиг побачити цю дипломну роботу, інакше над нами б ще довго сміялися.

Або інший приклад. Приходить студент з роботою за темою "розпаралелювання". Я не був науковим керівником, але, прочитавши працю, відчув, що я таке сто разів чув. У мене в цей час дочка в Англії була, і саме займалася розпаралелюванням. Подзвонив їй, вона перерахувала методи і засоби, які зараз використовуються. На хлопчика було шкода дивитися. Звичайно, він отримав нормальний результат, щось порахував, і думав, що винайшов новий метод. Він був упевнений, що ніхто в світі цього не знає. Звідки така впевненість? Звичайно, ми вчимо своїх студентів тому, що "мат-хутро краще за всіх", але всьому є своя межа. Так само не можна, ти ж не один у світі.

Отже, теза такий. Ми готуємо фахівців в області software engineering, це своя предметна область, зі своїми законами, своїми порядками, своїми обмеженнями, і, саме головне, зі своїми завданнями. У той же час ми готуємо університетських людей, які повинні бути здатні, я на цьому жорстко наполягаю, не лише написати програму і придумати ефективний алгоритм, а й порівняти, обгрунтувати, зрозуміти теоретично можливі межі застосовності. Це обов'язково входить до університетську освіту.

Але хто сказав, що тільки такі люди потрібні? Ми переходимо до наступного питання. Ось переді мною лежить проект програми. "Федеральна цільова програма електронної Росії на 2002 - 2010 роки". Мені дуже сподобалася фраза: "В даний час спостерігається певне перевиробництво" масових "фахівців з вищою освітою, зокрема, в області створення програмного забезпечення та технічної підтримки інформаційно-обчислювальних і комунікаційних систем, які часто змушені виконувати функції, які не потребують широкої теоретичної підготовки, які можуть і повинні заміщатися фахівцями з середньою освітою ". Ще рік тому у зв'язку з конференцією з Наукограда я вивчав матеріали про аналогічні зони в Індії, в Ірландії. В Індії готується на рік 5000 master of science (аналог нашої вищої освіти) і 27000 бакалаврів. Ми намагалися прикинути, скільки у нас готується. Вийшло кілька тисяч програмістів з вищою освітою дуже різного профілю. У нас і залізничний інститут, і інститут водного транспорту готує програмістів, але все одно виходить лише кілька тисяч. А бакалаврів немає взагалі. У мене, як бачите, вся стіна обвішана дошками з іменами наших співробітників, які готують команди на міжнародні олімпіади з програмування. П'ять років поспіль в десятці з 2500 команд, два роки поспіль чемпіони. Це приємно. Але тільки за 5 років жоден з них не став професійним програмістом. Вони математики. Зараз Андрій Лопатін перейшов на нашу кафедру і переучується. Не можна сказати, що у нього все так бравурно йде, він витрачає сили, час, і сподіваюся, що з нього ми зробимо професіонала. Це перший такий приклад за 5 років. Я і раніше намагався сказати, що ми занадто сильно концентрувалися на результатах олімпіад. Дійсно, важливо перемагати на олімпіадах, важливо мати дослідників. У мене на підприємстві є кілька людей, таких, що якщо хоча б один з них піде, моє підприємство лопне. Є люди, на яких тримається підприємство, тому що вони придумують нові ідеї, вони всі цементують. У мене на підприємстві більше 200 чоловік, а таких, без яких все зупиниться, 2-3, може бути, 5, якщо молодих додати. Якщо підуть інші - можна знайти їм заміну. Але саме решту 200 чоловік виконують основний обсяг роботи. Бакалаврат у нас якось не прижився, але потрібно знайти якісь спрощені форми.

Іноді кажуть: "У нас такий відсів, у нас їдуть на Захід". У нас на кафедрі деякі виїжджають, за всі роки чоловік 15 з 250-300 випускників виїхали за кордон. Багато хто з цих 15 не просто так поїхали, а за погодженням зі мною перейшли в компанії в США, які зі мною ж співпрацюють. Тобто можна сказати, що ці випускники зі мною ж і працюють, тільки з іншого боку. До речі, це дуже допомагає. Завжди приємно, коли там свої люди, що говорять по-російськи, з нашим менталітетом. Справа не в англійській мові, у нас по-англійськи всі говорять, але коли там сидить людина і може поговорити на "ти" з кимось із наших, це завжди сильно допомагає. Так що це навіть не можна назвати втратою. Буває відсів, коли йдуть в інші компанії. Буває так, що випускник нашої кафедри йде за зарплатою в 1000 доларів. Я стільки платити не можу. А вони йдуть, і часто страждають. Ось зараз Artificial Life оголосила, що закривається, інші компанії скорочують кількість співробітників. Я не те що мстивий, я стежу за своїми учнями. Цей був змушений піти туди, цей туди. Не все в них погано, слава Богу, але за довгим рублем гнатися не варто, особливо в молоді роки.

Ще ненадовго відволікся, аж надто приклад для мене цікавий. Коли їхали хокеїсти рівня Ларіонова і Фетісова, це було одне. Люди, які зробили ім'я, вони за кордоном добре відомі. Коли їдуть 19-20-річні хлопці, щоб роками грати у фарм-клубі, то потім, навіть коли намагаються повернутися, вже тут не можуть грати на гарному рівні, тому що там вони не грали у таких великих тренерів, як Тихонов, Тарасов, і мали мало ігрової практики. Аналогія абсолютна. Одна справа - людина закінчила мат-хутро, ще краще - аспірантуру, захистився, отримав 5-10 років стажу, попрацював, приніс користь своєму підприємству, своєму рідному університету, навчив молодих фахівців, і поїхав. Вперед, я навіть допоможу. Це професійне зростання, це цікава робота. Я зовсім не до того, що не можна їздити. Він там отримає нові знання, нові сили, нову інформацію для себе і, можливо, для нас. Може нам принести замовлення, цікаві наукові дослідження. Все це зрозуміло. Я вважаю, що це нормально. Мій улюблений анекдот: "Циган говорить своїй дружині:" Що-то діти в нас замурзані. Цих відмиємо, або нових наробимо? "Я виходжу з принципу, що ми завжди нових наробимо, для цього я зав. Кафедрою. Зовсім інша справа, коли їде зовсім молода людина. У мене був випадок, коли студент півроку не довчився диплом не захистив, і поїхав. Адже диплом Ленінградського - Петербурзького університету в усьому світі визнається. "Ви вибачте, може бути, мені перейти на іншу кафедру, щоб вашу кафедру не ганьбити?". "Так, - кажу, - і так їдь!" Але я вважаю , що це вже перебір. Кому він там потрібен? Зараз там надвиробництво програмістів, масові скорочення. Знову-таки, не подумайте, що я зловтішаюся. Хоча, звичайно, тих, хто мене кинув, тим більше "на півслові", не передавши матеріали , не передавши інформацію, я теж запам'ятовую. Були різні неприємні випадки, але мені не хотілося б про них докладно розповідати.

Повинні бути якісь закони. Я на початку розмови згадував про федеральну складову. Я не можу цей закон обійти. Якщо я його не виконаю, то диплом буде вважатися недійсним. Ці питання треба вирішувати на державному рівні. Рівне така ж ситуація і з від'їздом молодих фахівців. І вона, до речі, вирішується. Не вирішена, але вирішується. Якщо цим цікавитеся, пошукайте в Інтернеті. У багатьох країнах дається кредит на освіту, який ти повинен відпрацювати. Якщо їдеш - будь люб'язний, віддай. Невже ми настільки заможні, щоб про це не думати? Повинні бути певні жорсткі державні закони. Якщо студент або його батьки платили по 5000 доларів за семестр - їдь, куди хочеш. Але якщо на тебе держава витратив стільки грошей - чому ми повинні відпускати людини, який у нас отримав освіту? Таким чином, коли людина вже захистився, підготував інших фахівців, віддав борги в самому гарному сенсі цього слова, моральні та матеріальні борги університету, підприємству, колективу - все, я йому допоможу, нехай їде, розвивається далі, я ще знайду йому гарне місце в Америці. Я в цьому випадку нічого поганого не скажу.

Як кажуть американці, "Якщо ти такий розумний, чому ти такий бідний?" Я розумію, що у людини, що займається класичної математикою, будуть проблеми. Один мій приятель, алгебраїст, який нещодавно поїхав, говорив: "Якби наша держава хоча б третину тих грошей, що в США, платило, я працював би тут. Зрозумій мене, я не хочу займатися програмуванням". Все зрозуміло, я теж не хотів би займатися алгеброю. А це фундаментальна наука, і держава її практично не підтримує. А у нього сім'я, двоє дітей, от він і поїхав. Я в нього каменем не кину. У нього виходу не було, його держава так підставило. І не він один. Але це "класична наука". А люди, які займаються прикладними речами, живуть. Причому не тільки програмісти. Я зараз спілкуюся, наприклад, з людьми, які кораблі будують. Є замовлення, є цікава робота, є зарплата.

Отже, якщо програміст бідний, значить, він погано працює. У нас така спеціальність, що на шматок хліба в Петербурзі заробити можна. Для мене від'їзд за кордон не представляється серйозною проблемою. Коли говорять про "витік мізків", це скоріше гасла для демонстрації. Створіть робочі місця, забезпечте цікавою роботою, забезпечте пристойну зарплату (хай не на рівні США, але так, щоб тут можна було утримувати сім'ю), і майже ніхто не поїде. Поїдуть лише ті, хто любить пригоди.

Що таке державна підтримка? В Ірландії, якщо підприємство робить програмне забезпечення, воно платить 10% податку з прибутку при нормі 28%. Але це стосується тільки до прибутку, отриманої від програмного забезпечення. Програмне забезпечення відрізняється в кращий бік від багатьох інших видів продукції тим, що це поновлюваний ресурс. Індія завдяки розвитку телекомунікацій і програмного забезпечення отримує великі гроші з експорту, в країну повертаються ті, хто раніше її покинув. Ірландія - маленька країна, але виробляє 40% софта в Європі. Десять років тому це було важко припустити, але багато що вирішує розумна державна підтримка. Все повинно бути в розумних межах.

Отже, державна підтримка - важливий момент, і є позитивні приклади - Індія, Ірландія, Ізраїль. Мається на увазі не тільки податкова політика. Наприклад, добре підібрана програма навчання - це державна підтримка. Інфраструктура телекомунікацій - це державна підтримка. Зручний проїзд до найбільших навчальних закладів - теж державна підтримка. Згадайте наш мат-хутро! У нас міг би бути зовсім інший контингент студентів, якщо б електричка ходила півгодини, а не годину, як зараз. До речі, в 1979 році, коли ми переїжджали, електричка в напрямку станції Калище до Університету йшла 35 хвилин. Зараз всі тільки погіршився.

У Сінгапурі у Школі програмування на IV курсі заняття починаються о 17 годині. Справа в тому, що якщо ти не працював на фірму повний робочий день - диплом не видадуть. Який ти програміст, якщо ніколи не працював професійно? І це на денному відділенні. Спочатку попрацюй, і нехай відгук дадуть, що ти дійсно програміст.

На півдні Швеції в деяких маленьких містечках, по 30 тисяч жителів, є свої IT університети. Наприклад, п'ять факультетів: програмування, технології, архітектура телекомунікацій, економіка, юриспруденція. Відділення в Англії, в Техасі, багато професорів, і програми хороші, я сам їх дивився. У Швеції кожен університет оточений технопарком, 200-300 дрібних компаній. Держава надає будівлю (побільше нашого мат-хутра). Аудиторії, місця для конференцій, дешеві готелі. Виходить такий симбіоз: університет готує фахівців, які працюють в цих фірмах. Технопарку вигідно мати ресурси, а університету вигідно мати фінансову підтримку і зворотний зв'язок, чому вчити і як вчити. Я вже давно кажу, що в нашому університетському містечку теж треба б зробити технопарк. Поки що ніяк не виходить. Потрібна допомога держави. Ще раз повторюю, що справа не тільки в грошах і не тільки в податкових пільгах. Є багато речей, які держава могла б зробити в плановому порядку.

І ще одна тема - розвиток власне науки. Є клас людей, які готові працювати за менші гроші, але за умови, що будуть займатися наукою. Це особливість психіки людини, якій нецікаво робити софт з заздалегідь вказаними властивостями в жорсткі терміни "від забору до обіду". Але таких людей мало. І проблема в тому, що в Петербурзі є сотні компаній, де платять пристойні гроші, і програміст може просто заробляти, але підприємства наукою займатися не хочуть.

Ми не можемо все звести до робіт "на замовлення", навіть якщо робота добре організована, підтримана потужними сучасними технологіями, налагоджені всі організаційні процеси. Хто буде створювати нові ідеї, нові методології, нові інструментальні засоби? На мій погляд, є певний відсоток випускників університету, у яких в особливостях психології закладено, що вони хочуть сидіти в тиші лабораторії і займатися наукою. Це люди, які готові отримувати, скажімо, у два рази меншу зарплату, ніж люди на фірмах, але займатися своєю улюбленою наукою.

До речі, перший раз я зіткнувся з цією проблемою в Гамбурзі. Хороші викладачі Гамбурзького університету отримують 7000 марок. Це було в 1989 році. Я навів довідки, і з'ясував, що можна працювати у програмістській фірмі та отримувати 20000 марок, тут же, у Гамбурзі. І місця є, і запрошують. Але викладачі на таку роботу не прагнуть потрапити. Я постарався дізнатися, чому. Відповідь була наступною: "По-перше, 7000 марок цілком досить, у мене є будинок, у мене є дача, машина, що мені ще треба? У бочку, чи що, ці гроші складати? А, по-друге, у програмістській фірмі буде жорстке управління, жорсткі накази. Я цього не люблю. Я працюю в університеті. Цій зарплати мені достатньо, щоб пристойно існувати, але я хочу займатися саме наукою ".

Я розумію цього викладача. Є такі люди. Якщо б не було таких людей, то наша наука б зупинилася. Де їм працювати тут, в Санкт-Петербурзі? Яка фірма візьме на себе обов'язок матеріально підтримувати фундаментальні дослідження?

До речі, а що це таке - фундаментальні дослідження? У моїх прагматичних друзів-американців є забавна, але корисний критерій, як відрізняти фундаментальні дослідження від нефундаментальних. Якщо дослідження 3 роки не приносить прибуток, воно вважається фундаментальним, і та частина прибутку, яка в нього вкладена, звільняється від податків. І фірмі це корисно. Якщо ж, не дай Бог, через 2,5 року з цього дослідження вийшов результат, який був застосований на практиці, проданий, отримано гроші за нього - податковий інспектор перерахує податки за нього. Значить, дослідження не було фундаментальним. Можна посміхатися, дивлячись на це правило, але воно існує, і воно працює. У США дуже багато кумедних правил, але ще більш кумедно, що основна маса людей цим правилам слід.

Так, або схожим чином, або зовсім по-іншому, але можна придумати закони для підтримки фундаментальних досліджень. Наприклад, я директор підприємства. У мене більше 200 співробітників. У мене є свій директорський фонд, тобто порівняно невелика сума грошей, яку я забираю від інших замовлень і маю право витрачати їх на свій розсуд. Практично всі ці гроші я витрачаю на підтримку досліджень.

Але ті люди, які отримують гроші, відчувають себе "людьми другого сорту", тому що час від часу я змушений їм нагадувати, що мені потрібні результати, що маю за вас брав гроші в такий-то групи ... Це не поліпшує психологічний клімат. І ті люди, у яких я забрав гроші, теж не раді: "Краще б ти нам ще два комп'ютери купив, краще б ти нам нові меблі купив", і так далі. Завжди є необхідність щось купити, розумно витративши гроші для тієї групи, яка їх заробила. У мене навіть розпадалися групи, і однією з причин звільнення співробітників було їх незгоду з моєю політикою розподілу грошей. Вони твердо наполягали на тому, що вони заробили гроші, тому ці гроші повинні бути витрачені на їхню зарплату, в крайньому випадку, на їхню інфраструктуру, на комп'ютери. Навіть, може бути, і на дослідження, але тільки в цій вузькій області, де вони заробили гроші. І всі мої спроби пояснити їм, що так не буває, що ніхто не може передбачити, який напрям у науці проявить себе через два-три роки, ні до чого не призводять. Я вже й не кажу про те, що поняття "вони запрацювали" - абсолютно неправильне. Заробляє підприємство - директор, маркетологи, завгосп, мережеві адміністратори, і т.д. Коли "умовляють" замовника, посилаються на попередні роботи підприємства. Замовник з великим задоволенням працює з усталеним великим колективом, а не з малою групою, яка в будь-який момент може розбігтися.

Я не наполягаю на тому, що моє рішення єдино правильне. Можливо, в чомусь і вони мали рацію. Але, тим не менше, я щиро вважаю, що велике підприємство, диверсифіковане, тобто має багато напрямів роботи і багато напрямів досліджень, стабільніше і надійніше. Буває, що деякі напрямки, навіть дуже багатообіцяючі, несподівано колапсує. Нинішні різкі падіння коефіцієнта високотехнологічних виробництв в Америці, по-моєму, якраз це і показали. Скільки було очікувань від усіх цих нескінченних інтернет-додатків! А тепер йде масове закриття фірм, звільнення людей. Може бути, найдеться 2-3 розумних людини, які скажуть: "Я про це і говорив", тільки я таких не знаю. Важко передбачити, що розвинеться, а що ні.

Я вважаю, що ми (тим більше ми випускники мат-хутро!) Повинні працювати в можливо більш широкому наборі напрямків. По-перше, це цікаво, по-друге, такі закони науки, а, по-третє, це забезпечить певну стабільність, якщо щось все-таки з не залежних від нас причин або через нашу погану роботу не виправдає надій. У цьому випадку маленький колектив збанкрутує і буде вимушений шукати інші способи існування, а великі підприємства це спокійно переживуть.

Зрештою, я прийшов до розуміння, що підтримка науки не може бути виконана на рівні спонсорської підтримки, на рівні окремих пожертвувань. Як і скрізь, потрібна системність, потрібна структура, потрібні певні "правила гри".

Зараз я докладаю багато зусиль для створення інституту, який так і називатиметься: науково-дослідний інститут інформаційних технологій, що входить в структуру мого рідного Санкт-Петербурзького державного університету. Я провів бесіди з багатьма дослідниками нашого факультету, зокрема, і з такими, які дуже далекі від практики, але продуктивно працювали в нашій області і в computer science. Ми з ними намітили декілька напрямів, в яких дослідження особливо важливі зараз, навіть без стовідсоткової впевненості, що через два-три роки вони приведуть до видимого результату, який можна буде використовувати. Я отримав підтримку Вченої Ради факультету, хоча теж не без питань. Питання були такі ж, як кілька років тому, коли створювалася нова кафедра: "Навіщо потрібно ще щось нове? Чи не можна впоратися старими структурами?" Але, тим не менше, процес іде.

Я сподіваюся, що мені вдасться цей інститут створити. Більш того, під цей, поки не створений, інститут я знайшов західну компанію, яка готова матеріально підтримати проект. Причому я їх не обманював. Я говорив, що інститут буде займатися дослідженнями в області computer science і software engineering, і не обіцяв негайного прибутку. Тим не менш, великі компанії розуміють, що якщо підтримають дослідження, то все одно отримають вигоду. Якщо з'явиться позитивний результат, він в першу чергу буде застосований в їх інтересах. Це нормальний світовий процес, хоч в Західній Європі, хоч у США. Будь-який вчений з будь-якого університету до 40% свого часу витрачає на пошук грантів, їх обгрунтування. Не вважається негожим робити 3, 5, 10 спроб. В одному, в іншому, в третьому фонді.

У першу чергу, потрібна структура для такого пошуку. Потрібні спеціальні люди, які стежать, де оголошені гранти, де оголошені програми, які до них пред'являються вимоги. Саме ці люди повинні оформляти папери. Спочатку треба повідомити: "Колеги! Є такі-то пропозиції. Вимоги такі-то, терміни такі-то". Спеціальні люди повинні оформляти і розсилати папери (вчені не завжди вдало їх оформляють). Повинна вестися база даних: на що отримано позитивну відповідь, які зауваження були, як на них реагувати. Цим повинні займатися спеціально підготовлені люди, а не самі дослідники. І я думаю, що в наш час науково-дослідний інститут - це якраз та структура, яка зможе сконцентрувати всередині себе дослідників, забезпечити їм певну підтримку для того, щоб отримати фінансування, відслідковувати терміни та етапи досліджень.

Коротше кажучи, все повинно бути зроблено для того, щоб вчені максимум свого часу витрачали на дослідження, отримували за це гідну зарплату, щоб не треба було "халтурити", відволікатися на різні роботи. Мішки з картоплею і піском зараз ніхто вже не вантажить, але випадки, коли заслужені вчені, професори змушені займатися нецікавою роботою, далекою від науки, тільки для того, щоб отримати зарплату, я знаю. Їх багато.

Хто знає, яким вийде цей інститут? Але я щиро вірю, що інститут із міжнародною участю допоможе тим ученим, які схильні до наукової діяльності, не тільки вижити, але й активно брати участь в розвитку нашої улюбленої науки.

Додати в блог або на сайт

Цей текст може містити помилки.

Програмування, комп'ютери, інформатика і кібернетика | Реферат
114.9кб. | скачати


Схожі роботи:
Корисні статті для програмістів
Удосконалення системи нормування праці інженерів-програмістів на прикладі КБТЕМ-ОМО
Удосконалення системи нормування праці інженерів програмістів на прикладі КБТЕМ ОМО
Механізм обслуговування системних викликів
Математичне моделювання системних елементів
Розвиток системних ідей у ​​соціології
НМС для серверних системних плат
Основні поняття та напрямки системних досліджень
Економічна безпека Росії в період системних перетворень
© Усі права захищені
написати до нас