Есть мнение, что всех хороших программистов, основываясь на их отношении к коду, можно условно разделить на три основные категории.
- К первой относятся люди, относящиеся к коду как к схеме, чертежу. Это “инженеры”.
- Ко второй можно отнести тех, кто воспринимает код программы как стройную систему формул. Это “математики”.
- В третью категорию попадают “писатели”, для которых программа это прежде всего текстовое произведение, которое должно легко и приятно читаться.
Это ни в коем случае не означает, что программисты из одной категории в чем-то лучше, чем из других. Это о том, как программист создает свои творения, как относится к ним. Подобная категоризация должна помочь разобраться в себе и, определив свой «тип», использовать свои сильные стороны и учитывать недостатки. Чем-то напоминает деление на интровертов и экстравертов, «сов» и «жаворонков» и т.п.
Скажем, «писатели» точно стараются писать красивый и читабельный код, но могут погрязнуть в мелких деталях. «Инженер», напротив, спроектирует сложную структуру, но может не обратить внимания на мелочи. «Математик» выдаст красивое, чистое решение сложной проблемы, но совершенно не обязательно это будет код, легкий для чтения.
Связь языка и природных склонностей программиста
Есть одна интересная мысль: каждый язык (вместе со всей своей экосистемой) подходит для определенного типа мышления. И если у разработчика как раз этот тип, то ему будет легко и приятно работать с данным языком и его инструментарием, да и результаты будут лучше, чем в случае несовпадения.
Например, язык Ruby прекрасно подходит «писателям». В пользу этой мысли можно привести труд его автора, Юкихиро Мацумото, – «Treating Code As an Essay». В этом произведении он раскрывает, что Ruby больше ориентирован на написание коде, чем на вычисления или проектирование. Для него важен стиль и такое написание кода, чтобы его могли читать люди, а не только машины.
Логично предположить, что авторы других языков также руководствовались при их создании какими-то основными идеями, о том, как на этом языке будут писаться, к примеру, сложные структуры или алгоритмы.
Следствие 1.
Холивары по поводу лучшего языка (или их целого «семейства») совершенно бессмысленны. Лучший тот язык, который совпадает по типу мышления с вашим. Самые интересные свойства языка вас не впечатлят, если вы не собираетесь ими пользоваться. Самые большие его недостатки не испугают, если вы с ними прекрасно ужились.
Следствие 2.
Если правильно определить свои склонности и свой тип мышления, а затем найти язык, подходящий лично вам, то можно достичь больших успехов. Но тут без опыта никуда: не попробуешь – не узнаешь.
Следствие 3.
Возможно, если бы в командах присутствовали программисты из всех категорий, это пошло бы на пользу. Хотя… не факт, что им удалось бы легко сработаться, ведь у каждого был бы совершенно разный способ мышления, а продукты, как ни крути, пишутся на каком-то одном основном языке. Впрочем, это чисто теоретическое рассуждение, потому что такую команду встретишь не часто.
[customscript]techrocks_custom_after_post_html[/customscript]
[customscript]techrocks_custom_script[/customscript]