Почему не стоит учиться на программиста
Программисты
Давным-давно жили-были Программисты. Были они умные, знали дофига чего такого, что обычным людям ни в жисть не понять, и было их мало. Оттого спросом они пользовались необычайным, зарабатывали кучу денег и вообще считались уважаемыми людьми. Еще были Пользователи, которые тоже умели программировать. Даже больше того, в то время собственно пользование компьютером заключалось в написании для него программ. Каждому Пользователю приходилось учить Фортран или Бейсик, иначе компьютер превращался просто в бесполезный предмет интерьера. Конечно, до уровня Программистов Пользователям было как пешком до Луны, потому что для Пользователя программирование было лишь инструментом, подспорьем в проведении необходимых вычислений и анализа, тогда как Программист занимался написанием программ профессионально. Короче говоря, было такое счастливое время, и все были довольны. Но Программисты все же были круче.
Дальнейшая эволюция была стремительна и беспощадна. Суть революции хорошо выражается семантикой оператора shift в некоторых скриптовых языках. Вместе с ростом числа компьютеров на душу населения росло и число пользователей, которые не умели программировать (если вообще хоть что-то умели). В то же время Программисты в связи с определенными геополитическими изменениями стали массово покидать родные края. Их нишу понемногу заняли Пользователи, умеющие программировать. В результате мы получили немоверную массу пользователей, которые не умеют ничего, некоторое количество Пользователей, которые умеют программировать, но не то чтобы очень сильны в этом, и тонкий-претонкий слой Программистов-мазохистов.
Да, вузы исправно каждый год выпускают тысячи молодых специалистов информационных специальностей. Но вот ведь какой парадокс: учили студента на Программиста, а получился Пользователь. Потому что воспитать Программиста может только другой Программист, а таких почти не осталось. Замкнутый круг.
Софт
Но это только одна сторона. Если посмотреть на рынок ПО, то несложно заметить, что ничего нового на нем фактически не появляется. Были эпохальные продукты вроде Windows, Office, 1C Что-То-Там и тому подобных монстров, которые закрыли собой гигантские ниши. Все! Нужно просто признать: эпоха разработки массового софта заканчивается. Все, что нужно среднестатистическому пользователю, уже написано. Зачем же тогда Microsoft год за годом печет новые Офисы и Винды? Что, старые чем-то плохи? Нет! Просто им хочется кушать. Поэтому они развешивают тонны маркетинговой лапши на нежные юзерские уши, лишь бы только кто-нибудь купил их новый Офис. Который от N предыдущих версий отличается только по-другому расположенными кнопками и приведенной в соответствие с веяниями моды цветовой гаммой. Без сомнения, за это стоит отдавать триста баксов!
Конечно, я преувеличиваю. В мире есть еще что разрабатывать.
- Веб-приложения. Сейчас «программист» уже в головах обывателей является синонимом «веб-программиста». Только вот беда — вердикт «уже написано» все чаще звучит и здесь. Народ уже не знает, что бы такое написать, поэтому пишет всякую ерунду, благо процесс ее создания упростился невероятно. Операционная система в браузере? Не смешите.
- Корпоративный софт. Опять-таки, загибающаяся область. Один универсальный инструмент (1С, SAP) и толпа низкоквалифицированных адептов (1С-«программист», хо-хо) легко заменяет большинство корпоративок. Остаются лишь только всякие банки, авиаперевозчики и т.п., которые поступили мудро, придумав настолько сложные бизнес-процессы, что хрен напишешь обобщенный инструмент. А если поднапрячься и все же написать, получится VisualStudio.
- Специфический софт. Драйверы, управляющий софт, firmware. Пожалуй, здесь пока еще все нормально. Появляются новые железки и комплексы — должен появиться и софт для них, никуда не денешься.
Итого
У вменяемого читателя должен на этом месте возникнуть в голове диссонанс. Как так — писать больше нечего, а программисты все работают (и неплохо зарабатывают). Ничего удивительного. Программисты работают по инерции.
С одной стороны, компании все еще думают, что стоит только нанять программиста, как все проблемы исчезнут. Видимо, сказываются смутные воспоминания о золотом веке софтостроения в 90-х годах. А поскольку у нас в стране бизнес основан на связях и откатах, а не на грамотном управлении, то никто и не позаботился посчитать, действительно ли найм программистов за большие деньги приносит прибыль. Конечно, к софтверным компаниям (которые в данном случае выступают в роли этаких метапрограммистов) это не относится.
С другой стороны, программисты все еще считают себя самыми востребованными специалистами на свете и всячески это мнение поддерживают. Вместе с тем их профессионализм стремительно падает (см. выше), а самооценка столь же стремительно растет. «Российских Программистов» это касается в первую очередь. Г-н Медведев вон считает, что «наши программисты — самые программистые». А на деле выходит, что они (мы) сливаем по всем статьям западным коллегам, а денег хотим много.
Так что готовьтесь. Пройдет еще несколько лет (думаю, от 5 до 15), и запас инерции кончится. Собственно, зарплаты программистов уже падают (и в рублях, и в долларах), как и количество вакансий. А скоро мы получим:
- в разы меньшее количество рабочих мест;
- гораздо более высокие требования к квалификации;
- жесточайшую конкуренцию.
Приходите через пять лет, проверим.


