プログラマ以外の人とどうやってクラフトを共有しますか?


43

ライブショーをできないミュージシャンのように感じることもあります。プログラミングは非常にクールなスキルであり、非常に広い世界ですが、その多くは「カメラから離れて」発生します。頭の中、オフィス、観客から離れています。

もちろん、他のプログラマーとプログラミングについて話し合うことができ、ピアプログラミングがあり、人々に見せることができるものを作成することができますが、非プログラマーにそれが何であるか、またはどうだったかを説明することになると仕事でのあなたの一日は、ちょっと難しいです。

あなたの人生で非プログラマにどうやってあなたが何をしているのかを理解させるにはどうすればいいですか?

注:これは、プログラマ以外の人に開発プロセスを理解してもらうことの繰り返しではありません。なぜなら、その質問はクライアントの期待を管理することに関するものだからです。


それが職業の性質です。あなたが何をしているのかを理解しているのはあなただけだからです。しかし、知識、お金はほとんどのために十分に報いています。
誰も


12
セキュリティのためのものを書かないことを嬉しく思います。セキュリティは、他の何よりも実証されていません。「ほら、以前と同じことをしているが、今では安全だ...」
ショーン

2
誰かが中にどのカテゴリこの質問フィット、私に説明することができますprogrammers.stackexchange.com/faq
Nonameボード

1
@Daveは、サイトがまだベータであったときに投稿された質問のカテゴリに適合します(メモリが適切な場合に役立ちます)。当時のルールは完全に洗練されていませんでした。
EpsilonVector

回答:


31

三つの言葉:

dumb it down

プログラミングは複雑です。理解するには多くの作業が必要です。そして、プログラミングの喜びはさらに微妙です。

自分の成功などを他の人(家族など)に伝えるには、より一般的なレベルで伝える必要があります。プログラミングを通常の現実世界のものと比較します。

(つまり、ダッシュボードと座席を備えた車のオブジェクトと....)

視聴者について何かを知っていると、通常の日常的な概念よりも複雑な、理解しているものを使用できるため、さらに優れています。

たとえば、私の妻は学校の先生だったので、ソフトウェア開発プロセスのいくつかを彼女が使用しなければならなかった教育プロセスと比較できます。それは非常に役立ちます。

しかし、最終的には、さらに単純化、単純化、および単純化する必要がありました。そして、それでも、優れた単体テストで巧みに作られたクラスがどれほどクールかを誰かに理解させることは困難です。:)


25
「それでも、優れた単体テストで巧みに作成されたクラスがいかにクールであるかを誰かに理解させることは困難です。」何人かのプログラマーにそれを理解させるのに苦労しています。
CaffGeek

3
私は難解な概念を説明するのに悪い類推を使うのが好きです。
マラキ

49

私も試していない。少なくともプログラミングの基本的な理解ができるほど技術指向ではない場合は、詳細だけを説明します。通常、「Webサイトを作成します」や「Xを実行するためのコンピュータープログラムを作成します」など、非常に高いレベルのものを使用します。


13
+1-この方法は常に使用します。私に彼らが私の一日がどうなったかを本当に知りたいなら、私は彼らにいくつかの言葉を投げて、そのガラスのような外観が彼らの目を引き継ぐのを見るでしょう。その後、誰かが件名を変更します。
ジョエルイーサートン

7
コンピューターについて言及するとすぐに、人々は主題を変える傾向があることがわかりました。それとも、彼らは自分のコンピューターについて不平を言い始め、助言を求めます。医師にも同じ問題があると思います。
ブライアンオルティス

3
ほとんどの医師ではなく、新たなシステムを構築するよりも、問題を解決除く@Brian;)
アルマン

2
はい。...と、ここでそれらがなくなっている-最も簡単な答えは「私はより具体的に、私は...、高可用性リアルタイムのクラスタシステムを作成...のものを作成する」である
Sorantis

これが私がすることです。それから私は5秒間の沈黙を待って、「あの会話キラーが邪魔にならないようになった。だからあなたはどうするの?」と言う。
pdr

12

