Дао программиста - 3
February 8th, 2010Те же самые 3 уровня развития можно применить ко многим вещам.
Вернемся к трехчленному пути
Вначале программист находится на уровне Shu - он изучает язык или языки программирования, изучает алгоритмы, улучшает свои навыки написания программ, изучает предметную область и т.д.
Shu-программист может быть вполне успешным и Shu-программистов большинство в нашем мире.
Такой программист может отлично делать свою работу, если задание поставлено четко, но с трудом может ставить себе задачу сам. Он следует правилам разработки, принятым в его компании или отрасли и не спрашивает постоянно “почему?”, не пытается постоянно изменить что-то. Он “следует”, “течет по течению” и эти фразы лучше всего описывают таких программистов.
Уверен, что вы знаете немало Shu-программистов, потому что, подчеркну, их большинство. А может вы и сам - Shu-программист? Тогда читайте дальше и, возможно, вы сможете постичь третью ступень.
Ведь есть и Ha-программисты. Обычно они быстро выбиваются в лидеры или на руководящие должности, потому что они активны, задают вопросы, пробуют постоянно свои знания на прочность и расширяют их.
Ha-программисты готовы изучать новые языки программирования, переходить в новую отрасль для изучения новых знаний. Они готовы ставить под сомнение каждую задачу, которую они получают и каждую книгу или статью, которую они читают. Именно это постоянное сомнение и стремление к познанию порождает в их мозгу постоянную работу и размышления.
И со временем такой программист может достигнуть просветления и перейти на уровень Ri.
Ri-программист уже не думает о задаче, как об обособленной проблеме, но думает о ней, как о чем-то, что интегрировано в огромную систему, состоящую из других компоненов. Каждый класс или переменная - это не просто класс или переменная - это просто точка в огромном многомерном графе проекта.
Ri-программист не думает о том, как написать класс - он думает о том, как НЕ написать класс.
Для Ri-программиста нет задач, которые он не смог бы запрограммировать и главное для него в задаче - это не сложность, а важность.
Когда Ri-программист пишет код, то он не думает о языке программирования или операторах цикла - он видит многомерный граф проекта и расширяет его, а код рождается сам по себе.
Ri-программист оптимизирует граф проекта, а не конкретные функции, поэтому одно его правильное решение может сократить код проекта вдвое и одновременно улучшить качество или производительность.
Про Ri-программистов можно писать и дальше, но проблема, как я уже написал, в том, что невозможно научить быть Ri-программистом, невозможно даже описать что это такое - только другой Ri-программист сможет понять это. Так что, если вы видите смысл в строках про Ri-программиста, то welcome to the club.