Изменились и пользователи: большая их часть не работает на компе, а чатится, или смотрит кино, или читает книгу.
В любой конторе на столе у каждого специалиста стоит компьютер, причем все эти компьютеры через разного рода устройства, как бы они ни назывались (хабы, свичи, роутеры или как-то еще), соединяются в локальные сети и через серверы имеют выход в Глобальную сеть. Все это великолепие управляется программами. Их теперь надо не просто «больше», а намного больше — в сотни и тысячи раз больше. В их производстве теперь заняты многие сотни тысяч людей по всему миру.
Видоизменилось и программирование. Работу с заказчиком, выбивание у него информации, что надо сделать, и оформление узнанного в алгоритмы и блоки взяли на себя постановщики задач.
Программирование разделилось на несколько профессий.
Программисты пишут «общую часть», а наиболее простые, но сильно трудоемкие куски будущей программы раздают кодерам в виде задания: «получаешь то и это, из них путем преобразования через эти формулы получаешь результат, который оформляешь вот так, так, так и так, тут должно сходиться, а результат должен быть в таких пределах».
Кодеры сидят на своих местах, делают свою работу, а по ее выполнении дают сигнал готовности.
Рядом трудятся скромные администраторы проекта. Они — через программу контроля версий — отслеживают ход работ и по отмашке «данный кусок готов» вливают сделанное в общую ветвь мастера программы.
Тут в работу включаются тестеры. По заранее приготовленным алгоритмам они гоняют программу, выявляя ошибки. Об ошибках сообщают и программистам, и кодерам, после чего в ПО вносятся исправления. И так — пока ошибки не кончатся.
Впрочем, многие программы делаются в небольших конторах, тут программисты и разрабатывают алгоритмы, и пишут программы, и администрируют, сопрягая их в единое целое, только тестирование везде и всегда стараются отдать специальным тестерам, так как свои программы программисты тестируют несколько снисходительнее. Не потому, что хотят навредить, а просто «глаз замыливается»: то, что кажется привычным автору, бросается в глаза человеку со стороны.
На место красоты исполнения пришла целесообразность. Не надо думать об экономии памяти, не надо думать о длине счетчика, об этом думает ОС.
Изменились и задачи программирования. Ранее это были почти только одни огромные численные расчеты с последующей распечаткой результата, а кроме этого — еще немного программ для администрирования работы ЭВМ.
В современности системное ПО — огромный сектор работы программистов. Программы, из которых состоят операционные системы, и программы, которые работают в фоновом режиме под управлением операционных систем — многочисленны и сложны.
Огромный сектор программирования — это базы данных. Базы позволяют хранить огромные объемы информации, а сетевой доступ позволяет получать данные из этих баз в любой точке земного шара — была бы там розетка для подсоединения к серверу Сети.
Из баз данных логически вытекла и оформилась электронная бухгалтерия, ярким примером коей в России служит «1С». Бухгалтера давно не корпят над арифметическими расчетами, это делает компьютер, на их долю осталось только стратегическое управление и отслеживание — насколько бухгалтерская программа соответствует последним требованиям законов.
Компьютерные игры — отдельный огромный сектор программирования с сотнями тысяч участников.
Программы придумывают не для разового развлечения или недолгого употребления, они должны работать годы и десятилетия, значит, разрабатывал их когда-то один человек. А сопровождать при эксплуатации, исправлять возможные скрытые ошибки и модифицировать будет кто-то другой, а возможно — сначала другой, потом третий, потом кто-то еще. Посему программы должны быть написаны и задокументированы так, чтобы их просто было понять программистам из будущего.
Как в жизни всегда есть место подвигу, так и в программировании все еще есть место творчеству — на олимпиадах, в учебных программах, в программах, написанных для себя (например, у хакеров нет пределов остроумию при программировании и творчеству в создании ловушек для создания неприятностей тем, кто будет разбираться с их злонамеренной программой).
Но в технологии программирования программист перестал быть творцом и стал работником, задача которого или написать код так, чтобы он соответствовал стандартам, был максимально закомментирован, чтобы следующие поколения программистов могли его легко исправить — когда среда, в которой работает программа, изменится настолько, что программа потеряет работоспособность, или когда надо будет модифицировать программу в связи с пожеланиями пользователя.