私は問題を解決するという観点からそれを説明しようとします。コンピュータープログラムを使用して問題を解決するだけです。そうすれば、解決しようとしている問題の観点から、自分がやったことを話し合うことができます。彼らがそれを理解すると、プログラミングを介してそれを解決することへのジャンプはそれほど遠くなく、通常、技術者でないタイプによって行われます。


12

私は弟のロブにそれについて尋ねてもらいました。(彼は、子供向けの本、美術館のインテリア、そのようなもののような、アーティストでありイラストレーターです。)

彼にハリー・ポーターのリレー・コンピューターを見せて説明しようとしたのは、コンピューターとプログラミングの本質を直感的に捉えていると思うからです。

それは彼が望んでいたことではなく、私は一種の混乱に陥っていました。

後になって本当の問題が何であるかを理解しました。このオスカーワイルドの引用を思い出しました。

実際、文明には奴隷が必要です。ギリシャ人はそこにいた。slaveい、恐ろしい、面白くない仕事をする奴隷がいなければ、文化と熟考はほとんど不可能になります。人間の奴隷制度は間違っており、不安定で、士気を低下させます。機械的奴隷制、機械の奴隷制、世界の未来は依存しています。

エンジニアとして私を興奮させているのは、機械的な奴隷を作っているということです。子供の頃、私は小川にダムを置き、水車に電気を作らせたかったので、私が見ている間、それは私のために何かをすることができました。車のエンジンには、カムシャフトがあります。それは実際には原始的なプログラムです。必要なときにバルブを開閉するので、必要はありません。

アーティストの世界は完全に異なっています。目を閉じて、ベートーベンの第9交響曲の演奏を聴けば、あなたは運ばれます。あなたはそれに完全な注意を払わなければならず、それが終了したら、あなたはそれを切望します。フランク・ロイド・ライトの傑作家であるフォーリング・ウォーターを訪れると、あなたは輸送されます。正直なところ、誰がその中に住むことができるのかわかりません。どこで混乱させることができますか?それはあなたを完全に捕らえます。それは建築上の交響曲です。

アートはあなたのために何かするのではなくあなたに何かする。

私は自分がしていることにアートを見つけようとしました。見れば美しさがありますが、見なければなりません。それが私たちをつなぐものでした。


3
ハリー・ポッターのリレー・コンピューターとして最初に読んだのは、私たちが何をするのかを説明するために魔法がよく使われるということです;)
jk。

@jk:それだけで学生が彼のクラスに
参加できると思い

@jk。しばしば私は作品に黒魔術を見ます。
heishe

7

話をしてください。自分のやることに集中するのではなく、それを行うときの気持ち、情熱や退屈感、同僚との関係に集中してください。


1
同僚との関係に集中するために+1。誰もがそのようなものに関係することができます。「私は上司と一緒に昼食に行って、彼が言っていました...」は「私はレースの条件を取り除くために半日過ごしました」
アンディハント

3

この目的のための2つの重要な類似点は、レシピと大規模な官僚制度です。それがこのQAで私が説明したことです: 15分でプログラミングを説明する30分

レシピの類推を何度も使用して、プログラミングが、従うと具体的で予測可能な結果を​​持つ厳密な命令セットを記述することについて説明しています。

ほとんどの人はレシピの類推を超えて本当に理解する必要はないので、私は実際に数回だけ官僚の類推を使用しましたが、両方の時間はその人にとって非常に明るいものでした。プログラミングはコードのすべての行の完全なリコールを意味するように思われたようです(たとえば、「もしあなたがそのようなくだらないメモリを持っているなら、どうやってコンピュータをプログラムできますか?」)より大きな目標を達成するために。プログラムのモジュールは、大企業の部署のようなものです。自己完結型のユニットで、ほとんどが全体の一部を処理し、メモを介して他の部署と通信します。


誰かがメカニカルスレーブを構築していると言いましたが、さらに別の顧客の「問題」の後、私たちは奴隷であり、自分自身が生きるためのメカニカルディストピアを構築していると感じています。
gbjbaanb

2

コード自体ではなく、コードの背後にあるアイデアの観点から何かを説明すると、私は最も多くの応答を得ると思います。専門用語をすべて取り除き、プログラミング関連の用語に言及するのを避け、アイデアと実際に行われていることについて話すだけです。