(7 голосов, средний: 4.00 из 5)
Нет предела совершенству. Сегодня полдня потратил на поиск Computation Geometry library с открытым кодом под C#. Не нашел. Значит, написали еще не все, ниша есть =)
Язык вторичен. Если нет такой библиотеки на C#, это не значит, что ее нет вообще. Главное – решена ли задача. Я с тем же успехом могу сказать, что нет написанной на Лиспе библиотеки для создания LR(1)-парсеров (пример взят с потолка).
А вообще вот: http://www.cgal.org/ Писать обертку на плюсах и вызывать через интероп.
Кстати, есть еще такая здоровая ниша как CAD софт. И на производстве программисты очень нужны. ЧПУ программировать как минимум =)
А вот киборги начнутся…
Про CAD мало что знаю. Неужели настолько пустая ниша? Есть же всякие AutoCAD/ArchiCAD/Catia/Whatever. Или это не про то?
Насчет производства и ЧПУ согласен. Как я и написал, программирование под железо будет востребовано еще очень долго.
Киборги будут программировать себя сами :)
и еще про игры забыли, там тоже все никогда не закончится
Черт, и правда забыл. Вы правы.
Хорошо писать такие статьи уже будучи профессионалом и успев поработать в свое удовольствие )) Но совсем не весело их читать студенту-второкурснику, желающему стать программистом (подчеркну в контексте данной статьи – именно программистом, а не «программирующим пользователем»).
Это уже вторая статья за год (первым был бишоп) в которой так или иначе предрекаются большие перемены. И – вот досада! – все именно в ближайшие пять лет =)
Чтобы выжить в эпоху перемен, нужно овладевать фундаментальными знаниями. Я очень жалею, что потратил в институте кучу времени на изучение языков, и недостаточно – на изучение алгоритмов, математики и computer science в общем смысле. Выучить язык или фреймворк – вопрос максимум нескольких недель, а фундаментальные знания устаревать не будут.
Ну, и учите Лисп. Он бессмертен =)
Ну, а Бишоп-то больше про мифические сетевые ОС… Может, он и прав, не знаю. Я пока не вижу предпосылок к такому развитию событий.
Ну не знаю… На мой взгляд нынешнее время не тянет на «эпоху перемен». Развитие шло всегда и точно так же идет и сейчас. И тот, кто будет следить за ним, не останется без работы.
Ведь сейчас не происходит никаких фундаментальных изменений. Все, что было актуальным, таковым и остается (из основ, я имею в виду). Например, страшными фундаментальными изменениями для нынешних программистов можно считать переход с персоналок на те же сетевые ОС и тонкие клиенты. Но мне как-то не верится, что это возможно в ближайшее время и причем резко. Уж слишком удобны и привычны «традиционные» PC для людей. Значит, будет и существовать рынок ПО для персоналок. Пусть и заполненный программами, созданными «по инерции».
PS: Кстати, неплохо на мой взгляд, это иллюстрирует сайт GiveawayOfTheDay, на котором ежедневно бесплатно раздается какая-нибудь платная программа. Для большинства из того, что там появляется (редакторы, конвертеры и т.д.) можно сходу назвать известный аналог. Иногда и вовсе бесплатный. Но раз эти программы (по сути, созданные по инерции и выброшенные на и без того заполненный рынок) продаются, да еще и развиваются, значит кто-то их покупает =)
У меня жена недавно искала работу программиста ASP.NET в Москве. Фирма, в которой она до этого работала, развалилась – нет заказов. Всего нашла 5 вакансий (год-два назад нашла бы около 100). Интересно было бы послушать FallenGameR, он тоже к этой области, кажется, имеет отношение.
На мой взгляд, как раз сейчас рынок софта входит в жесточайший кризис. Про корпоративки молчу, это всегда был несколько мыльный пузырь. Шаровары (в том числе которые на GiveawayOfTheDay раздают) в некотором отчаянии: на каждую задачу найдется с десяток программ, которые ее решают. Причем половина из них – бесплатные или с открытыми исходниками (а у любой успешной программы появляется опенсорсный клон рано или поздно). Веб-разработка уперлась в ту же стену. Нечего уже писать, нет идей. Кризис перепроизводства. Стагнация.
А фундаментально ничего не изменится, да. Будут те же персоналки, те же принципы человекомашинного взаимодействия (разве что Project Natal дает надежду на некоторое развитие), те же локальные программы и скрипты в браузере. В «сетевые» ОС я не верю. Но при всей этой фундаментальной сохранности объем написания софта упадет в разы, если не на порядки. Какой смысл что-то писать, если оно уже написано?
В принципе, я на всю эту кухню смотрю пока несколько со стороны, т.к. это пока не является моей работой. Но – соглашусь – даже со стороны видно, что «все уже написано до нас»…
Но! Это же не причина перестать писать, вообще делать что-либо. Все, что у нас есть можно рассматривать как основу для будущего развития. В общем, на мой взгляд, развитие идет и будет идти, пусть уже и не гигантскими скачками. Да, теперь все сложнее стать «первооткрывателем», но все еще можно стать тем, кто сделает что-то лучше, чем было сделано до него.
Не верю я в то, что рано или поздно все остановится. Пусть старые технологии/приемы/софт будут отмирать и забываться, но будет появляться и что-то новое. Верю все же в светлое будущее =)
Конечно, развитие будет. И светлое будущее будет. Только все будет совсем не так, как сейчас =)
Да, предложений сейчас не много. Я недавно смотрел «Архитектор/Тимлид» – только одно интересное предложение по Москве. Но я уверен, что если ты хороший специалист, ты всегда сможешь найти себе работу. Если ты при этом еще можешь (хочешь) переехать, то найти что-то стоящее можно довольно быстро.
Афтор молодец!
Предлагаю совокупить данную статью и «Как преодолеть творческий кризис»
и породить новую на тему «что бы такое написать, чего еще не написано, что будет полезно и нужно всем»
просто.. не хочется верить (хотя приходится) в закат эры программостроения.
а когда заходишь на какой-нить odesk или rac — видишь одни велосипеды (клоны, ремейки, порты) 0_о
больше хочется верить в собственный творческий кризис, как отсутствие идей великих программ (=
вотЪ
«Все уже написано до них» )))) Глупости это все! Какие программы для PC вообще, вы о чем? Вы б еще про перфокарты вспомнили. Смотрите шире, постоянно появляются новые технологии и платформы. Лет 5 назад это был Web 2.0, сейчас это портативные платформы – iPhone, Android, BlackBerry и прочие. Или например на пустом месте возник однажды Ajax, который технически мог возникнуть еще 10 лет назад. Был бы скилл, а рынок всегда найдется.
Возможно я не совсем в теме, но есть у меня ощущение, что сейчас новые технологии ровно для того и появляются, чтобы программистам было чем заняться. Заметьте, я не утверждаю, что программисты сидят, скучают и не знают чем заняться. Просто функциональность, которая сейчас реализуется на iPhone, Anroid, Ajax, WebSockets и что-там-еще, в большинстве случаев не новая – завернутые в новую обертку старые добрые идеи. Да, тетрисы под iPhone отлично продаются, но можно ли назвать это прогрессом информационных технологий?
Шурик, я понял что ты говоришь.
Ты говоришь что не осталось CS, которая science.
Но программисты не только science занимаются.
Если наука молодая, то естественно ждать что в начале будет много оригинальных исследований. Но научные прорывы не могут идти без перерыва. Вон в философии – часто что-то новое появляется? =)
Не-не-не, в CS как раз развитие есть. Я говорил про индустрию. Совокупность написанных программ предоставляет пользователям какое-то множество функций. Развитие индустрии ПО – это написание программ, которые это множество функций расширяют. Windows 7 – отличная ОС, но что люди с ее помощью могут делать такого, что не могли делать раньше? Word 2007 выглядит симпатичнее предшественника, но позволяет ли он делать более качественные документы?
P.S. А философию я вообще не считаю деятельностью, достаточно самостоятельной для того, чтобы делать ее профессиональной. Наше счастье, что там ничего нового не появляется )
А какое сейчас развитие в CS на твой взгляд?
Я могу судить только со своей колокольни:
- мейнстрим – методы и инструменты параллельного программирования;
- в системах реального времени (особенно распределенных) дофига слабоосвоенных направлений;
- более-менее активно развиваются методы формальной верификации всего и вся;
- каждая пятая статья на arxiv.org посвящена мобильным ad-hoc сетям (в этой области определенно есть еще чем заняться)
- etc, etc, ….
Вдогонку. Есть такая область – радиоэлектроника. И было такое явление – радиолюбительство, ныне практически исчезнувшее. В эпоху массового энтузиазма каждый мог купить себе радиодеталей и спаять усилитель/приемник/whatever. Сейчас это бессмысленно, потому что все то же самое делается в сто раз дешевле на одной микросхеме. Но это уже недоступно любителям.
Так и в программировании: сейчас расцвет (ну или по крайней мере не упадок) любительского программирования. Каждый может взять язык по душе и написать все что захочет. Иногда получается лучше, чем у других. Но все движется к тому, что программные решения будут не писаться, а генерироваться (aka конфигурироваться из универсальной системы aka специализироваться из шаблона aka …). Когда мы дойдем до этой стадии, любительское программирование, культура хакеров – все это постепенно сойдет на нет. Конечно, никто не помешает взять язык и написать программу (как никто не мешает спаять ламповый усилитель). Но это уже будет неинтересно, потому что можно будет создать гораздо больше, приложив несравнимо меньшие усилия.