Как вы делитесь своим ремеслом с не программистами?

43

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

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

Как вы заставляете непрограммистов в своей жизни понимать, что вы делаете?

ПРИМЕЧАНИЕ: это не повторение того, как непрограммисты понимают процесс разработки , потому что этот вопрос касался управления ожиданиями клиентов.

EpsilonVector
источник
Такова природа профессии: за ваши усилия мало материального вознаграждения, потому что вы единственный, кто понимает, что вы делаете. Однако знания, деньги вознаграждают достаточно для большинства.
Никто
12
Будь рад, что ты не пишешь вещи для безопасности. Безопасность еще менее очевидна, чем все остальное. «Видите, он делает то же самое, что и раньше, только теперь он безопасен ...»
Шон Д.
2
Может кто-нибудь объяснить мне, к какой категории относится этот вопрос в programmers.stackexchange.com/faq
Noname
1
@ Дэйв соответствует категории вопросов, которые были опубликованы, когда сайт еще был в бета-версии, если память мне не изменяет. Правила не были полностью отточены тогда.
EpsilonVector

Ответы:

31

Три слова:

dumb it down

Программирование сложное. Требуется большая работа, чтобы понять это. А радости программирования еще тоньше.

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

(т.е. объект для автомобиля с приборной панелью и сиденьями и ....)

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

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

Но, в конце концов, вы должны упростить, упростить и упростить еще немного. И даже тогда трудно заставить кого-то понять, насколько крут класс с хорошей подготовкой и хорошими юнит-тестами. :)

оборота Ваккано
источник
25
+1 за «И даже тогда трудно заставить кого-то понять, насколько крут класс с хорошей подготовкой и хорошим модульным тестом». Мне трудно заставить некоторых программистов понять это.
CaffGeek
3
Я фанат использования плохих аналогий для объяснения эзотерических концепций.
Малахия
49

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

JohnFx
источник
13
+1 - я использую этот метод все время. Если я действительно хочу, чтобы они знали, как прошел мой день, я добавлю к ним некоторые термины и посмотрю, как блестящий взгляд бросается в глаза. Тогда кто-то меняет тему.
Джоэл Этертон
7
Я обнаружил, что люди склонны менять тему, как только я упоминаю компьютеры. Либо так, либо они начинают жаловаться на свой компьютер и просят совета. Я думаю, что у врачей та же проблема.
Брайан Ортис
3
@ Брайан, за исключением того, что большинство врачей решают проблемы, а не строят новые системы;)
Armand
2
Да. Самый простой ответ: «Я создаю материал ... точнее, я создаю кластерную систему реального времени высокой доступности для ...» - и вот они ушли ...
Sorantis
Это то, что я делаю. Затем я жду 5 секунд молчания и говорю: «Эннннд, с дороги нет такого убийцы разговоров. Так что ты делаешь?»
фунтовые
12

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

mpenrow
источник
12

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

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

Это было не то, что он хотел, и я был немного сбит с толку.

Только позже я понял, в чем была настоящая проблема. Мне напомнили эту цитату Оскара Уайльда:

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

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

Мир художника совершенно другой. Если вы слушаете с закрытыми глазами исполнение 9-й симфонии Бетховена, вы переноситесь. Вы должны уделить этому все свое внимание, и когда оно закончится, вы жаждете этого. Если вы посетите шедевр Фрэнка Ллойда Райта «Падающая вода», вас транспортируют. Я, честно говоря, не знаю, как кто-то может жить в этом. Где можно сделать беспорядок? Это захватывает вас полностью. Это архитектурная симфония.

Искусство не делает что-то для тебя, оно делает что-то для тебя.

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

оборота Майк Данлавей
источник
3
Я читал, что, как и на компьютере-ретрансляторе Гарри Поттера , магия часто используется для описания того, что мы делаем, конечно же;)
jk.
@jk: Могу поспорить, что только это приводит студентов в его классы :)
Майк Данлавей
@jk. Чаще всего я вижу черную магию в наших работах.
Heishe
7

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

mouviciel
источник
1
+1 за концентрацию на отношениях с коллегами. Каждый может относиться к такого рода вещам. «Я пошел на ланч с боссом, и он говорил ...» гораздо более убедительно, чем «Я провел половину своего дня, пытаясь устранить условия гонки»
Энди Хант
3

Для этого у меня есть две аналогии: рецепт и массивная бюрократия. Вот что я объяснил в этом QA: 30 минут, чтобы объяснить программирование 15-летнему

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

Я фактически использовал аналогию с бюрократией только пару раз, потому что большинству людей действительно не нужно разбираться вне аналогии с рецептами, но оба раза были очень полезными для человека. Похоже, они думали, что программирование означает полный вызов каждой строки кода (например, «Но если у вас такая дрянная память, то как вы можете программировать компьютер?»), Но на самом деле речь идет о создании множества автономных модулей, которые работают вместе. для достижения большей цели. Модули программы похожи на отделы в большой компании: автономные подразделения, которые в основном имеют дело с собственным битом целого и общаются с другими отделами посредством заметок.

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

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

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

