10 причин игнорировать диплом по информатике

Перевод статьи «10 reasons to ignore computer science degrees».

Информатики не пользуются спросом в компаниях

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

Давайте разберем два слова – «компьютер» и «наука». Первое очень много дало миру, от спасающих жизнь достижений в медицине до возможности виртуальных дискуссий в Twitter. Второе слово, «наука», представляет интеллектуальное движение, благодаря которому мы получили таки потрясающие достижения, как вакцины или полеты на Луну.

Почему же сочетание этих слов – «компьютерные науки» (computer science — информатика) – так мало впечатляет, когда мы ищем людей для наших команд программистов?

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

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

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

Теория отвлекает и путает

Теоретические знания

Многие информатики в душе являются математиками. Их образ мышления, настроенный на теоремы, распространяется и на компьютерные науки.

Один теоретик мне как-то сказал, что все математические доказательства это на самом деле просто программы (и наоборот). По крайней мере, в его сознании все обстоит именно так. Он заинтересован не столько в том, чтобы доставить работающий код, сколько в том чтобы доказать правильность кода. Окей.

Редкий студент факультета информатики дотянет до выпуска, не получив целебную дозу информации о NP-полных задачах и машинах Тьюринга. Это две прекрасные сферы теории и цены б им не было, если бы они не формировали в конечном итоге плохие привычки.

Однажды ко мне пришел один биолог и попросил решить проблему совпадения ДНК-последовательности. Я ответил, что это NP-полная задача, а такого рода задачи требуют много времени для решения. Но ему было все равно. Ему в любом случае нужно было решение. И оказалось, что большинство NP-полных проблем в большинстве случаев довольно легко решаются.

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

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

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

Академические языки редко используются

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

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

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

Вот почему Google при создании Go пошел другим путем. Создатели настаивали, что в этом языке должно быть мало конструкций, а его изучение должно быть простым и занимать, по возможности, не много времени. Такое упрощение помогло каждому члену команды, потому что все знали, что должно быть главным.

Многие профессора информатики являются математиками, а не программистами

математика, а не программирование

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

Многие из профессоров в последний раз программировали, когда сами заканчивали школу. С тех пор в их компьютерах все заросло паутиной, там, вероятно, и компиляторы не запустятся.

Многие обязательные предметы редко используются

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

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

Есть много других примеров тем, которые изучаются в вузах, но уже не являются важными. Компиляторы сложны и необходимы, но пишут их только студенты, которых заставляют создавать их игрушечные версии для курсовых работ. Даже Apple использовал инструменты с открытым исходным кодом при создании компилятора для Swift.

Математические модели заводят нас не туда, куда нужно

Любой изучавший теорию баз данных открыл для себя мудрость нормальной формы Бойса-Кодда – способа разбить тщательно продуманную структуру данных на маленькие таблицы. Это все очень элегантно и эффективно – если вы можете позволить себе ждать вечность, пока ответ на ваш SQL-запрос заполняется командами JOIN.

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

Начав применять свои знания на практике, многие разработчики тратят несколько лет на то, чтобы забыть математические премудрости, изученные в вузе.

Вузы культивируют самонадеянность

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

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

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

Многие современные навыки игнорируются

На многих факультетах просто не освещаются современные темы. Если вы хотите понять Node.js, React, проектирование игр или облачные вычисления, в среднем вузе вам дадут весьма мало информации по этим направлениям.

Учебная программа обычного вуза сосредоточена на основах, т. е., глубоких концепциях вроде состояния гонки. Подобные концепции будут частью вычислений даже когда о Node.js или React все уже забудут. Это благородная цель, но 99% того, чем занимаются программисты, это сражаются с причудами технологии, популярной именно сегодня.

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

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

Передовые технологии слишком задерживаются в своей академической стадии

Машинное обучение

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

Длительное пребывание на одной должности ведет к остановке в развитии

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

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

Интеллектуализм редко приносит результаты

Когда я однажды рассказал одному сотруднику факультета о том, что мой студент получил работу благодаря нескольким лекциям по Angular и React, он улыбнулся и сказал, что последнее, к чему он стремится, это превратить вуз в ПТУ.

Это прекрасно. Но сколько есть людей, готовых потратить почти полмиллиона долларов на изучение вопроса, полиномиальные или экспоненциальные ангелы танцуют на конце иглы?

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


[customscript]techrocks_custom_after_post_html[/customscript]
[customscript]techrocks_custom_script[/customscript]

1 комментарий к “10 причин игнорировать диплом по информатике”

Оставьте комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Прокрутить вверх