アルゴリズムは難しい、プログラミングは簡単ではない、プログラマーの苦労を誰が理解できるだろうか?

アルゴリズムは難しい、プログラミングは簡単ではない、プログラマーの苦労を誰が理解できるだろうか?

[[199239]]

今日は、プログラマーにとっての困難がどこにあるのかについて議論しましょう。アルゴリズムは難しく、プログラミングは簡単ではありませんが、プログラマーが苦しむ理由はそれだけではありません。

[[199240]]

プログラマーなら、次のようなジョークを聞いたことがあるはずです。

[[199241]]

ジョーク

プロダクトマネージャーには3つの奇妙なキャッチフレーズがある

この機能を追加する必要があります

その要件を削減することはできません。

明日オンライン

ボスには奇妙なキャッチフレーズが3つある

これは実はとても簡単です

細かいことは気にしない

しっかりつかまって

顧客には3つの奇妙なキャッチフレーズがある

これは欲しくない、あれが欲しい

あれは欲しくない、これが欲しい

私が望んでいるものではない

顧客は重要な瞬間まであなたを見ることができません

ボスは頭から尻尾までしか見えない神秘的なドラゴンのようなものです

プロダクトマネージャーは仕事を辞めるか、

あるいは、他の人が残業するのを眺める

残ったプログラマーのグループは昼夜を問わずコードを書き続けた

ダダダダダ…

[[199242]]

1. プログラマーとクライアント

顧客が「まずは開発して、それから私が要件を上げます」と言った場合

Pilot Fish (注: Pilot Fish はこの記事の主人公の名前です) は、ソフトウェア プロジェクトを受注しました。プロジェクトの要件は、サービス スケジュール、機器の追跡、エンジニアのサービス要求、およびいくつかの設計上の問題など、会社のカスタマー サービス センターが受信したさまざまなサービス要求を処理できるようにすることです。

「私はとても熱心に、ペンと紙を持って各部門の責任者と一人ずつ話し、彼らのニーズや意見を記録しようとしました」とシャオ・ユエさんは困惑しながら語った。 「彼らが私に返してくれた答えはいつも同じでした。『分かりません。試してみて、わかるでしょう。』」

Xiao Yuer は落胆せず、さまざまな部門の潜在的なユーザーを訪問して意見を求めました。しかし、この人たちは上司たちとまったく同じです。彼らはXiao Yuerにこう答えた。「大まかなアイデアを教えてください。それから私たちが提案します。」

Xiao Yuer さんは考えました。「特別な要件なしにプロジェクトを完了するにはどうすればいいでしょうか?」突然、彼の頭の中にアイデアがひらめきました。やがて、彼はすべての部門長を自分のプロジェクトのプレゼンテーションに招待し始めました。

彼は会社の社長まで招待し、社長が本当に会議室に現れたとき、シャオ・ユエは死ぬほど怖がりました。しかし、今は振り返るしかなかった。

会議室は人でいっぱいでした。Xiao Yuer はプロジェクターをオンにして、プロジェクトのデモンストレーションを始めました。プロジェクトのタイトルが大画面に表示されます。数秒後、コンピュータの CD-ROM が自動的に開き、数秒後に再び自動的に閉じました。

[[199243]]

デモは終了しました。

「機器に何か問題がありますか?」と部門長が尋ねた。

「問題ありません」とシャオ・ユエは言った。「もう一度見ますか?」彼はプロジェクトアイコンをダブルクリックし、プロジェクトのタイトルが再び大画面に表示されました。CD-ROMが自動的に開閉しました。

「しかし、その機能はCD-ROMを開くことだけです」と機械工学部門を担当する副社長は語った。

「そうだ、そして閉めろ」とリトルフィッシュは、怒った顔でいっぱいの部屋に向かって、精一杯の笑顔で言った。

「しかし、これは我々が望んでいることではない!」と電子部門の副社長は語り、他の部門の責任者も不満を表明した。

シャオ・ユエは大きな声で言った。「誰も私に何が欲しいか言わなかったから、私は自分の考えに従って作りました。もう一度見たいですか?」

会議室は静まり返り、怒りの雰囲気が漂った。会議室の後ろに座っていたCEOが椅子から落ちるまで、静寂は破られなかった。

「死ぬほど怖かったし、私のせいで彼が心臓発作を起こしたのかと思ったけど、彼が突然笑い出した」とシャオ・ユエさんは後に語った。

「その日の終わりまでに、さまざまな部署からプロジェクトの依頼を受けました。しかし、その後数か月間、彼らは私を無視しました。」

2. プログラマーとプロジェクト

​​

​​

​​

​​

​​

​​

​​

​​

​​

3. プログラマーとユーザー

私はかつて、プログラマーは普通の人ではなく、ある種の超能力を持った人だと言いました。しかし問題は、プログラマーが自分のこの特別な能力に気付いていないことが多いことです。次の文章を見てください。

