ホームページ  >  記事  >  バックエンド開発  >  [転送] 上級プログラマーからの洞察 - プログラミングのベテランとマスターの間の誤解の解決策

[転送] 上級プログラマーからの洞察 - プログラミングのベテランとマスターの間の誤解の解決策

WBOY
WBOYオリジナル
2016-06-13 13:30:541029ブラウズ

[再投稿] 先輩プログラマーからの洞察 - プログラミングのベテランと達人の間の誤解
コンピューターの出現以来、プログラマーは簡単にうらやましい職業になりました
多くの欠点はあるものの、多くの場合、自分自身で成功できるグループに成長します。良いようです。
現在インターネット上に出回っている「本物の」プログラマーは次のようなものであると言われています:
(1) 本物のプログラマーはスケジュールを持ちません。 リーダーを喜ばせるお世辞を言う人だけがスケジュールを立てます。 >指導者たちは緊張している。
(2) 本物のプログラマーは取扱説明書を書きません。ユーザーはプログラムの機能を自分で推測する必要があります。
(3) 本物のプログラマーがコードにコメントを書くことはめったにありません。コメントが書きにくい場合は、確実に読みにくくなります。
(4) 本物のプログラマーはフローチャートを描きません。これを行うのは原始的な人々と文盲の人々だけです。
(5) 本物のプログラマーはリファレンスマニュアルを読まず、初心者と臆病者だけが読んでいます。
(6) 本物のプログラマーはドキュメントを書かず、ドキュメントを必要としません。プログラムを理解できないバカだけがドキュメントを使います。
(7) 本物のプログラマは、ユーザーが何を必要としているのかをユーザーよりもよく理解していると考えています。
(8) 本物のプログラマーは、リーダーでない限り、チーム開発の概念を受け入れません。
(9) 実際のプログラマーのプログラムは、最初は正しく実行されませんが、
30 時間のデバッグとエラー修正のために喜んでマシンを保護します。
(10) 本物のプログラマは、午前 9 時から午後 5 時まで仕事をしません。彼が午前 9 時に
で働いているのを見たら、それは彼が昨夜から今まで働いていることを意味します。

上記の特徴が多ければ多いほど、より有能で上級者が現れます。ですから、驚かないでください。プログラマーの欠点の多くは、長所として評価されることがあります。武侠小説のように、孤独で束縛がなく、ちょっと邪悪な達人が一番憧れます。私もかつてこれを信じて、そのような「本物の」プログラマーになりたいと願っていましたが、
良い結末は得られませんでした。

私は大学から博士課程の卒業までの 10 年間、勤勉に勉強して、何十万行もの C++/C コードを書きました。
これだけの激務と疲労を抱えているので、私はプログラミングのベテランと呼ばれるはずですよね?
私が開発するソフトウェアはすべて科学研究 (集積回路 CAD および 3D グラフィックスの分野) に関連しており、多くの場合、数万行のプログラムが含まれています。
テクノロジーは複雑で困難です。これらのソフトウェアは頻繁に賞を受賞しており、あるソフトウェアは第 1 回中国大学生コンピュータ競技会のソフトウェア展示で最優秀賞を受賞しました。 1995 年に開発されたグラフィック ソフトウェア ライブラリは、2000 年になっても購入されていました。こうした「実績」を列挙することで、私がプログラミングの専門家であることを証明できますよね。
残念ながら、この個人的な感情は真実ではありません。

博士課程の勉強中、私は 100,000 行近くの C++ コードを含む 3D グラフィックス ソフトウェア製品の開発に 1 年を費やしました。
とても誇りに思って、謙虚に本物のソフトウェアの専門家にアドバイスを求めました。彼は 3D グラフィックスの分野に足を踏み入れたことはありませんでしたが、
十分以内にソフトウェアの多くの重大な設計ミスを指摘しました。まるで紙でできたゴージャスなドレスのような感覚を感じさせます。 引っ張ると一部が落ちて
、突くと穴が開きます。私は、このソフトウェアには実用的な価値がなく、1 年間の労力
が無駄になり、自分のソフトウェア会社を潰してしまったことに気づき愕然としました。

人のひらめきは、通常、最も悲痛な瞬間に起こります。挫折して失恋した後、私はソフトウェア設計の基礎知識を復習するために、半年にわたって深く内省し、「壁と向き合いました」
。 「内面の力」を修復したら、また腰が硬くなったように感じました。 PhD
卒業の半年前、私は仕事を探すために Microsoft Research China に行き、Microsoft の上級ソフトウェア エンジニアとの面接に応じました。
彼は私に、関数 strcpy のコードを書くように頼んだ。

簡単すぎませんか?
違います!
このような小さな関数について、彼は次の 3 つの側面から検証しました:
(1) プログラミング スタイル、
(2) エラー処理、
(3) アルゴリズムの複雑さの分析 (パフォーマンスを向上させるために使用)。
大学で私のプログラムをこれほど厳密にテストした人は誰もいません。 30分かけて何度も修正しました
彼はまだ満足しておらず、家に帰って考えてほしいと言いました。元気いっぱい「診察室」に入り、汗だくになりながら「診察室」から出てきました。
この「マスター」は卑怯すぎる。もう一度よく観察してみました。

