Вот мой скромный совет о том, как, по моему мнению, людям следует поступать с плохим кодом. Этот совет не имеет ничего общего с техникой; строго говоря, это даже и не совет, а просто мои недавние размышления.
Обычно, первое, что человек делает, встретив плохой код — ищет виноватого. Это сразу становится личной или племенной вендеттой:
Это неправильно. Не надо начинать с этого. Прежде, чем найти беднягу-автора кода и обрушить на него свой гнев, лучше поймите сам код.
Слишком часто программист уверен. Люди и так упрямы, но программисты подвержены этому куда больше. Они работают со строгими утверждениями, так что происхождение такой уверенности понятно.
Погрузитесь в код с любопытством и желанием разобраться. Сопереживайте человеку, который его писал. Представьте себя на его месте. Он не такой как вы. Скорее всего, его занимают совсем иные заботы. Скорее всего, в его характере нет такой же прослойки того, что называется перфекционизмом. Пробелы вокруг скобок или беспорядочное на первый взгляд именование переменных могли не попасть в фокус его внимания. Может быть, у него — своя жизнь.
Без сопереживания не будет ни понимания самого кода, ни того, откуда он такой взялся. Вы лишь будете устно брызгать самопровозглашенным интеллектуальным превосходством.
Хотите понять, откуда эти необузданные GOTO, такие ветвистые switch, тупые названия, уродливое форматирование?
Понять очень просто. Представьте, что код — ваш, и вы изобретете оправдания собственной глупости. В голову немедленно придут железные аргументы: «меня торопили», «я не понимал API», «у меня не было возможности полностью разобраться в системе»… Глазом моргнуть не успеете, как у вас будет целая батарея отмазок, и лишь немногие из них будут иметь отношение к делу. Вы написали код плохо. Вы не выше этого.
Представьте себя биологом, изучающим новый вид, развивавшийся тысячелетиями без присмотра и руки, направлявшей его. Такой вид требует вопросов. Он требует расследования. Конечно, имея код, вы можете задать автору вопрос о его намерениях, и, скорее всего, именно так вы и поступите.
Звучит безумно, но так оно и есть. Вы можете подойти к автору и задать вопрос. Тут я должен вас предупредить: это может вынудить вас испить из чаши унижения.
Но что, если уважительной причины нет? Что, если это все от лени, невежества или даже злого умысла?
Да, боюсь, что так. Теперь, когда вы нашли проблему, на ваши плечи падает необходимость передать мудрость, чтобы никто и никогда не пал до столь паршивого кода.
Не дайте своему эго водить вас на поводу. Не отправляйте письмо всей команде. Не кричите с крыши. Не пишите очередной пост в блоге. Главная ошибка — вера в то, что:
И если все-таки приходится писать всем. Если приходится кричать с крыши. Если вы должны написать пост о том, что вас так раздражает, не забудьте использовать басни и намеки, маскируя намерения вашего эго. Название все-таки придется дать серьезное, чтобы соблазнить упрямого программиста прочитать его. Что-нибудь типа «Что делать с плохим кодом» будет в самый раз.
Да, извините. Вы — отстой по части многих вещей. Да, да, что-то вы знаете хорошо, но во всем остальном — полный отстой. Не вините других в том, что они не так хорошо разбираются, как вы (думаете о себе). В конце концов, правда может вас обидеть. То, что вы такой же птенец, как и все остальные программисты… да и вообще все остальные.
Итак, к чаше унижения...
Обычно, первое, что человек делает, встретив плохой код — ищет виноватого. Это сразу становится личной или племенной вендеттой:
«Как можно быть таким идиотом?»
«Кто виноват в том, что мой мозг взорвался от всей этой бессвязности и богохульства?»
«Кто оскорбляет <Название Компании>!?»
Это неправильно. Не надо начинать с этого. Прежде, чем найти беднягу-автора кода и обрушить на него свой гнев, лучше поймите сам код.
Понимайте код
Слишком часто программист уверен. Люди и так упрямы, но программисты подвержены этому куда больше. Они работают со строгими утверждениями, так что происхождение такой уверенности понятно.
Погрузитесь в код с любопытством и желанием разобраться. Сопереживайте человеку, который его писал. Представьте себя на его месте. Он не такой как вы. Скорее всего, его занимают совсем иные заботы. Скорее всего, в его характере нет такой же прослойки того, что называется перфекционизмом. Пробелы вокруг скобок или беспорядочное на первый взгляд именование переменных могли не попасть в фокус его внимания. Может быть, у него — своя жизнь.
Без сопереживания не будет ни понимания самого кода, ни того, откуда он такой взялся. Вы лишь будете устно брызгать самопровозглашенным интеллектуальным превосходством.
Действительно понимайте код
Хотите понять, откуда эти необузданные GOTO, такие ветвистые switch, тупые названия, уродливое форматирование?
Понять очень просто. Представьте, что код — ваш, и вы изобретете оправдания собственной глупости. В голову немедленно придут железные аргументы: «меня торопили», «я не понимал API», «у меня не было возможности полностью разобраться в системе»… Глазом моргнуть не успеете, как у вас будет целая батарея отмазок, и лишь немногие из них будут иметь отношение к делу. Вы написали код плохо. Вы не выше этого.
Изучите исходную проблему, проведите расследование
Представьте себя биологом, изучающим новый вид, развивавшийся тысячелетиями без присмотра и руки, направлявшей его. Такой вид требует вопросов. Он требует расследования. Конечно, имея код, вы можете задать автору вопрос о его намерениях, и, скорее всего, именно так вы и поступите.
Звучит безумно, но так оно и есть. Вы можете подойти к автору и задать вопрос. Тут я должен вас предупредить: это может вынудить вас испить из чаши унижения.
Но что, если уважительной причины нет? Что, если это все от лени, невежества или даже злого умысла?
Учитесь
Да, боюсь, что так. Теперь, когда вы нашли проблему, на ваши плечи падает необходимость передать мудрость, чтобы никто и никогда не пал до столь паршивого кода.
Не дайте своему эго водить вас на поводу. Не отправляйте письмо всей команде. Не кричите с крыши. Не пишите очередной пост в блоге. Главная ошибка — вера в то, что:
- Люди еще не знают о жемчужине мудрости, которой вы хотите поделиться
- Люди будут сидеть и почтительно внимать покровительственному тону
И если все-таки приходится писать всем. Если приходится кричать с крыши. Если вы должны написать пост о том, что вас так раздражает, не забудьте использовать басни и намеки, маскируя намерения вашего эго. Название все-таки придется дать серьезное, чтобы соблазнить упрямого программиста прочитать его. Что-нибудь типа «Что делать с плохим кодом» будет в самый раз.
Серьезно, вы тоже отстой
Да, извините. Вы — отстой по части многих вещей. Да, да, что-то вы знаете хорошо, но во всем остальном — полный отстой. Не вините других в том, что они не так хорошо разбираются, как вы (думаете о себе). В конце концов, правда может вас обидеть. То, что вы такой же птенец, как и все остальные программисты… да и вообще все остальные.
Итак, к чаше унижения...