Ну что, молодежь, усаживайтесь поудобнее, расскажу-ка я вам одну историю.
Давным-давно, когда многие из вас еще не родились, мы писали программы точно так, как и вы сейчас: с трудом пробравшись через сугробы, мы входили в адски жаркую комнату и с безудержным энтузиазмом набирали что-то на коммутационных панелях, щелкали тумблерами на «переносных функциональных таблицах» и занимались арифметикой так, как ею и следует заниматься, – медленно.
Не было у нас никаких «сохраненных программ», не то что у вас, мажоры.
Мы обходились чертежами! Перфокартами! Исписанными салфетками! Мы зарабатывали на хлеб в поте лица, не имея возможности легким движением руки скачать приложение на телефон, чтобы рассчитать продовольственный бюджет.
Ну ладно-ладно, все было не так плохо, да и я не настолько стар. Но когда я начал писать программы в конце 1980-х, они хоть и были довольно примитивными, требовали серьезного обучения и практики. Еще одно-два поколения назад программисты были более искусными кодерами. Впрочем, гораздо важнее, что они были и более искусными мастерами, и об этом стоит задуматься.
Старый дурак, да что он понимает!
Контраргумент, который вы могли бы выдвинуть, связан с очевидным техническим прогрессом наших дней: раньше приходилось выполнять массу работы, которая сегодня может показаться нерентабельной или даже глупой.
Но вы-то наработали корпус знаний, научившись на ошибках «отцов», и давно обскакали нас, невежественных троглодитов, правда?
Для справедливости отмечу, что и раньше находились те, кто занимался ерундой и писал плохие программы. Плохие программисты и плохие программы не появились вчера и не исчезнут завтра, но мне кажется, что сейчас их стало больше, чем раньше, и это серьезная проблема.
«Хорошие программисты» былых времен были по-настоящему хороши, хороши настолько, что мы и сегодня стоим на плечах этих атлантов и пользуемся их технологиями. Наработки были очень качественными, нам удалось их воспроизвести или улучшить, но почему же те программы были настолько лучше наших? Ответ прост:
Раньше программисту приходилось быть более рачительным и изобретательным
Представляете, каково жилось программистам до появления Google? Я могу вспомнить, и, честно говоря, мне практически не с чем сравнить те ощущения. Постоянно возникали тривиальные проблемы, на решение которых, однако, уходили многие и многие часы работы – так мы работали. Сегодняшний 12-летний кодер сможет решить проблему подобного уровня за 30 секунд. Но кто учится больше? Уж конечно, не тот, кто вбивает запрос в Google, потом что-то копипастит и идет дальше.
Давным-давно нашему брату приходилось быть гораздо рачительнее и изобретательнее.
Иногда везло и под рукой оказывалась одна-единственная книга по какому-то языку программирования или операционной системе (иногда не везло, ее не было). Может быть, несколько коллег, с которыми можно посоветоваться, но в основном это был путь проб и ошибок, усеянный граблями.
Аппаратное обеспечение? Да, сегодня оно классное, не то что раньше. Но раньше программисты должны были хорошо разбираться в управлении памятью, ведь память была драгоценной. Приходилось считать циклы, так как и процессорное время было недешево. Можете себе это представить? Обычно я даже не задумываюсь о процессорном времени – пусть этим занимается компилятор, а мой двухъядерный процессор всегда все успевает. Да, я избалован, и знаю об оборудовании, с которым работаю, гораздо меньше, чем знал мой коллега в 1982 году.
Когда-то планка была гораздо выше
Раньше, чтобы быть программистом, нужно было не только знать свое дело, но и действительно разбираться в математике, электронике и обладать еще массой навыков, приобретенных еще до попытки что-нибудь создать. Вы же не думаете, что если какая-то компания вбухивала огромные суммы в машину, в которой разбирались считанные сотрудники, то к ней подпускался какой-то любопытный выпускник? Тем более и выпускников-то долгое время не было: колледжи по информатике или курсы по программированию просто отсутствовали. Кто же тогда писал все эти программы? – спросите вы. Я отвечу – амбициозные энтузиасты, у которых был запал и страсть к изучению этого искусства – программирования.
В наши дни вам постоянно вещают: «Да, парень, я пошел в ИТ и озолотился». Именно для этого сейчас зачастую сдают экзамены и вступают в ряды программистов.
Я не гребу под одну гребенку всех молодых людей, которые поступают на обучение программированию, но сегодня денежная мотивация гораздо более распространена, чем раньше. Разумеется, среди выпускников факультета информатики образца 2012 года по-прежнему найдется целая плеяда молодых талантов, но, одновременно, и больше их посредственных однокашников, чем в 1972 году. Среди нас по-прежнему много талантливых и смышленых ребят, но стало больше и тех, кто попросту мутит воду.
Проклятье копипасты
Есть одна вещь, которая двигает технологический прогресс и в то же время задерживает его. Выше я уже упоминал Google: все мы знаем, насколько зависят от этого поисковика многие наши коллеги. Я тоже чувствую себя без Google как без рук.
Это отличный способ сэкономить время и эффективно работать: найти проблему, задуматься о ней, забить запрос в Google и посмотреть, не сталкивался ли с ней кто-то ранее. Но для плохого программиста это путь наименьшего сопротивления. В наше время слишком многие программисты копипастят код, а не ищут решение. Стоит всмотреться в чужую программу – и почти сразу заметно, есть ли за программистом такой грех. Бывает, поищешь немного и находишь содранными целые функции.
У коллективного разума есть свои достоинства, но стоит разделять агнцов и козлищ, если мы говорим о хорошем программисте.
Мы слишком увлекаемся фреймворками
Фреймворки – отличная штука, ничего против них не имею. Сам факт того, что какой-то программист или сразу несколько программистов решили потратить время и объединить какие-то общие функции в фреймворк ради ускорения разработки – прекрасен, эта работа помогает сэкономить массу времени. Но я думаю, что многие молодые программисты чрезмерно полагаются на фреймворки. Как программисту мне кажется, что мы неуклонно превращаемся в ремесленников, которые умеют склеивать нужные объекты и методы, почти не понимая, как именно работает полученная программа. Мы злоупотребляем фреймворками.
Вам правда нужен гигантский фреймворк, если нужно написать простейший сайт для выполнения нескольких CRUD-операций? Думаю, нет.
Это же касается и злоупотребления многочисленными свободными программами. Нет ничего плохого в том, что вы берете и устанавливаете Drupal, добавив к нему всего несколько деталей, а не пишете свою CMS с нуля. Просто не называйте себя после этого программистом, пожалуйста.
Заключение
Впрочем, я всего лишь хотел сказать, что мы должны ценить то, что имеем. Ведь разработка программ сегодня стала совсем простым делом, вне зависимости от того, признаем мы это или нет. У нас под рукой целый ворох фреймворков, библиотек и свободных программ – все, что позволяет экономить время. В одном клике от нас – обширнейшие ресурсы, и их уже гораздо больше, чем несколько лет назад. Нам стало гораздо проще общаться, у нас шикарные компьютеры. С таким арсеналом мы просто не имеем права на какие-то отговорки.
В 1995 году я и мечтать не мог, что у меня будет KindleFire, на котором я буду повсюду носить с собой целую техническую библиотеку. У меня есть ноутбук, где я с удобством могу писать программы для разных платформ и продуктов, на нескольких языках. Сказать, что мы во всеоружии – значит, ничего не сказать.
Мы не имеем права быть такими небрежными, какими стали, – ведь из-за этого страдает все наше дело. Вокруг развелось такое количество посредственных и никуда не годных программистов в том числе благодаря нашему попустительству: мы снижаем интеллектуальный ценз и не просто пускаем в наш цех кого ни попадя, но и предлагаем им набор костылей, на которые можно опираться.
Среди тех ребят, которые сегодня поступают в университет, хватает ярких, талантливых и энергичных людей, готовых менять мир. Но они теряются среди людей, которым это сто лет не нужно... Такова горькая правда.
Если мы и дальше будем смотреть на происходящее сквозь пальцы, то своими руками вырастим поколение людей, которые только и умеют склеить воедино пучок классов и всю жизнь будут что-то копировать и вставлять. Потом эти горе-программисты будут учить других. Ценность разработчика со временем станет нулевой, про качество программ я вообще молчу. Когда-нибудь знание того, как именно нужно писать код, станет столь же редким, каким сегодня стало умение обращаться с логарифмической линейкой.
Из специализированных мастеров мы превратимся в толпу, которая клепает дрянь. Мы ведь совсем этого не хотим, правда?
Мы должны оставаться верны нашему делу и по-настоящему гордиться тем, чем занимаемся. Работать нужно как раньше, засучив рукава, выучив как можно больше и неся ответственность за свой труд.
Тогда мы сможем переломить ситуацию.
Автор: Джереми Морган
Релоцировались? Теперь вы можете комментировать без верификации аккаунта.