1. 昔、ナンバープレートの末尾が 404 の車を購入したプログラマーがいましたが、後になってその車が見つからなくなりました。

[[199245]]

2. プログラマーにとって、この世で最も遠い距離は生と死の間ではなく、自らが作り出したバグが目の前にあり、どれだけ努力しても見つけることができないのです。 。 。

​​

3. プログラマーの間でよくあるジョーク: コメントを残さずにコードを提出すると、そのコードはコメントと同じ長さになる。

​​

4. あるプログラマーが肉屋で 1 キロの肉を購入しました。家に帰って重さを量った後、不満げに肉屋に走って戻り、店長に「24 グラム足りません...」と言いました。

[[199246]]

5. サーバーは、その機能に応じて、データベース サーバー、Web サーバー、キャッシュ サーバー、ダウンロード サーバーなどに分類できます。映画をダウンロードしてください...

[[199247]]

6. 10 行のコードに 9 つの警告と 8 つのエラーがありますが、プロジェクト マネージャーは 7 日間で習得でき、6 日間ですべてを学習できるとあえて言います。このような中途半端なプロジェクト マネージャーは本当に卑劣です。

​​

7. オンラインでチャットしているときに、相手が豚であることを伝えたい場合、ほとんどの人は「xxx you pig.」と入力しますが、プログラマーは xxx.isPig = TRUE と入力します。

​​

​​

8. この人はプログラマーに違いない。なぜなら、彼の推定能力が彼の身元を明らかにしているからだ。

[[199248]]

9. プログラマーはコードを書くのに疲れたとき、よくこのように自分を励まします。

​​

10. 女性プログラマーが良いニュースを発表する方法。

​​

しかし、彼らの目には、彼らは普通の人々と同じように普通の人であると考えられており、プログラマーができることは、顧客やソフトウェアユーザーなどの他の人にとっても簡単にできるはずだと考えています。

しかし、実際には、ほとんどの人、つまり大多数の人(ソフトウェア開発会社の顧客やソフトウェアを購入するユーザーを含む)は、コンピュータの初心者(コンピュータの知識/コンピュータの知識/ソフトウェアの知識についてほとんど知らない人)です。

プログラマーにとっては非常に明白なソフトウェア操作でも、ユーザーが実行するとさまざまな奇妙な現象が発生します。これはプログラマーにとって非常に苦痛です。

ある時、顧客から電話があり、自分のコンピューターのデスクトップで大きな e が見つからないと言われました。私は何を言っているのか分かりませんでした。どの大きな e が欠けているのでしょうか? 顧客は、英語の大きな文字 e のようなアイコンが見つからないと説明しました。私はします。結局、デスクトップ上の IE ブラウザのアイコンが消えたという意味だと分かりました。

また別の時、ある顧客がページに検索機能を追加するようリクエストしました。私は彼に、システムにはすでに検索機能があるのに、なぜここに新しい検索機能を追加するのかと尋ねました。彼は、その検索は必要なく、このページで特定のキーワードを検索したいのだと言いました。

さらにやり取りを重ねていくうちに、彼が求めていたのはブラウザの CTRL+F ショートカット キーの機能だということが分かりました。

このようなユーザーの特性により、プログラマーが最も優れていると考えるプログラムが、顧客の手に渡ると極めて使いにくいソフトウェアとなり、田舎のトガリネズミのように苦情の電話が鳴り続けるのです。

その後、根本的な原因は、プログラマーがユーザーのソフトウェア制御能力を過大評価し、自分自身のソフトウェア作成能力を過小評価していたことであることがわかりました。その結果、次の図に示すように、プログラマーは、開発したソフトウェアを使用する際に顧客がばかげた行動をとるのを目にしました。

[[199249]]

プログラマーの目から見ると、これはユーザーが開発したソフトウェアをどのように使用するかということである。

プログラマーが気性が荒い場合、このような状況に遭遇すると、必然的に顧客に苦情を言うことになります。また、プログラマーは一般的に気性が荒いです。したがって、プログラマーが顧客とコミュニケーションをとるときは、通常、プロジェクト マネージャーがそれに同行して、状況が悪化するのを防ぎます。

ユーザーはプログラマーに多くの問題をもたらしますが、実際にはプログラマーの栄光はすべて顧客から来ます。なぜなら、顧客が製品の使用に満足したときにのみ、プログラマーは達成感を得ることができるからです。たとえば、新しいソフトウェアを使用しているときの次の顧客の表情は、午後の北京の濃いスモッグの中でプログラマーを笑顔にするのに十分です。

[[199250]]

新しいソフトウェアを使用するときのユーザーの様子

プログラマーは気性が荒いですが、皆自分の仕事に熱心であり、個人的な恨みはありません。ソフトウェア開発において緊急のタスクがある場合、彼らは文句を言わず残業をいとわない。リリースされたソフトウェアに大きなバグが見つかった場合、彼らは深い罪悪感を覚え、一夜にして緊急のバグ修正を急いで行う。

