Бедные писатели делают плохих программистов? [закрыто]


16

Я читаю « Coders at Work » Питера Сейбела, и много раз упоминалось, что программисты, которые не умеют писать, обычно делают плохих программистов - это утверждали Дуглас Крокфорд, Джошуа Блох, Джо Армстронг, Дейкстра (и я прочитайте только половину книги).

Что вы думаете об этом? Является ли невозможность выразить себя в письменной форме на естественном языке, таком как английский, помехой для написания хорошего кода?


9
Я не знаю навыка программиста, но для того, чтобы ПРОДАТЬ себя программистом, умный = сексуальный в мире фрилансеров. Поэтому, если вы умеете хорошо писать (и говорить), вы будете восприниматься как умный и считаться более надежным разработчиком (хотя это может быть совершенно необоснованным).
Дэн Розенстарк

Под "не могу писать" вы имеете в виду, что их грамматика неверна? Это, вероятно, более
серьезная

1
@Maxpm: Возможно, но также и неспособность передать их значение в письменном виде, несмотря на грамматическую правильность.
Габлин

Ответы:


30

В программировании гораздо больше, чем «написание кода». Большая часть успешного программиста включает в себя общение; Будучи в состоянии связаться с клиентами, понять их потребности, перевести их в техническую сферу, выразить их в коде, а затем объяснить результат обратно клиентам.

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

Я думаю, что неспособность хорошо писать и, следовательно, хорошо общаться, помешает стать хорошим программистом.

Как говорят Джейсон Фрид и Дэвид Гейнемейер Ханссон (из 37 сигналов) в своей книге «Переработка»:

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

Быть хорошим писателем - это больше, чем писать. Ясное письмо - признак ясного мышления. Великие писатели умеют общаться.


2
Да, и я думаю, что почти все согласны с тем, что одним из качеств хорошего программиста является способность четко выражать свое мнение в коде, поэтому меня не удивит, что способность четко выражать себя в письменной форме коррелирует со способностью четко выражать свои мысли. в вашем коде (и наоборот). +1
n1ckp

2
Я бы это второй Вам нужно общаться - не только с машиной. Люди вокруг вас и программисты, которые приходят за вами, нуждаются в ясности в общении, как в устной, так и в письменной форме. Говорят, потому что рано или поздно вы должны поговорить с людьми, и написано, потому что это то, что ваш код и ваши комментарии.
quick_now

Я нашел ваш ответ очень интересным! Но когда я оглянулся в своей памяти, чтобы найти, кто был лучшими программистами, с которыми я работал, работал или работал на меня, я обнаружил, что многие из них очень плохо пишут. Тем не менее, они были до смешного хороши. Однако я запомню ваш отличный ответ и попробую его в будущем. +1

16
  • Если вы не можете объяснить что-то достаточно хорошо, вы, вероятно, не понимаете этого достаточно хорошо. Быть умным человеком означает, что вы будете работать с другими умными людьми, и вам придется эффективно общаться с ними.
  • Любая ваша прекрасная идея бесполезна, если она существует только в вашей голове.
    Способность эффективно передавать ваши идеи - признак глубокого понимания. Это относится не только к области программирования.

4

Я думаю, что если мы рассмотрим вопрос, мы получим ответ напрямую:

Является ли невозможность выразить себя в письменной форме на естественном языке, таком как английский, помехой для написания хорошего кода?

Что на самом деле означает писать хороший код?

Программы должны быть написаны для того, чтобы люди могли читать, и только для машин.
- Абельсон и Суссман, Структура и интерпретация компьютерных программ

Это означает выразить себя ясно, кратко, правильно и элегантно писать на языке программирования.

Единственная разница между умелым самовыражением на английском или языке программирования состоит в том, что английский гораздо более щадящий.


3