MAK
источник
1

Метафоры

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

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

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

Эван Плейс
источник
1

Я ответил на аналогичный вопрос более подробно , но суть в том, что «программирование похоже на строительство фабрики или конвейера».

оборота хуперникетов
источник
1

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

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

Кевин Клайн
источник
Это был бы болезненный мир, где вы не могли бы запрограммировать свой компьютер, чтобы упростить программирование («визуальный поиск ... ошибочной запятой»).
комп
1

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

frankc
источник
0

Вы не можете поделиться своим ремеслом - просто заголовки о своей работе с другими

Однако, вместо того, чтобы делиться своим ремеслом, вы можете делиться своей жизнью с людьми, которые занимаются тем же ремеслом, что и вы (:

Мирей Раад
источник
0

Я обычно говорю не о том, как это делается, а об особенностях работы .

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

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

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

l0b0
источник
0

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

По крайней мере, так я на это смотрю. Я могу ошибаться.

Андрей М
источник
0

В качестве другого ответа на остальные 15 ответов ...

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

Таким образом, людям легче понять, что это сложная природа и как она связана с «реальным миром».

В качестве аналогии, как средневековый кузнец, я бы, вероятно, объяснил (даме в местной таверне), что я делаю мечи, чтобы разбить врага на куски, а не как я закаливаю сталь и бью его с определенным углом и силой (если только они спрашивают). Надеюсь, она поймет, что разбить врага на части полезно (...) и может быть сложно (нехватка стали, бронированные противники, дымное рабочее место и т. Д.), И, таким образом, вы получите некоторую оценку за выполнение сложной задачи.

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

Маке
источник
0

Я сравниваю это со строительством дома, если бы мы жили в странной вселенной с экзотическими частицами и анти-временем:

У вас есть идея по-настоящему классного дома, поэтому вы строите черновой набросок того, как он будет выглядеть, и у вас есть общий план действий. Вы идете в хозяйственный магазин и покупаете пиломатериалы, чтобы построить стены, но они продолжают падать, потому что земля неровная. Итак, вы идете и покупаете цемент, чтобы заложить фундамент, но цемент не высохнет, и вы не можете понять, почему. Вы возвращаетесь в хозяйственный магазин и спрашиваете почему, но сотрудник приходит в ужас. Вы ходите в 8 различных магазинов оборудования, пока один не скажет вам, что используемый вами цемент был разработан осенью 1989 года, но вы купили вашу собственность зимой 1989 года, поэтому они несовместимы, и он продаст вам самый последний цемент 2013.1.1. Вы возвращаетесь, чтобы заложить фундамент, и как только вы это делаете, цемент исчезает. На этот раз все сотрудники приходят в ужас так что вы заглядываете в свой дом и обнаруживаете, что когда-то это был сайт ядерных испытаний. Затем вы гуглите влияние ядерных испытаний на почву и обнаруживаете, что оно вызывает свободные радикалы. Вы гуглите это и начинаете исследовать электромагнитное излучение, затем фермионы, затем бозон, затем теорию струн и кое-что о кошке. Вы не хотите сдаваться, потому что вы потратили так много времени, поэтому вы сильно ударили по бутылке. Вы приходите домой поздно и вынимаете свой гнев на свою жену, утверждая, что она - причина, по которой вы не можете построить дом, потому что она и дети занимаются все ваше время ... Через 3 месяца вы понимаете, что ушли из и кое-что о кошке. Вы не хотите сдаваться, потому что вы потратили так много времени, поэтому вы сильно ударили по бутылке. Вы приходите домой поздно и вынимаете свой гнев на свою жену, утверждая, что она - причина, по которой вы не можете построить дом, потому что она и дети занимаются все ваше время ... Через 3 месяца вы понимаете, что ушли из и кое-что о кошке. Вы не хотите сдаваться, потому что вы потратили так много времени, поэтому вы сильно ударили по бутылке. Вы приходите домой поздно и вынимаете свой гнев на свою жену, утверждая, что она - причина, по которой вы не можете построить дом, потому что она и дети занимаются все ваше время ... Через 3 месяца вы понимаете, что ушли изпочти отделка дома, даже не зная, почему вы хотели построить дом в первую очередь.

PUK
источник
-1

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

Эми Паттерсон
источник
или смени работу, о нет !!!
Джоккинг
-2

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

crosenblum
источник
-2

Иногда я сдаюсь и просто говорю, что провожу день, редактируя текстовые файлы. Что обычно верно, если не полная история.

fwgx
источник