たとえば、最近、スパムフィルターの仕組みを説明してみました。スパムで一般的に見られる単語とスパムで見られない単語の記録を保持すると言いました。レコードは、既知のスパムおよび非スパムメールを使用して構築されます。その後、新しい電子メールが到着するたびに、スパムのように見える単語の数(つまり、スパムの単語の記録で発生する)と非スパムのように見える単語の数を確認します。スパム語が多すぎる場合は、おそらくスパムであるため、スパムビンに送信されます。私が話していた非技術系の人々は、このアイデアを非常によくフォローしていました。


1

比phor

多くの場合、私はそれをプログラムとしてまったく説明せず、同様の相互関係を持つ完全に異なる概念としてそれを表現しようとします。

それはプログラムを視覚化することをより面白くし、時にはそれを新しい観点から見るのに役立ちます。

電流と電圧について話すことで、電気を使ったことがない人に電気について説明しませんか?さらに、いくつかの概念を、まるで魔法のように超意識的なコンピュータープロセスが実現させるかのように説明するのも楽しいです。ちょっとした想像力は、彼らが冷たくて合理的なコンピューターの現実の現実として彼らを傷つけません。



1

プログラミングしていない人の多くは、プログラマがバグを探して退屈に時間を費やし、誤ったコンマを数千行のコードで視覚的に検索すると信じているようです。ですから、私はまず、そうではないことを彼らに保証します。もしそうなら、私は完全に絶望的です。

私はよく、コンピュータープログラミングと料理の本を書くことを比較します。クックブックは人々への一連の指示であり、コンピュータープログラムはコンピューターへの一連の指示です。一部のプログラムはクックブックよりもはるかに複雑であり、プログラムはより頻繁に変更されますが、構造にはある程度の類似性があります。クックブックにソースの作成手順のコピーが7つ含まれており、レシピを変更する必要がある場合、誰かがそれらすべてのコピーを見つけてすべてを修正する必要があります。


それは、プログラミングを簡単にするためにコンピューターをプログラムできなかった痛ましい世界でしょう(「誤ったコンマを視覚的に検索する」)。
コンプマン

1

良い例えは、工場を建てることです。ほとんどの人は「How it's Made」のようなものを見てきました。そこではいくつかのアイテムが異なるコンベヤーベルトや機械を介してシャッフルされ、最終的に完成品が出ることを期待しています。私はそのようなものを構築することを人々に伝えますが、物理的なアイテムに取り組んでいる物理的な工場である代わりに、彼らは仮想であり、データに取り組んでいます。もちろん、これはあらゆる種類のプログラミングの良い例えではありませんが、複雑さの良いアイデアを与え、多くの種類のアプリケーションを並行して実行できると思います。


0

あなたはちょっとあなたのクラフトを本当に共有することはできません-あなたの仕事についての見出しだけを他の人と