Я не думаю, что это является основным препятствием для обезьяны кода (я предполагаю определенный базовый уровень / способность выражать себя на своем родном языке). Однако я думаю, что это может быстро стать серьезным препятствием, поскольку вы (разработчик) должны начать лучше формулировать проекты / архитектуру / планы для нетехнической аудитории. По моему опыту, мне легче донести что-то до кого-то, кто находится примерно на том же техническом уровне, что и я, и требует гораздо меньших (естественных) языковых навыков, чем то, что он формулирует для клиента и / или менеджера. В то же время, даже если это техническая аудитория, поскольку предмет становится менее конкретным, человек, который пишет об этом (или говорит по этому поводу), должен быть достаточно четко сформулирован.


3

Это зависит от того, что вы подразумеваете под «хорошим кодом».

Если вы имеете в виду код, который просто работает, вряд ли есть какая-либо связь между способностью общаться с людьми и возможностью общаться с компьютерами.

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

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


2

Дело в том, что кодирование - это тоже навык общения. Джек Гэнсл в своем электронном бюллетене Embedded Muse недавно процитировал Дуга Эббота:

Когда вы пишете программу, то, что вы действительно делаете, - это сообщаете другому человеку, что именно вы хотите, чтобы компьютер делал. Программирование - это общение, как и любая другая форма письма. Да, студенты, изучающие информатику, должны хорошо писать. Но поскольку в компьютерной науке этого так мало, может быть, им просто нужны базовые уроки творческого письма.

Программисты, которые не знают, как писать прозу, вероятно, тоже не знают, как писать код.

Подробнее об этой интересной статье:

Плохое письмо отражает плохие навыки программирования?


2

Это в целом анекдотично, но:

Один из лучших программистов "рок-звезды", с которым я когда-либо работал, был очень плохим писателем. И когда я говорю «очень бедный», я имею в виду тип, который встречался, как будто он был либо чрезвычайно пьян, либо едва грамотен - когда вы видели его электронные письма. Опечатки, отсутствие знаков препинания, трудности с четким выражением идей и распространенные орфографические ошибки («их / они» и т. Д.) - все было в изобилии - иногда почти мучительно. Читая некоторые из его электронных писем - я бы беспокоился о том, чтобы он отправлял электронные письма клиентам напрямую (нам не нужно было делать это в этой компании), - потому что это заставило бы компанию выглядеть плохо!

Тем не менее, он был супер звездным программистом. На порядок более производительный и включенный, чем в среднем.

Я не уверен, что с этим делать. Я видел это несколько раз с разными людьми. У некоторых просто не хватает умения сидеть и писать вещи. И часто это, кажется, не влияет на их таланты в других областях (даже относительно, казалось бы, схожих, талантов «работы с знаниями», таких как программирование). Вы могли бы подумать, что это будет связано, но я видел несколько живых примеров, подобных этому, где это не так. Хотя я предполагаю, что вполне возможно, что они являются « исключениями, которые подтверждают правило » - я, вероятно, просто никогда не думал, что замечу плохих писателей, которые не являются программистами, и хороших писателей, которые являются .


3
Всегда есть исключения из правил. Я также работал с несколькими блестящими людьми, которых мы никогда не пускали рядом с покупателем, потому что они были бы превращены в мясной фарш. Я провел целую вечность, исправляя опечатки и так далее в их документации. Дайте им техническую проблему, и вспышки понимания и решения были удивительными. Это все только показывает, что ответы здесь являются обобщениями. Однако обобщения применимы к большинству людей.
quick_now

3
@quickly_now: Мне было бы интересно (поскольку вы не указали), как читается их код. Они могут быть очень умными и хорошими в решении проблем, но если их код не читается, они не так уж хороши в программировании, если вам нужно мое мнение.
n1ckp

@ n1ck: Теперь, когда вы упомянули об этом, парень, о котором я думаю, не очень хорошо документировал свой код. Сам код был хорош и хорошо спроектирован, но он не помещал в комментариях вокруг изначально сложных кусков кода, что означало, что его было сложнее поддерживать, чем следовало бы. Не думал об этом. :)
Бобби Столы

