Навеяно последними спорами на Хабре "Программирование — отстой" vs "Программирование — не отстой".
Год назад я готовил материалы по очень близкой теме, однако вижу, что тема до сих пор не потеряла актуальность, а потому попробую ещё углубить тему «программирование <> отстой», несколько с другой стороны.
Рекомендую предварительно прочитать статью Михаила Донского "жизненный цикл профессии программиста", который даёт более чем 60-летнюю ретроспективу профессии программиста и показывает некоторые особенности (по большей части психологические) современного поколения программистов.
Ну а теперь, собственно, тезисы:
1. Введя понятие жизненного цикла профессии (термин, интуитивно понятный большинству программистов и других ИТ-специалистов), можно показать, что профессия программиста — профессия зрелая, прошедшая большую часть своего жизненного цикла.
2. Для зрелых стадий жизненного цикла профессии характерны:
— массовость профессии (количество подготовленных профессионалов, образовательных программ, профессиональных сообществ, доля в общемировой экономике);
— большое количество специализаций внутри профессии, разделение труда и узкая специализация;
— превалирование обкатанных методик, готовых технологий над разработкой и обкаткой новых приёмов и технологий; новые методы рождаются на стыке имеющихся внутри профессии технологий (на ранних этапах сама профессия рождается на стыке нескольких профессий)
3. Разные специализации внутри профессии программиста находятся на разных этапах. Сравните, напрамер, направления, связанные с веб-программированием, для которых всё ещё характерно бурное экстенсивное развитие, и разработку информационных систем («программист 1С» — блестящий пример, приводимый некоторыми в комментариях). Статья Alex Papadimoulis — как раз о таких системах: кто найдёт challenge в 1С? У кого язык повернётся программирование в 1С назвать «sexy»? (Об этом же и у Донского: «С течением времени программирование из тонкого ремесла, иногда восходящего к искусству, становилось ремеслом все более и более рутинным»)
4. Помните притчу про трех слепых мудрецов, которые пытались описать слона? Также и здесь: разная точка зрения на профессию программиста (вообще, "… говорить о профессии программиста вообще можно, но она столь же не конкретна, как и профессия строителя" — там же) зависит от положения наблюдателя: зависит от специализации, см. предыдущий тезис про специализации.
5. Разные мнения на тему «программирование != отстой» зависят также от других параметров: должность (сравните мнение программиста, ведущего программиста и CIO), время работы в отрасли, опыт работы по смежным специальностям.
6. Ещё одна грань. Я видел замечания, что вынесение настроек программы в отдельный файл и концентрация на алгоритмах — вот удел настоящего программиста, который (боже упаси!) не должен настраивать поля формы и делать такого рода рутину. Такая чрезмерная специализация вредна (шаманство настройщиков, которые не зная алгоритма, пытаются «с бубном» получить требуемый эффект), противоречит сложившейся практике (есть и исключения, но не массового характера), ведёт к попытке создания универсальных конструкторов (MS Excel, MS Access, SAP — это всё примеры «просто настрой нужные поля»)
7. Чрезмерное увлечение изучением всё новых и новых модных или более современных языков (с одной стороны оправдываемое требованием ускорения разработки, с другой, заказчиками в первую очередь, — критикуемое за плохую поддержку существующих проектов, когда одни и те же бизнес-правила переписываются на всё более модных языках) характерно для более молодого специалиста, чем для опытных разработчиков. Это период "Красного рыцаря", отличительная черта мужской психологии средних лет, когда покоряется один язык программирования за другим, позднее приходит период большей психологической зрелости. Все через это проходят, это необходимый этап становления.
Однако с сожалением я вижу, что есть значительное количество проектов/программных продуктов, которые действительно редко проходят этап зрелости, вечно мигрируя с одного языка на другой, находясь в вечной «бете» — и это идёт уже на уровне социума в целом.
8. Практически в любой профессии есть следующие ступени: новичок, осваивающий готовые методики под присмотром учителей, специалист, умеющий комбинировать и применять нужные инструменты, и мастер, работы которого приближаются к грани искусства. На любой ступени действует правило «80% рутины + 20% творчества», не надо думать, что работа мастера не включает в себя ежедневного упорного труда, бесконечного терпения в кропотливой скучной («boring») работе. Кто-то, как Дмитрий Котеров, нашёл дзен в программировании, кто-то философски подметает улицу или работает в котельной кочегаром.
Вот примерно такую точку зрения я хотел озвучить, надеюсь, что это поможет вам понять себя и своих коллег, остаивающих иной взгляд на данную тему, несколько расширить свой кругозор.
Год назад я готовил материалы по очень близкой теме, однако вижу, что тема до сих пор не потеряла актуальность, а потому попробую ещё углубить тему «программирование <> отстой», несколько с другой стороны.
Рекомендую предварительно прочитать статью Михаила Донского "жизненный цикл профессии программиста", который даёт более чем 60-летнюю ретроспективу профессии программиста и показывает некоторые особенности (по большей части психологические) современного поколения программистов.
Ну а теперь, собственно, тезисы:
1. Введя понятие жизненного цикла профессии (термин, интуитивно понятный большинству программистов и других ИТ-специалистов), можно показать, что профессия программиста — профессия зрелая, прошедшая большую часть своего жизненного цикла.
2. Для зрелых стадий жизненного цикла профессии характерны:
— массовость профессии (количество подготовленных профессионалов, образовательных программ, профессиональных сообществ, доля в общемировой экономике);
— большое количество специализаций внутри профессии, разделение труда и узкая специализация;
— превалирование обкатанных методик, готовых технологий над разработкой и обкаткой новых приёмов и технологий; новые методы рождаются на стыке имеющихся внутри профессии технологий (на ранних этапах сама профессия рождается на стыке нескольких профессий)
3. Разные специализации внутри профессии программиста находятся на разных этапах. Сравните, напрамер, направления, связанные с веб-программированием, для которых всё ещё характерно бурное экстенсивное развитие, и разработку информационных систем («программист 1С» — блестящий пример, приводимый некоторыми в комментариях). Статья Alex Papadimoulis — как раз о таких системах: кто найдёт challenge в 1С? У кого язык повернётся программирование в 1С назвать «sexy»? (Об этом же и у Донского: «С течением времени программирование из тонкого ремесла, иногда восходящего к искусству, становилось ремеслом все более и более рутинным»)
4. Помните притчу про трех слепых мудрецов, которые пытались описать слона? Также и здесь: разная точка зрения на профессию программиста (вообще, "… говорить о профессии программиста вообще можно, но она столь же не конкретна, как и профессия строителя" — там же) зависит от положения наблюдателя: зависит от специализации, см. предыдущий тезис про специализации.
5. Разные мнения на тему «программирование != отстой» зависят также от других параметров: должность (сравните мнение программиста, ведущего программиста и CIO), время работы в отрасли, опыт работы по смежным специальностям.
6. Ещё одна грань. Я видел замечания, что вынесение настроек программы в отдельный файл и концентрация на алгоритмах — вот удел настоящего программиста, который (боже упаси!) не должен настраивать поля формы и делать такого рода рутину. Такая чрезмерная специализация вредна (шаманство настройщиков, которые не зная алгоритма, пытаются «с бубном» получить требуемый эффект), противоречит сложившейся практике (есть и исключения, но не массового характера), ведёт к попытке создания универсальных конструкторов (MS Excel, MS Access, SAP — это всё примеры «просто настрой нужные поля»)
7. Чрезмерное увлечение изучением всё новых и новых модных или более современных языков (с одной стороны оправдываемое требованием ускорения разработки, с другой, заказчиками в первую очередь, — критикуемое за плохую поддержку существующих проектов, когда одни и те же бизнес-правила переписываются на всё более модных языках) характерно для более молодого специалиста, чем для опытных разработчиков. Это период "Красного рыцаря", отличительная черта мужской психологии средних лет, когда покоряется один язык программирования за другим, позднее приходит период большей психологической зрелости. Все через это проходят, это необходимый этап становления.
Однако с сожалением я вижу, что есть значительное количество проектов/программных продуктов, которые действительно редко проходят этап зрелости, вечно мигрируя с одного языка на другой, находясь в вечной «бете» — и это идёт уже на уровне социума в целом.
8. Практически в любой профессии есть следующие ступени: новичок, осваивающий готовые методики под присмотром учителей, специалист, умеющий комбинировать и применять нужные инструменты, и мастер, работы которого приближаются к грани искусства. На любой ступени действует правило «80% рутины + 20% творчества», не надо думать, что работа мастера не включает в себя ежедневного упорного труда, бесконечного терпения в кропотливой скучной («boring») работе. Кто-то, как Дмитрий Котеров, нашёл дзен в программировании, кто-то философски подметает улицу или работает в котельной кочегаром.
Вот примерно такую точку зрения я хотел озвучить, надеюсь, что это поможет вам понять себя и своих коллег, остаивающих иной взгляд на данную тему, несколько расширить свой кругозор.