scrptn
Пользователь
Суть проблемы - отсутствие взаимопонимания, которое часто имеет место между программистами при общении в сети и не только. Речь пойдет именно об общении программистов на тему программирования: обмен опытом, обсуждением проблем, используемых языков программирования, сред разработки, программных компонентов и т.д.
Сформулирую вот такие рекомендации:
0. Программирование - не единственный аспект человеческой жизни. Следствий из этого столь много, что нет смысла их перечислять.
1. В программировании, как и в любом научном знании, нет места догмам. Нет универсальных алгоритмов, языков, техник, средств; нет всегда однозначно правильных способов сделать что-то. То, что в одном случае будет верно, в другом может только добавить проблем. Эти рекомендации - тоже не догма, можешь их не выполнять.
2. В программировании нет места элитаризму. Каждый получает то, что заслужил, и каждый выполняет ту работу, на которую способен. Хотя, очевидно, бывает и несправедливость.
3. Нельзя обвинять человека в том, что он что-то знает или чем-то пользуется. Это относится прежде всего к спорам на тему "чей язык/среда/платформа/... лучше". Если ты знаешь нечто, что считаешь лучшим - посоветуй это, но не настаивай на превосходстве и правильности своего выбора, потому что ты тоже просто человек и не знаешь всего.
4. Прежде, чем критиковать - пойми. Перед тем, как указать кому-то на то, что по твоему мнению является неправильным, пойми, почему этот человек сделал именно так. Зачастую то, что с первого взгляда кажется глупым, неэффектианым или ошибочным, на самом деле является продуманным решением. Сюда относятся и целенаправленные отступления от стандартов/рекомендаций.
5. В споре не отождествляй язык программирования (концепция, синтаксис и его спецификации, стандарты) и его реализацию (компилятор/интерпрететор), а также его стандартные библиотеки и весь прочий код. Алгоритм и компьютерная программа - также разные вещи.
6. Не суди о программисте по его коду или используемому им языку/среде/... и наоборот - он может просто не знать того, что знаешь ты. Также возможно, что ты знаешь меньше него (в среде профессионалов это бывает часто).
7. Не ожидай от других идеального кода и не считай таковым свой. Предела совершенству нет, а ошибки есть всегда при достаточном размере кода.
8. Не можешь объяснить - значит, не понимаешь до конца. Не можешь объяснить словами - напиши код, псевдокод, диаграмму или используй каку-либо иную нотацию.
9. Не делай работу за лентяев (бесплатно). Лучше скажи им, где этому научиться. Иначе сядут на шею - число профессионалов от этого не увеличится.
10. Тот, у кого есть рабочий код, очевидно, не всегда прав - зато у него есть рабочий код.
11. Если ты тратишь больше усилий на написание кода - это не обязательно делает код лучше. Не аргументируй ценность результата тем, что ты дошел до него более сложным путем. Простота, как правило, ценится достаточно высоко, и на то есть все основания.
12. Наглядность и вообще всякое удобство каждый склонен понимать по-разному - это эмпирически установленный факт.
13. Твой код - доказательство твоих умений. Если же ты в качестве аргументов в споре приводшь чужой код, то это в общем случае ни о чем не говорит, хотя все же может служить подтверждением твоей правоты.
14. Не загружай собеседника излишними деталями и не пытайся "задавить интеллектом". Лаконичная речь облегчает взаимопонимание.
15. Если с тобой общаются в манере, обратной описанной в этих рекомендациях - лучше всего просто проигнорировать такого человека, потому что найти взаимопонимание все равно вряд ли получится, да и тратить на это время нет особого смысла.
16. Знай цену своему и чужому времени. Чем проводить его в словесных перепалках или мечтаниях, лучше научись чему-нибудь или заработай денег.
Сформулирую вот такие рекомендации:
0. Программирование - не единственный аспект человеческой жизни. Следствий из этого столь много, что нет смысла их перечислять.
1. В программировании, как и в любом научном знании, нет места догмам. Нет универсальных алгоритмов, языков, техник, средств; нет всегда однозначно правильных способов сделать что-то. То, что в одном случае будет верно, в другом может только добавить проблем. Эти рекомендации - тоже не догма, можешь их не выполнять.
2. В программировании нет места элитаризму. Каждый получает то, что заслужил, и каждый выполняет ту работу, на которую способен. Хотя, очевидно, бывает и несправедливость.
3. Нельзя обвинять человека в том, что он что-то знает или чем-то пользуется. Это относится прежде всего к спорам на тему "чей язык/среда/платформа/... лучше". Если ты знаешь нечто, что считаешь лучшим - посоветуй это, но не настаивай на превосходстве и правильности своего выбора, потому что ты тоже просто человек и не знаешь всего.
4. Прежде, чем критиковать - пойми. Перед тем, как указать кому-то на то, что по твоему мнению является неправильным, пойми, почему этот человек сделал именно так. Зачастую то, что с первого взгляда кажется глупым, неэффектианым или ошибочным, на самом деле является продуманным решением. Сюда относятся и целенаправленные отступления от стандартов/рекомендаций.
5. В споре не отождествляй язык программирования (концепция, синтаксис и его спецификации, стандарты) и его реализацию (компилятор/интерпрететор), а также его стандартные библиотеки и весь прочий код. Алгоритм и компьютерная программа - также разные вещи.
6. Не суди о программисте по его коду или используемому им языку/среде/... и наоборот - он может просто не знать того, что знаешь ты. Также возможно, что ты знаешь меньше него (в среде профессионалов это бывает часто).
7. Не ожидай от других идеального кода и не считай таковым свой. Предела совершенству нет, а ошибки есть всегда при достаточном размере кода.
8. Не можешь объяснить - значит, не понимаешь до конца. Не можешь объяснить словами - напиши код, псевдокод, диаграмму или используй каку-либо иную нотацию.
9. Не делай работу за лентяев (бесплатно). Лучше скажи им, где этому научиться. Иначе сядут на шею - число профессионалов от этого не увеличится.
10. Тот, у кого есть рабочий код, очевидно, не всегда прав - зато у него есть рабочий код.
11. Если ты тратишь больше усилий на написание кода - это не обязательно делает код лучше. Не аргументируй ценность результата тем, что ты дошел до него более сложным путем. Простота, как правило, ценится достаточно высоко, и на то есть все основания.
12. Наглядность и вообще всякое удобство каждый склонен понимать по-разному - это эмпирически установленный факт.
13. Твой код - доказательство твоих умений. Если же ты в качестве аргументов в споре приводшь чужой код, то это в общем случае ни о чем не говорит, хотя все же может служить подтверждением твоей правоты.
14. Не загружай собеседника излишними деталями и не пытайся "задавить интеллектом". Лаконичная речь облегчает взаимопонимание.
15. Если с тобой общаются в манере, обратной описанной в этих рекомендациях - лучше всего просто проигнорировать такого человека, потому что найти взаимопонимание все равно вряд ли получится, да и тратить на это время нет особого смысла.
16. Знай цену своему и чужому времени. Чем проводить его в словесных перепалках или мечтаниях, лучше научись чему-нибудь или заработай денег.