私は自分の反省についての記事を書き、オンラインに投稿しました。多くのソフトウェア開発者の共感を呼びました。
そのため、私はファーウェイ、上海ベル、ZTEなどの国内大手IT企業の同志と幅広い交流を持つことができて幸運です。
は誰もが、品質と生産性の向上がソフトウェア エンジニアリングで解決すべき中心的な課題であると信じています。高品質なプログラミングは非常に重要なリンクです
結局のところ、ソフトウェアはプログラミングを通じて実装されます。
私たちの頭の中にある退役軍人や専門家は、質の高いプログラムを書くことができるでしょうか?
必ずしもすべてではありません!

私の経験と経験から言えば、国内の大学におけるコンピュータ教育では、高品質なプログラミングという
の概念が全く浸透しておらず、教師や学生がソフトウェアの品質を意識的に気にすることはほとんどありません。勤勉で勤勉なプログラマーは、長期にわたって低品質に悩まされています
私は山積みのプログラムを乗り越えましたが、多くの苦しみを経てようやく経験と経験を積むことができました。私の進歩は非常に遅かったです。
現在、国内のIT企業には学士号、修士号、博士号を取得したソフトウェア開発者が溢れていますが、彼らは
大学教育を受けた時点で「本質的に欠陥があった」のに、どうして突然質的な飛躍を遂げることができるのでしょうか。会社に到着しましたか?正確性、堅牢性、信頼性、効率性、使いやすさ、可読性 (理解可能性)、スケーラビリティ、再利用性、互換性、ユーザビリティを気にするソフトウェア開発者
がどれだけいるか聞いてください。移植性などの品質特性は十分に理解されていますか?また、実際に自由に使用できるのでしょうか? 。 「高品質」
は丁寧に仕事をするだけでは実現できません!
私たちには疑う十分な理由があります:
(1) プログラミングのベテランは、長い間エラーを暗示するような方法でプログラムを行ってきた可能性があり (習慣が自然になってしまう)、欠点を発見した後でも信じようとしません
それは本当です!
(2) プログラマーは、特定の分野では非常に優れたコードを書くことができますが、ソフトウェアの品質のすべての側面を把握することはできない可能性があります


そうです。私が上海ベルで働き始めて以来、この 1 年間で、100 人近い「新旧」プログラマーのプログラミング スキルを連続して面接またはテストしてきましたが、品質の合格率は約 10% です。品質要件を完全に満たす if
ステートメントを作成できる人はほとんどいません。多くのプログラマはポインタとメモリ管理についてほとんど知りません。
指導者たちはこれが真実であるとは信じられません。私はフィールド実験を行ったことがあります。一度、14 名の修士課程の新入生がこの学科に入学し、歓迎会の前に「C++/C プログラミング スキル」のテストを受けました。聞きたいのですが、試験問題は難しいですか?
答えるのは難しくないと誰もが言いました。結果は誰も合格せず、半数が0点でした。競合会社の友人もそれを試みました
が、やはり惨めに失敗しました。

実際のところ、私が「残酷」だったり、要求が高すぎるというわけではなく、多くのソフトウェア開発者が自分自身に
高い要求を持っていないのです。
ファーウェイ、上海ベル、ZTEなどの企業の従業員の質は国内IT企業の中でも比較的高いことを知っておく必要があります。
彼らのプログラミングの質がこれほど低いのであれば、中小企業にどうして期待できるでしょうか。高品質を生み出すには ソフトウェアはどうですか?プログラム
さえコンパイルできないのであれば、国家ソフトウェア産業の活性化について語るのはナンセンスです。

私はプログラミングのベテランとプログラミングの達人を定義するつもりです。笑わないでください。
定義1: 長期間安定して高品質なプログラムを書けるプログラマーをプログラミングのベテランと呼びます。
定義2: 難しくて高品質なプログラムを長期間安定して書けるプログラマーをプログラミングマスターと呼びます。
上記の定義に基づいて、すぐに最初の推論が得られます。私はマスターでもベテランでもありません。

この本を書く前に、プログラミングに関する英語の本をたくさん読みましたが、読めば読むほど恥ずかしくなってきました。私は
プログラミングの基本的なスキルさえ完全にマスターしていないことがわかり、せいぜい二流レベルであり、ベテランやマスターについて話すのは勇気がありませんでした。
私と同じように中国で生まれ育ったプログラマーの友人が次のことを実行できることを願っています。
(1) 間違っているとわかっている場合は、間違いを修正します。
(2) 過去を頻繁に見直し、新しいことを学びます。
(3) 粘り強く勉強し、毎日進歩しましょう。


-----解決策--------------------------------

ある程度は理にかなっています 医師は知識のある人であるべきであり、鋭敏であることが彼の仕事であるべきではありません。
------解決策---------

結局のところ、一人の人間が書いたソフトウェアはそうではありませんチームワークの結晶として良い。 テクノロジーがどれほど優れていても、より良いアイデアで実装する必要があります。 私は自分の才能を恐れてはいませんが、長期的に進歩する精神を持っていないのではないかと心配しています。
「道は長い、長い、上も下も探してみる」

------解決策---------

それはソフトウェアです、ウェブ上では難しいはずですできるだけ完璧でなければ、自分が書いたものを読むたびに間違いがあるでしょう。しかし、ウェブでは、これらのジャンクコードは栄養価が最優先であると考えていませんか。 !書いて、アップロードして、修正するだけです。 ------解決策----------------------

プログラミングが一種の混乱になるとき どれだけの人が気にするでしょうかこれらのツールについて? ?

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。