ただし、あなたができることは、あなたのクラフトを共有する代わりに、あなたと同じクラフトにいる人々とあなたの人生を共有することです(:


0

私は通常、それがどのように行われたかについて話すのではなく、作品の特徴について話します。

私は通常、それは信じられないほど複雑で、非常に複雑であるため、一人の人が何が起こっているのかを完全に詳細に理解し始めることを望むことはできないと強調します。おそらく、さまざまな相互作用部分(フレームワークを介した電子機器)の研究に30年、さらにアクティブなコード行ごとに約1時間を必要とし、その時までにハードウェアが大きく変化しているため、研究に戻る必要がありますそれは、最新バージョンをさらに10年間熟考することです。

もう1つの重要な部分は、何千人、おそらく何百万人もの人々がそれを使って自分たちの生活を豊かにするほど柔軟なもの、ユニークなもの(少なくとも詳細に)、そしてあなたが多くから学んだものを作成することができることです。

この時点で誰も私の口に靴下を詰めていない場合、私は喜んでアプリケーションをデモンストレーションし、複雑さや柔軟性の可能性を少し示します。


0

シンフォニーや数学の論文や小説を書く以外では、プログラミングがこのレベルの複雑さと複雑さを伴うタスク/構造に従事する唯一のチャンスだと彼らに言います。もちろん、まともなWebアプリは歴史的な傑作であると言っているわけではありませんが、人々が毎日このようなレベルで自分の心を毎日使えるようになったら、それを「手に入れます」。多くの仕事は価値があり、高賃金ですが、何度も何度も繰り返されるかなり単純で手続き的な仕事に帰着します。

少なくとも、それは私がそれを見る方法です。私は間違っている可能性があります。


0

他の15の答えに対する別の見解として...

作業(プログラミング)の詳細を説明する代わりに、作業が解決するソリューション、つまり、私が構築したシステム/ソフトウェアがユーザーに対して実際に解決する問題に焦点を当てようとします。コンパイラや何かを書いている場合を除き、通常は非プログラミングドメインです。その場合、なぜそれが有用なのかを説明する必要があります。

そうすれば、複雑な性質であり、それが「現実の世界」とどのように関係しているのかを人々が理解しやすくなります。

類推として、中世の鍛冶屋として、私はおそらく(地元の居酒屋の女性に)剣を作り、敵をばらばらにハックすることを説明します。鋼鉄を特定の角度と力で鍛えてハンマーで打つ方法ではありません彼らが聞く)。うまくいけば、彼女は敵をばらばらにハックすることは有用であり(...)、やるのは難しいかもしれないことを理解していました(鋼鉄の不足、装甲した敵、煙の多い職場など)、したがって、あなたは複雑なタスクを実行するための感謝を得ることができます

(したがって、アンビルをキャストすることはコンパイラを作成することと同等であり、アンビルが何に使用されているかを説明する必要があります...)


0

エキゾチックな粒子と反時間を持つ奇妙な宇宙に住んでいた場合、私はそれを家を建てることと比較します:

あなたは本当にクールな家のアイデアを持っているので、あなたはそれがどのように見えるかの大まかなスケッチを構築し、どのように進むかの一般的な計画を持っています。あなたは金物屋に行って壁を作るために木材を買いますが、地面が平らでないために倒れ続けます。そのため、セメントを購入して基礎を固めますが、セメントは乾燥せず、その理由はわかりません。あなたは金物屋に戻って理由を尋ねますが、従業員は緊張状態になります。あなたが使用したセメントが1989年秋に開発されたと言われるまで8つの異なる金物店に行きますが、あなたは1989年の冬にあなたの財産を買ったので互換性がなく、彼はあなたに最新の2013.1.1セメントを販売します。あなたは戻って土台を築き、やがてセメントが消えます。今回は、すべての従業員が緊張になり、あなたの家をグーグルで検索すると、かつては核実験サイトだったことがわかります。次に、土壌に対する核実験の影響をグーグルで調べ、それがフリーラジカルを引き起こすことを発見します。あなたはそれをグーグルで調べ、電磁放射、フェルミオン、ボソン、ひも理論、そして猫に関する何かの研究を始めます。時間を浪費しているのでgiveめたくないので、ボトルを激しく叩きます。あなたは家に遅れて家に帰り、妻を怒らせて、妻が家を建てることができない理由だと主張します。そして猫についての何か。時間を浪費しているのでgiveめたくないので、ボトルを激しく叩きます。あなたは家に遅れて家に帰り、妻を怒らせて、妻が家を建てることができない理由だと主張します。そして猫についての何か。時間を浪費しているのでgiveめたくないので、ボトルを激しく叩きます。あなたは家に遅れて家に帰り、妻を怒らせて、妻が家を建てることができない理由だと主張します。そもそも家を建てたい理由がわからないまま、ほとんど家を完成させています。


-1

私は彼らに、彼らが彼らの仕事のために何をするかを見て、彼らの仕事をより簡単にするコンピューターソフトウェアを作成することを伝えるだけです。


または彼らの仕事を置き換える、ああnoes !!!
11

-2

あなたが言ったように、彼らにとって意味のある類推を使用してください。私のコードがグーグルのような何かをする場合、金銭的な利点を示す場合、または何らかの方法でこれがどのように人々を助けるか、私は常に何らかの形でGoogleを取り入れようとします...


-2

私は時々あきらめて、テキストファイルの編集に1日を費やしていると言います。全文ではない場合、これは通常真実です。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.