Чи бідні письменники роблять поганими програмістами? [зачинено]


16

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

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


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

Під "не можу писати", ти маєш на увазі, що їх граматика неправильна? Це, мабуть, більше питання, ніж такі, як поганий потік тощо.
Maxpm

1
@Maxpm: Можливо, але також неможливість передати їх значення в письмовій формі, незважаючи на те, що граматично правильно.
габлін

Відповіді:


30

Програмування набагато більше, ніж «написання коду». Значна частина успішного програміста передбачає спілкування; Вміючи зв’язуватися з клієнтами, розуміти їхні потреби, переводити їх у технічну сферу, виражати їх у коді, а потім пояснювати результат назад клієнтам.

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

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

Як кажуть Джейсон Фрід та Девід Хайнмейєр Хансон (із 37 сигналів) у своїй книзі «Переробляйте»:

Якщо ви намагаєтеся вирішити кілька людей, щоб заповнити позицію, найміть найкращого письменника.

Бути добрим письменником - це більше, ніж писати. Чітке письмо - ознака чіткого мислення. Великі письменники вміють спілкуватися.


2
Так, і я думаю, що майже всі згодні з тим, що одна з якості хорошого програміста - це вміння чітко висловлюватися в коді, тому це не здивує мене, що вміння чітко висловлюватися в письмовій формі корелює зі здатністю чітко висловлюватися. у вашому коді (і навпаки). +1
n1ckp

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

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

15
  • Якщо ви не можете пояснити щось досить добре, напевно, ви не розумієте цього досить добре. Бути розумною людиною означає, що ви будете працювати з іншими розумними людьми, і вам доведеться ефективно спілкуватися з ними.
  • Будь-яка чудова ідея у вас є марною, якщо вона існує лише в вашій голові.
    Вміти ефективно доносити свої ідеї - знак великого розуміння. Це стосується більше, ніж просто галузі програмування.

4

Я думаю, якщо ми вивчимо питання, отримаємо відповідь безпосередньо:

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

Що насправді означає написати хороший код?

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

Це означає виражати себе чітко, стисло, правильно та елегантно, пишучи мовою програмування.

Єдина різниця між вмілим вираженням англійської мови чи мовою програмування полягає в тому, що англійська мова набагато прощає.


3

Я не думаю, що це корінна мавпа не є основною перешкодою (я припускаю певний базовий рівень / здатність висловлювати себе на своїй рідній мові). Однак я думаю, що це може швидко стати головною перешкодою, оскільки ви (розробник) повинні почати краще формулювати конструкції / арку / плани для нетехнічної аудиторії. З мого досвіду, я щось перехоплюю на когось іншого, який знаходиться приблизно на тому ж технічному рівні, як і я, - це мені легше і вимагає значно менших (природних) мовних навичок, ніж це робиться для того, щоб сформулювати щось із клієнтом та / або менеджером. У той же час, навіть якщо це технічна аудиторія, оскільки тема стає менш конкретною, людина, яка пише про це (або говорить з цього приводу), повинна бути досить чіткою.


3

Це залежить від того, що ви маєте на увазі під «хорошим кодом».

Якщо ви маєте на увазі код, який просто працює, навряд чи існує якийсь зв’язок між можливістю спілкуватися з людьми та вмінням спілкуватися з комп'ютерами.

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

Хоча вам не знадобляться всі різні навички, необхідні для того, щоб бути хорошим письменником для написання зрозумілого коду, все ж є деякі елементи, які повинні бути там, оскільки обидва будуть читати люди. У чомусь навіть складніше написати хороший код, оскільки він повинен описувати наміри з кодом, не використовуючи при цьому конструкції, які б погано працювали під час виконання комп'ютером.


2

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

Коли ви пишете програму, то, що ви насправді робите, - це повідомляти іншій людині, що саме ви хочете, щоб це робив комп'ютер. Програмування - це спілкування, як і будь-яка інша форма письма. Так, так, студенти з інформатики повинні піддаватися хорошій писемності. Але оскільки в інформатиці так багато дорогого, можливо, їм просто потрібні основні уроки творчого письма.

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

Більше про цю цікаву статтю:

Чи погана грамотність відображає погані навички програмування?


2

Це взагалі анекдотично, але:

