ある同僚は、プログラミングを粘土成形プロセスと比較しました。最初に塊の大まかな形状を定義し、次に、より小さな詳細を刻んでいきます。プログラミングに対するあなたの見解は? プログラマーの仕事を説明するためにどの比喩を使用しますか?
21 に答える
統合失調症。あなたは、頭の外には実際には存在しないものと話したり操作したりするのに膨大な時間を費やし、誰もあなたを信じません。
あるいは、ロボットでいっぱいの工場で作業しているようなもので、ロボットの1つが工場の床全体を停止して、このボルトが完全に間違った形状、サイズ、色であると伝えながら、親指をバラバラにします。
または、車のデカールを少し間違った場所に置くと、エンジンが脱落するようなものです。
または、強迫神経症の人のために夕食を作るようなものです。本当に強迫的です。のように、あなたはレシピに従わなかった。それは250グラムの小麦粉を要求しました、そしてあなたは明らかに251を入れました!
あるいは、絵を描くようなものかもしれません。つまり、目隠しをして絵を描いていて、編集段階の後、10分ごとに1回しか作業を許可されていなかった場合、それでもロックされる可能性があります。イーゼル、ペイントの漏れを追跡するように強制するので、...うーん...スクランブル動作を示しているコンポジションの部分を分離するまで、ペイントの半分を灰色のペイントで消し去りますか?と。.wait ...いいえ、これは良い例えです。戻って!私を信じてください!!!
「ガーデニング」 - コードベースはどんどん成長しますが、注意深い除草や手入れは必要ありません。それは手に負えない混乱になります。
「フランケンシュタイン博士」
私たちプログラマーは、実際には、これらの冷たい金属、シリコン、プラスチックの破片に命を吹き込むクレイジーな人々です。いくつかの形而上学的な作業を含むいくつかの実験を設定した後、これらの作品は人々と話し始め、ネットワークを介して通信し、目覚め、眠り、学び、忘れ、CD から出てきて死ぬ方法を学びます。
そして、彼らにそれをさせるのは私たちです。
"エンジニア"。
注文を受けて、何か新しいものを作り、それをテストしてから、顧客にリリースしてお金をもらいます。
家を建てるのと同じだと思います。必要なものの大まかなアイデアである計画を立てます。その後、時間の経過とともに、より洗練された計画を立てます。ゆっくりとすべてをつなぎ合わせて、家を建て始めます。途中で少し問題がありますが、通常は対処できます。あなたの努力の結果、ついにあなたは人々が住んで使うことができる家を手に入れました。
モンティ・パイソンとホーリー・グレイル
私がここに着いたとき、そこには沼しかありませんでした。他の王たちは、私が沼地に城を建てるなんて馬鹿げていると言いましたが、私は見せびらかすためだけに建てました。沼に沈んだ。ということで、2つ目を作りました。それは沼に沈んだ。ということで、3つ目を作りました。それは燃え尽きて倒れて沼に沈んだが、4体目は…起きていた!そして、それがあなたが手に入れるものです、若者:これらの島で最も強い城. --
建築。
私は自分自身を情報アーキテクトと呼んでおり、現在の環境 (私の場合は化学情報) を使用可能なものに形作ろうとしています。これには、設計、エンジニアリング、および人々との緊密な連携が含まれます。
結果は使用可能でなければならず、私の場合は再利用可能でなければなりません。その形状は、最初は明らかではありません。それはまた、作業中に世界がどのように発展するかにもよります。私の場合、それは決して完成していませんが、途中で(うまくいけば使用可能な)ものを構築します。
皿回し: どれも落とさずに一度にたくさんのことを動かそうとする....
ルールで空想。レゴ。
粘土成形は実際には非常に良い説明だと思いますが、私にとっては料理を使用します. レシピ(または漠然としたアイデア)から始めて、いくつかの材料を手に入れ、混ぜ合わせ、調理し、他のことをして、それが機能するかどうかを確認します. その後、同じ問題で別の実行に向けて微調整できるものがあるかどうかに応じて、またはおそらくいくつかの荒削りなエッジで完成したソリューションを作成できます。
プログラミングは、範囲が非常に限られている神のようなものです。
誰も知らないアーティストであること。あなたはがらくたや傑作を作成することができます, あなたが誰であるかは誰にもわかりません. 「パンツはいらないけど、パンツを履いて楽しむのが一番楽しい」という話も聞いたことがあります。
ソフトウェア開発はゴルフのようなものです。ゲームを開始するための非常に長いショットが、目標の近くに近づきます。次に、ボールをホールに入れるために多くのショートショットを作成し始める必要があります。これらのショートショットはすべて、最初のショットと同じくらいの時間がかかります...
私の答えは、個々のプログラミング活動よりも、ソフトウェア開発プロセス全体に関連しています。私はそれを知っていますが、それでもそれについて考えるのは良い例えだと思います。
コンセプトは、もはやオンラインではないこの古い投稿から来ています。購入はWebアーカイブによって保持されていました。それを見てください:http: //web.archive.org/web/20070629105558/http ://rc3.org/2007 / 04 / how_programming.php
私たちは後部座席に座っており、コンピューターはコントロールを持っている盲目のドライバーです。私たちの指示が正確でない場合、私たちはつぶす
つもりです:-)
車の運転
地点 A から始めて、方向 1 を取ることにしました。近づくほど、地点 B にたどり着かなければならない選択肢が少なくなります。ポイント B に到達する前に空を走る可能性があります。その場合、ポイント B に到達する途中にガソリンスタンドを建設するか、別のルートで新たに出発します。
私は通常、構造物/家/建物/都市などを構築することに例えます。
複雑さのレベルは、アナロジーにうまく対応しています。
「ジャングルの混乱」 - 1 本の小さな木をガーデニングし始め、十分な時間で水をやり、世話をします。ある時点で爆発的な成長があり、木はジャングルになり、木や植物の緑の塊に迷い込んでしまいます。あなたの動きが妨げられ、何が起こるかを制御できなくなります。最終的なアウトプットは、この制御されていないジャングルの混乱であり、維持するのに何百人もの人々がかかり、全員の時間とお金を浪費します. ある時点で照明が落ち、誰もが安堵したように、ジャングルは燃え尽きて地面に落ちます。残念なことに、最初からやり直したいと熱望している素朴な新しい庭師が常にいます。