Я согласен с @ n1ckp. Я также готов поспорить, что его выбор имен для переменных / методов / классов иногда будет загадочным и запутанным. Я склонен очень осторожно относиться к программистам с чрезвычайно высокой производительностью, потому что это часто происходит за счет того, что они тратят немного больше времени на улучшение долговременного обслуживания.
Разочарован

2

Если они не умеют хорошо писать, как они могут убедить вас, что они хорошие программисты?


0

Может ли кто-то, кто не может точно выразить системную организацию или идею, написав это, сможет написать код, то есть точные инструкции, правильно интерпретированные (очень) тупым компьютером?


Но вы получаете очень четкую и немедленную обратную связь от компьютера, если ваш код написан неправильно. Я подозреваю, что у вас может быть очень плохой письменный английский и вряд ли когда-нибудь об этом скажут, не говоря уже о том, что вам нужно улучшить.
Carson63000

Вы должны научиться быть ясными и правильными даже с помощью компилятора, потому что если вы этого не сделаете, вы никогда даже ничего не скомпилируете в конце.
Klaim

0

Я думаю, что для программиста очень важно уметь хорошо общаться, как с устным, так и с письменным языком. Умение перевести идею в слова является обязательным условием написания кода.

Независимо от того, общаемся ли мы с компьютером или человеком, мы должны привести слова в порядок, который имеет смысл, следуя правилам грамматики. Мы должны правильно произносить слова или правильно их произносить, чтобы другая сторона разговора могла их понять. Компьютеры будут выдавать синтаксические ошибки, коллеги будут говорить "ЧТО?" или обесценить то, что говорят как бессмысленное лепетание или, что еще хуже, раздражающее отвлечение.

Я настоятельно не поощрял наем кандидатов, потому что они не могли закончить мысль или остаться на предмете. В любом случае наш начальник нанял одного человека, и оказалось, что он не может выполнить простое задание вовремя, потому что его отвлекли какие-нибудь яркие и блестящие новые технологии или игрушки, попавшие ему на глаза.

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


0

Бедные писатели делают плохих писателей, и ничего больше. Плохие навыки письма не означают, что они вообще не могут общаться, но они просто не умеют хорошо писать или выражать свои мысли. Конечно, любой может сказать, что навыки общения важны и важны в компании и так далее, и тому подобное, но это не значит, что программист с плохими навыками общения не может хорошо выполнить свою работу. Программирование и письмо - это искусство, но совершенно другого рода. Письмо о том, как заставить другого человека понять, что вы говорите, и / или действовать соответствующим образом, но программирование не заставляет компьютер понимать ваше требование, потому что ни один компьютер не будет понимать никаких требований пользователя (по крайней мере, в течение 100 лет после IMO). Программирование заключается в том, как перевести требование на язык программирования, и поэтому навыки письма не так уж связаны.


1
Часть работы программиста состоит в том, чтобы четко выразить себя в коде (и комментариях), чтобы код мог прочитать не только компьютер, но и другие люди. Было бы разумно (но не доказано AFAIK), что эти навыки взаимосвязаны.
n1ckp

0

Точно нет!

Хороший писатель - не более чем хороший писатель. Попросите хорошего писателя описать концепцию базы данных нетехническому человеку. Как вы думаете, что вы получите ...?

Хороший писатель, пишет. Хороший программист пишет хороший код.

  • Код, который другие могут прочитать через шесть месяцев после его разработки.
  • Код, который имеет смысл в 2:00 утра, когда происходит сбой системы и продолжается отладка.
  • Код, который все остальные любят заимствовать, потому что они это понимают и могут легко его изменить
  • Код, который работает 24/7 365

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


1
Я думаю, что пункты 1,2 и 3 требуют, чтобы один был хорошим писателем в дополнение к хорошему программисту. По сути, вы рассматриваете хорошие навыки письма как неявную черту.
Мамта Д
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.