Этикет общения программистов и "программистские грехи"

scrptn

Пользователь
Суть проблемы - отсутствие взаимопонимания, которое часто имеет место между программистами при общении в сети и не только. Речь пойдет именно об общении программистов на тему программирования: обмен опытом, обсуждением проблем, используемых языков программирования, сред разработки, программных компонентов и т.д.

Сформулирую вот такие рекомендации:

0. Программирование - не единственный аспект человеческой жизни. Следствий из этого столь много, что нет смысла их перечислять.

1. В программировании, как и в любом научном знании, нет места догмам. Нет универсальных алгоритмов, языков, техник, средств; нет всегда однозначно правильных способов сделать что-то. То, что в одном случае будет верно, в другом может только добавить проблем. Эти рекомендации - тоже не догма, можешь их не выполнять.

2. В программировании нет места элитаризму. Каждый получает то, что заслужил, и каждый выполняет ту работу, на которую способен. Хотя, очевидно, бывает и несправедливость.

3. Нельзя обвинять человека в том, что он что-то знает или чем-то пользуется. Это относится прежде всего к спорам на тему "чей язык/среда/платформа/... лучше". Если ты знаешь нечто, что считаешь лучшим - посоветуй это, но не настаивай на превосходстве и правильности своего выбора, потому что ты тоже просто человек и не знаешь всего.

4. Прежде, чем критиковать - пойми. Перед тем, как указать кому-то на то, что по твоему мнению является неправильным, пойми, почему этот человек сделал именно так. Зачастую то, что с первого взгляда кажется глупым, неэффектианым или ошибочным, на самом деле является продуманным решением. Сюда относятся и целенаправленные отступления от стандартов/рекомендаций.

5. В споре не отождествляй язык программирования (концепция, синтаксис и его спецификации, стандарты) и его реализацию (компилятор/интерпрететор), а также его стандартные библиотеки и весь прочий код. Алгоритм и компьютерная программа - также разные вещи.

6. Не суди о программисте по его коду или используемому им языку/среде/... и наоборот - он может просто не знать того, что знаешь ты. Также возможно, что ты знаешь меньше него (в среде профессионалов это бывает часто).

7. Не ожидай от других идеального кода и не считай таковым свой. Предела совершенству нет, а ошибки есть всегда при достаточном размере кода.

8. Не можешь объяснить - значит, не понимаешь до конца. Не можешь объяснить словами - напиши код, псевдокод, диаграмму или используй каку-либо иную нотацию.

9. Не делай работу за лентяев (бесплатно). Лучше скажи им, где этому научиться. Иначе сядут на шею - число профессионалов от этого не увеличится.

10. Тот, у кого есть рабочий код, очевидно, не всегда прав - зато у него есть рабочий код.

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

12. Наглядность и вообще всякое удобство каждый склонен понимать по-разному - это эмпирически установленный факт.

13. Твой код - доказательство твоих умений. Если же ты в качестве аргументов в споре приводшь чужой код, то это в общем случае ни о чем не говорит, хотя все же может служить подтверждением твоей правоты.

14. Не загружай собеседника излишними деталями и не пытайся "задавить интеллектом". Лаконичная речь облегчает взаимопонимание.

15. Если с тобой общаются в манере, обратной описанной в этих рекомендациях - лучше всего просто проигнорировать такого человека, потому что найти взаимопонимание все равно вряд ли получится, да и тратить на это время нет особого смысла.

16. Знай цену своему и чужому времени. Чем проводить его в словесных перепалках или мечтаниях, лучше научись чему-нибудь или заработай денег.
 

scrptn

Пользователь
Нашел крайне интересный материал по теме:

трактовка 7и смертных грехов в разрезе программирования

— Гордыня (Superbia) - замутнёное восприятие собственного кода (любимого фреймворка, любимого языка программирования), излишнее его восхваление, игнорирование недостатков, нежелание его рефакторить.

— Зависть (Invidia) - на работе пишем на 1С, но всё время всем рассказываем как бы было круто, если бы мы писали на Haskell (Erlang, Lisp...) или еще каком-нибудь крутом-крутом языке.

— Обжорство (Gula) - у программиста выражается в том, что он хапает много-много знаний, не успевая при этом усвоить, а потом суёт их везде и бахвалится ими, хотя в реальности совсем не шарит. "Неусвоенные" знания откладываются в "мозговой жир", который потом оставляет след на всём производимом программистом коде. Эти жирные пятна из репозиториев приходится годами вычищать с ацетоном...

— Гнев (Ira) - пишем на работе на языке A (Haskell, Erlang, Lisp, C++...), а когда в интернете кто-то докладывает, что успешно применяет B (Lisp, C++, 1C, Modula-2), то прибегаем и начинаем его чморить, потому что он отставший от жизни кретин. Часто соседствует с "Завистью", когда на работе на самом деле пишет на 1С, а на крутой-крутой язык A только мечтательно мастурбирует дома.

— Блуд (Luxuria) - постоянно меняем любимые языки программирования. Сегодня мы пишем на ассемблере, а завтра рекламируем всем Java, которую скорее всего сменит Scala, а потом будет опять ассемблер или там Си. Еще один вариант Блуда - это использование в проекте множества разных библиотек и фреймворков, часто совсем не по делу. Написание кода ради кода, подключение библиотек ради подключения библиотек. В этом смысле Блуд соседствует с Обжорством.

— Уныние (Acedia) жизнь не удалась, пишем на PHP, а хотим писать на Haskell (см. Зависть), свой код гавно, код коллег еще хуже. При этом ничего для исправления ситуации не делается. Наоборот: человек исправно ходит на работу и строчит тысячи-тысячи строк кода на нелюбимом языке программирования. А в перерывах на обед жалуется в ЖЖ, какое же оно уродское это ПХП... Часто программисты в унынии начинают просто "говнякать код по быстрому".

— Алчность (Avaritia) желание сделать много и быстро. Относится не только к деньгам, но и к "фичам". Охватить необъятное. Обобщить всё. Создать гениальный стартап. Выпустить гениальный продукт. В крайнем случае библиотеку, которая делает всё-всё-всё и даже немного больше. Дальше разговоров обычно ничего не движется, а если движется, то результат совершенно тошнотворен, ибо "наговнякан по быстрому". Сюда же относится желание безостановочно рефакторить всё и вся, которое у многих просыпается в ночь перед релизом.
Оригинальный пост от mr_aleph

Должен сказать, что я подвержен всему описанному, но в особенности унынию, зависти и обжорству (но без "сувания везде") в порядке убывания.
 
Сверху