Один з найкращих програмістів "рок-зірки", з яким я коли-небудь працював, був дуже бідним письменником. І коли я кажу "дуже бідний", я маю на увазі тип, який натрапив на кшталт, що він був надзвичайно п’яним, або ледве грамотним - коли ви побачили його електронні листи. Опечатки, відсутність пунктуації, утруднення чіткого викладу думок і поширені орфографічні помилки ("їх / вони" та подібні) все рясніли - часом майже мучительно. Читаючи деякі його електронні листи - я б переживав, щоб він надсилав електронну пошту клієнтам безпосередньо (нам не потрібно було робити цього в цій компанії) - тому що це призведе до того, що компанія виглядатиме погано!

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

Я не впевнений, що з цього зробити. Я бачив це кілька разів з різними людьми. Деякі просто, здається, не вміють сидіти і виписувати речі. І часто це, мабуть, не впливає на їхні таланти в інших сферах (навіть відносно схожі на таланти "робота на знаннях", наприклад, програмування). Ви можете подумати, що це буде пов'язано, але я бачив кілька таких прикладів життя, де цього не було. Хоча я гадаю, що цілком можливо, що вони є " винятками, які підтверджують правило " - я, мабуть, просто не думав помічати поганих письменників, які не є програмістами, і хороших письменників, які є .


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

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

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

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

2

Якщо вони не вміють добре писати, як вони можуть переконати вас у тому , що вони хороші програмісти?


0

Чи може хтось не в змозі точно висловити системну організацію чи ідею, написавши її, зможе написати код - це точні вказівки - правильно інтерпретований (дуже) німим комп'ютером?


Але ви отримуєте дуже чіткий і негайний цикл зворотного зв'язку з комп’ютера, якщо ваш код неправильно записаний. Я підозрюю, що ти можеш мати надзвичайно погану письмову англійську мову і навряд чи коли-небудь навіть про неї розповість, не кажучи вже про відгуки, які потрібно покращити.
Carson63000

Ви повинні навчитися бути чіткими та правильними навіть із компілятором, тому що, якщо цього не зробите, то в кінці кінців нічого навіть не складете.
Клаїм

0

Я думаю, що програмісту дуже важливо вміти добре спілкуватися як з розмовною, так і з письмовою мовою. Здатність перекладати ідею словами є необхідною умовою для написання коду.

Незалежно від того, спілкуємось ми з комп’ютером чи людиною, ми повинні складати слова в порядку, який має сенс дотримуватися граматичних правил. Ми повинні або вимовляти слова правильно, або правильно їх вимовляти, щоб інша сторона розмови їх зрозуміла. Комп’ютери кинуть синтаксичні помилки, колеги або скажуть "ЩО?" або знижка того, що говорять як непристойне лепетання або ще гірше, дратує відволікання.

Я сильно не рекомендував найняти кандидатів на роботу, оскільки вони не змогли завершити думку або залишитися на темі. Один чоловік був найнятий нашим начальником у будь-якому випадку, і виявилося, що він не зміг вчасно виконати просту доручення, тому що його відволікали будь-які яскраві та блискучі нові технології чи іграшки, що потрапляли йому в очі.

Отже, так, важливо, щоб програмісти вміли добре спілкуватися. Якщо вони не можуть ефективно спілкуватися з людиною, вони не можуть зробити це з комп'ютером.


0

Бідні письменники роблять бідних письменників, і більше нічого. Погана навичка письма не означає, що вони взагалі не вміють спілкуватися, але просто не вміють писати чи виражати дуже добре. Звичайно, хтось може сказати, що комунікативні навички важливі та вирішальні в компанії та інше тощо, але це не означає, що програміст із поганою комунікативною майстерністю не може добре виконати роботу. Програмування та написання - це мистецтво, але зовсім іншого роду. Писання - це те, як змусити когось іншого зрозуміти, що ви говорите, та / або діяти відповідно, але програмування не змушує комп'ютер зрозуміти вашу вимогу, оскільки жоден комп’ютер не зрозуміє жодної потреби користувача (принаймні протягом 100 років з часу IMO). У програмуванні йдеться про те, як перекласти вимогу на мову програмування, і тому навичка письма не так пов’язана.


1
Частина завдання програміста - це чітко виразити себе в коді (та коментарях), щоб не тільки комп'ютер, а й інші люди могли читати код. Це спричинило б почуття (але це не доведено AFAIK), що ці навички співвідносяться.
n1ckp

0

Абсолютно не!

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

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

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

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


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