Я задумался над работой программиста. На описании множества вакансий написано, какие именно аббревиатуры должен уметь расшифровывать будущий работник. Сколько лет опыта он должен иметь, какой диплом и уровень английского языка. Из всего этого, мне кажется, наиболее толковым показателем является английский язык.
Для разработчика важно знать, как общаться с компьютером и как - с людьми. Если человек не умеет общаться с людьми, то, скорее всего, его умение рассказывать компьютеру «что делать» вам не пригодится.
Что толку знать об определенной версии фреймворка, если она изменится через несколько месяцев? Какова ценность знаний, обесценивающихся с каждым годом? Вы можете быть в десятке лучших в стране экспертов в очень узкой области знаний – и вместе с тем не находить себе применения, поскольку в стране есть занятие только для четырех экспертов. Мне кажется, что более ценным является навык воспринимать и обобщать знания. Фреймворки и технологии – всего лишь инструменты. Умея постигать новое, совсем несложно научится использовать новые инструменты.
В связи с этим довольно интересно наблюдать специализацию программистов. Кто-то использует только одну технологию, отказываясь воспринимать что-либо еще. Другие же не придают вопросу специализации большого значения, используя то, что под рукой. Похоже, что искусственно созданные рамки одной технологии позволяют не выходить из зоны комфорта. Но с другой стороны, не выходя из зоны комфорта, мы ограничиваем свой кругозор. Не пытаясь достичь звезд, мы не можем понять – что там наверху, космос или небесная твердь.
Я читал несколько статей, авторы которых рассматривают программиста как творческого работника. Предполагается, что программист творит свои программы, строит воздушные замки в уме. Творчество – это создание чего-то нового, принципиально нового, результаты творчества, в отличие от производства, уникальны. Программы, по большей части, уникальны. Чертежи, чаще всего, тоже уникальны. Но инженеров не называют творческими работниками. Проектировщик дороги руководствуется нормами, правилами, законами физики, условиями в которых нужно проложить дорогу, и в итоге получает уникальную дорогу. Я склонен рассматривать программирование скорее, как инженерные задачи, не требующие вдохновения. Что, впрочем, не отменяет моментов озарения, когда решение задачи внезапно осеняет. Имея на руках задачу создать программу, не нужно ждать музы. Нужно воспользоваться инструментами и знакомыми приемами.
Таким образом, разработка программ – это скорее производство, чем наука и, тем более, творчество. Возвращаясь к первому абзацу, становится понятно, почему в описаниях вакансий находятся эти аббревиатуры. Потому что на производстве нужны работники, умеющие работать с инструментами, а не экспериментаторы, их создающие.