mozgosteb (mozgosteb) wrote,
mozgosteb
mozgosteb

Category:

А что там у программистов?

Расскажу немного про программистов и про нашу внутреннюю кухню.

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

Почему раньше программист мог позволить себе быть асоциальным, а сейчас не может? Разгадка в том, как изменились программы и сам процесс программирования. Раньше программы писались так, чтобы их понял компьютер. Ведь программа, это набор инструкция для компьютера. И программист выстраивал свое мышление так, чтобы думать как алгоритмическая машина. Разумеется, это меняет человека и не факт, что в лучшую сторону. Программист мог похвастаться: “я написал такой код, в который понимаю только я и машина”. Сейчас говорить такое стыдно. До 80 процентов усилий мы тратим на то, чтобы код был прост и понятен нашим коллегам. Сложность создаваемых продуктов возросла настолько, что иначе никак.

Сотни тысяч строк кода, поддерживаемые силой пары десятков программеров - это норма. При этом бизнес требует, чтобы продукт постоянно дорабатывался. При этом в течении года, каждый третий программист меняет работу и на проект берут новичка. И если в таких условиях писать только для компьютера, и не заботиться о коллегах, не писать понятный код, не уметь объяснить словами свой замысел и “как это работает”, очень быстро наступит полный хаос. Поэтому нынешний программист куда более социален, чем раньше.

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

Сразу хочется объяснить, откуда берется драматическая составляющая, но сначала придется рассказать об абстракциях, а то будет непонятно. Зато будете разбираться, чем мы живём.

Для людей далёких от темы, программа - это набор инструкций для компьютера. Сложи это и это, нарисуй точку на экране и тд. Нынешний программист очень мало думает об инструкциях и алгоритмах. В первую очередь программист создает абстракции. Сначала в голове и на бумаге, потом в коде. Мейнстримом в этом деле уже много лет является Платоновская философия. Платон заметил, что человеку естественно вмещать в своём уме идею о “вещах вообще”. Выходит, например, Платон во двор, к конюшням, и видит лошадь. У неё черная грива, есть подковы и зовут Незабудкой. А рядом другая, хромая, в яблоках, кличут Забиякой. Это вполне конкретные лошади. А “лошади вообще” в конюшне нет, сколько не ищи. Но в голове откуда-то есть это слово “лошадь” не обозначающее ни одну из лошадей в мире, но зато всех лошадей вместе взятых. Та самая “лошадь вообще”. Эта лошадь и её подруги, другие абстракции, живут в мире идей, идеальном платоновском мире.

Верите или нет, но у программистов есть инструменты для описания “лошадей вообще”. Когда вы видите на экране кнопку, знайте, где-то в исходных текстах программы описана “идея кнопки” или “кнопка вообще”. И есть виртуальный заводик, который пользуясь идеей “кнопки вообще” воспроизвел вот эту конкретную, которую сейчас видно на экране. Те средства, которые использую я, вообще не позволяют создать программу, если там не описана минимум одна идея.

Идея, или на нашем языке “класс” - самый низкий уровень абстракции. В приличном проекте описано несколько сотен, а то и тысяч “идей”. Это очень удобно, потому что внятную идею легко объяснить другому человеку. А, как я уже писал, до 80% усилий программиста уходит на то, чтобы сделать программу понятной не только компьютеру. Есть куча методик, как выделять и описывать идеи. Вот, в каких отношениях должны находиться идея лошади и идея всадника? Нужно ли отдельно описывать идею верховой езды? Является ли “человек вообще” расширенной идеей “всадника вообще”? Для нас это не абстрактные, а вполне конкретные жизненные вопросы, решаемые ежедневно.

В мультфильме “Каникулы в Простоквашино” машину дяди Фёдора тащат по снегу несколько героев. В качестве ездовой собаки используется не только пёс, но и кот и даже академик, папа дяди Фёдора. Он демонстрирует поведение, не свойственное идеи “академика вообще”, и от того сцена выглядит комично. Не нужно быть программистом, чтобы посмотреть на упряжку ездовых академиков и понять что здесь что-то не так. А у нормального программиста есть ещё и особое чутьё на плохие и хорошие абстракции, выделяющее куда более тонкие моменты. Ты можешь не владеть теорией, ты можешь не знать, как правильно, но если то, что ты пишешь, кажется красивым, то с 95% вероятностью ты всё делаешь как надо.

Эстетическое чувство порождает хороший код, а хорошо выполненная работа взращивает самоуважение и зарплату. Возникает соблазн стать тоньше, чувствительней к прекрасному, чтобы создавать безупречные шедевры из идей и кода. Однако, на практике, чем сильнее ты зависим от эстетики, тем сильнее ежедневная боль. Бизнес требует, чтобы запорожец дяди Фёдора вылез из снежного завала прямо сейчас и ты не успеваешь создать подходящую для этого идею трактора, а берешь то, что есть - пса, кота и академика. И слёзы катятся по щекам. И ты даешь себе обещание, что как-нибудь придешь в выходные создашь трактор. Но не выходишь, потому что семья тебя не поймёт. А ещё хуже, если это ты создал пса, кота и академика, а твой коллега взял и впряг их как бурлаков, потому что не разобрался, что это за абстракции, но счел их достаточно удобными для тяговых работ. И вот, мат и проклятия конденсируются возле потолка в грозовую тучу, бьющую молниями по каждому вошедшему. Драма! А менеджер твой вообще не видит связи между прибылью и эстетикой. Он раньше обувью торговал. Оптом.

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

Ну, и напоследок немного слёз по поводу тенденций.

До недавнего времени бизнес не умел взаимодействовать с программистами, а программисты - с бизнесом. Не было четких правил и создание хорошего продукта было искусством на грани интуитивных прозрений. Сейчас программирование, де факто, ремесло. У нас есть профессиональные стандарты и четкие правила хорошего тона. Больше не нужно быть волшебником. Для бизнеса это хорошо. Меньше риски, не нужно выискивать “гениев”, один программер заменяем другим.

Но, блин...

...массовое вовлечение неподготовленных людей в любую духовную практику … чревато утратой понимания ее исходного смысла. (Фейнман)

Как же упал общий уровень. Программистам хорошо платят. В результате к нам идут не по призванию, а за деньгами. Те, кто волшебником быть никогда и не хотел. Человек заканчивает вуз. Он ничего не умеет и внутренней мотивации у него нет. По закону большого города, работу он найдет, хоть это будет и дерьмовая работа, скорей всего. Отработав пару лет, он получает строчку в резюме и какой-то опыт, что повысит его шансы проскочить собеседование на нормальные деньги. А потом уволится до того, как всех задолбает и найдет новую работу. И весь, сцуко, рынок труда забит такими вот экземплярами.

Конечно, на их фоне мы, правильные пацаны, выглядим весьма выгодно, но “за державу обидно”!
Tags: Жизнь happens, Код, Наблюдения, Психо
Subscribe
  • Post a new comment

    Error

    Anonymous comments are disabled in this journal

    default userpic

    Your reply will be screened

    Your IP address will be recorded 

  • 31 comments