ユーザーが時間内に満足できない場合、食欲がなくなり、食べたくなくなり、眠りたくなくなります。短期的には完全な解決策が本当にない場合でも、ユーザーが一時的に困難を克服できるように、いくつかの不正だが効果的な解決策を考え出します。たとえば、緊急修正は次のとおりです。

[[199251]]

ユーザーはプログラマーに配慮する必要があります。プログラマーの生活は実は非常に矛盾した状態にあります。プログラミングは、レンガを積むレンガ職人のような他の業界とは異なります。レンガを積むごとに、壁は高くなります。

しかし、プログラミングは違います。プログラマーが一日中汗をかきながらコードを書くこともありますが、開発の進捗が必ずしも改善されるわけではなく、時には後退することもあります。

ソフトウェア プログラミングは現実とフィクションが混在する世界です。コードがなぜ機能するのか理解できないこともありますが、次の図に示すように、そのようなコードで構成されたソフトウェアが実行できることに驚くこともあります。

​​

***、プログラマーと接する際に注意すべき点についてお話しします。プログラマーは一日中プログラミングロジックを扱っているため、原因と結果に対して特に敏感です。

あなたの言葉の因果関係が明確でなければ、相手は混乱してしまいます。あなたの言葉の因果関係が不完全であれば、相手は間違った行動を取ってしまいます。文中に「if」がある場合は、「then」を使用して文を終わらせるか、「else」を使用して選択肢を示し、主語を明確にする必要があります。明確でない場合は、次のような事故が発生します。

​​

あなたがプログラマーであれば、私の言っている意味が分かると思います。しかし、プログラマーの「苦しみ」はこれだけではありません。

[[199252]]

[[199253]]

[[199254]]

[[199255]]

​​

[[199256]]

[[199257]]

[[199258]]

[[199259]]

[[199260]]

プログラマーの仕事が大変すぎると感じて転職したい場合はどうすればいいでしょうか?

[[199261]]

​​

<<:  確率的隠れ層モデルに基づくショッピングペアリングプッシュ:アリババが新しいユーザー嗜好予測モデルを提案

>>:  AIがサイバーセキュリティにできること、できないこと

ブログ    
ブログ    

推薦する

2019年にRedditの機械学習セクションで人気のプロジェクト17選:最新のコードとリソースがすべて利用可能

この記事はAI新メディアQuantum Bit(公開アカウントID:QbitAI)より許可を得て転載...

機械学習モデルの再トレーニングの究極ガイド

機械学習モデルのトレーニングは通常、一連の入力機能と出力ターゲット間のマッピングを学習することによっ...

[ディープラーニングシリーズ] PaddlePaddleとTensorflowによる画像分類

先月は、ディープラーニングにおける「Hello World」であるMNIST画像認識を中心に、畳み込...

自動運転高速道路の技術仕様の導入によってメリットを享受できる分野はどこでしょうか?

自動運転車を大規模に公道に導入するには、車自体が技術基準を満たしていることを確認するだけでは十分では...

AIがセキュリティの自動化、分析、対応にどのように役立つか

人工知能 (AI) は、チャットボットから自動運転車まで、あらゆるものを説明するために使用できる幅広...

考えてみてください。連合学習は大規模な言語モデルをトレーニングできるのでしょうか?

1. 概要大規模言語モデル (LLM) の急速な発展に伴い、LLM が人工知能業界の発展に与える影...

インテリジェントなケアに加えて、感情的なニーズもあります。人工知能と高齢者ケアについてお話ししましょう。

2017年は「人工知能」が輝きました。ディープラーニング「AlphaGo」が柯潔に勝利し、無人運転...

テスラの自動運転タクシー参入は依然として困難

[[442909]] [51CTO.com クイック翻訳]テスラは2019年4月に「Autonomy...

...

中山大学、AIGCの大規模応用を促進するためにソース拡散モデル統合コードフレームワークを公開

近年、拡散モデルに基づく画像生成モデルが次々と登場し、驚くべき生成効果を示しています。しかし、関連す...

ロボットに25分で6つの動作を学習させるトレーニング、バークレーは効率的なロボット操作フレームワークを開発

この記事はAI新メディアQuantum Bit(公開アカウントID:QbitAI)より許可を得て転載...

音声認識技術はどのように発展したのでしょうか?

音声認識技術は 1950 年代に開発され始めました。それでは、このテクノロジーが長年にわたってどのよ...

BigDL-LLMを使用して、数百億のパラメータを持つLLM推論を即座に加速します。

私たちは、顧客サービス、仮想アシスタント、コンテンツ作成、プログラミング支援などのさまざまなアプリケ...

2020年世界人工知能会議が開催されます! AI が人間の言語の高度な能力をいかにして習得するかをご覧ください。

2020年7月9日、2020年世界人工知能大会(WAIC)クラウドサミットが正式に開幕しました。I...