検索
ホームページバックエンド開発PHPチュートリアル[転送] 上級プログラマーからの洞察 - プログラミングのベテランとマスターの間の誤解の解決策

[再投稿] 先輩プログラマーからの洞察 - プログラミングのベテランと達人の間の誤解
コンピューターの出現以来、プログラマーは簡単にうらやましい職業になりました
多くの欠点はあるものの、多くの場合、自分自身で成功できるグループに成長します。良いようです。
現在インターネット上に出回っている「本物の」プログラマーは次のようなものであると言われています:
(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 までご連絡ください。
PHPの抽象クラスまたはインターフェイスに対して、いつ特性を使用しますか?PHPの抽象クラスまたはインターフェイスに対して、いつ特性を使用しますか?Apr 10, 2025 am 09:39 AM

PHPでは、特性は方法が必要な状況に適していますが、継承には適していません。 1)特性により、クラスの多重化方法が複数の継承の複雑さを回避できます。 2)特性を使用する場合、メソッドの競合に注意を払う必要があります。メソッドの競合は、代替およびキーワードとして解決できます。 3)パフォーマンスを最適化し、コードメンテナビリティを改善するために、特性の過剰使用を避け、その単一の責任を維持する必要があります。

依存関係噴射コンテナ(DIC)とは何ですか?また、なぜPHPで使用するのですか?依存関係噴射コンテナ(DIC)とは何ですか?また、なぜPHPで使用するのですか?Apr 10, 2025 am 09:38 AM

依存関係噴射コンテナ(DIC)は、PHPプロジェクトで使用するオブジェクト依存関係を管理および提供するツールです。 DICの主な利点には、次のものが含まれます。1。デカップリング、コンポーネントの独立したもの、およびコードの保守とテストが簡単です。 2。柔軟性、依存関係を交換または変更しやすい。 3.テスト可能性、単体テストのために模擬オブジェクトを注入するのに便利です。

通常のPHPアレイと比較して、SPL SPLFIXEDARRAYとそのパフォーマンス特性を説明してください。通常のPHPアレイと比較して、SPL SPLFIXEDARRAYとそのパフォーマンス特性を説明してください。Apr 10, 2025 am 09:37 AM

SplfixedArrayは、PHPの固定サイズの配列であり、高性能と低いメモリの使用が必要なシナリオに適しています。 1)動的調整によって引き起こされるオーバーヘッドを回避するために、作成時にサイズを指定する必要があります。 2)C言語アレイに基づいて、メモリと高速アクセス速度を直接動作させます。 3)大規模なデータ処理とメモリに敏感な環境に適していますが、サイズが固定されているため、注意して使用する必要があります。

PHPは、ファイルを安全に処理する方法をどのように処理しますか?PHPは、ファイルを安全に処理する方法をどのように処理しますか?Apr 10, 2025 am 09:37 AM

PHPは、$ \ _ファイル変数を介してファイルのアップロードを処理します。セキュリティを確保するための方法には次のものが含まれます。1。アップロードエラー、2。ファイルの種類とサイズを確認する、3。ファイル上書きを防ぐ、4。ファイルを永続的なストレージの場所に移動します。

Null Coulescingオペレーター(??)およびNull Coulescing Assignment Operator(?? =)とは何ですか?Null Coulescingオペレーター(??)およびNull Coulescing Assignment Operator(?? =)とは何ですか?Apr 10, 2025 am 09:33 AM

JavaScriptでは、nullcoalescingoperator(??)およびnullcoalescingsignmentoperator(?? =)を使用できます。 1.??最初の非潜水金または非未定されたオペランドを返します。 2.??これらの演算子は、コードロジックを簡素化し、読みやすさとパフォーマンスを向上させます。

コンテンツセキュリティポリシー(CSP)ヘッダーとは何ですか?なぜ重要なのですか?コンテンツセキュリティポリシー(CSP)ヘッダーとは何ですか?なぜ重要なのですか?Apr 09, 2025 am 12:10 AM

XSS攻撃を防ぎ、リソースのロードを制限し、ウェブサイトのセキュリティを改善できるため、CSPは重要です。 1.CSPはHTTP応答ヘッダーの一部であり、厳格なポリシーを通じて悪意のある行動を制限します。 2。基本的な使用法は、同じ起源からのロードリソースのみを許可することです。 3.高度な使用法は、特定のドメイン名がスクリプトやスタイルをロードできるようにするなど、より微調整された戦略を設定できます。 4。CSPポリシーをデバッグおよび最適化するには、コンテンツセキュリティポリシーレポートのみのヘッダーを使用します。

HTTPリクエストメソッド(取得、投稿、配置、削除など)とは何ですか?それぞれを使用する必要がありますか?HTTPリクエストメソッド(取得、投稿、配置、削除など)とは何ですか?それぞれを使用する必要がありますか?Apr 09, 2025 am 12:09 AM

HTTPリクエストメソッドには、それぞれリソースを取得、送信、更新、削除するために使用されるGET、POST、PUT、および削除が含まれます。 1. GETメソッドは、リソースを取得するために使用され、読み取り操作に適しています。 2. POSTメソッドはデータの送信に使用され、新しいリソースを作成するためによく使用されます。 3. PUTメソッドは、リソースの更新に使用され、完全な更新に適しています。 4.削除メソッドは、リソースの削除に使用され、削除操作に適しています。

HTTPSとは何ですか、なぜWebアプリケーションにとって重要なのですか?HTTPSとは何ですか、なぜWebアプリケーションにとって重要なのですか?Apr 09, 2025 am 12:08 AM

HTTPSは、HTTPに基づいてセキュリティレイヤーを追加するプロトコルであり、主に暗号化されたデータを介してユーザーのプライバシーとデータセキュリティを保護します。その作業原則には、TLSの握手、証明書の確認、暗号化された通信が含まれます。 HTTPSを実装する場合、証明書管理、パフォーマンスへの影響、および混合コンテンツの問題に注意を払う必要があります。

See all articles

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

AIヘンタイを無料で生成します。

ホットツール

SecLists

SecLists

SecLists は、セキュリティ テスターの究極の相棒です。これは、セキュリティ評価中に頻繁に使用されるさまざまな種類のリストを 1 か所にまとめたものです。 SecLists は、セキュリティ テスターが必要とする可能性のあるすべてのリストを便利に提供することで、セキュリティ テストをより効率的かつ生産的にするのに役立ちます。リストの種類には、ユーザー名、パスワード、URL、ファジング ペイロード、機密データ パターン、Web シェルなどが含まれます。テスターはこのリポジトリを新しいテスト マシンにプルするだけで、必要なあらゆる種類のリストにアクセスできるようになります。

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

AtomエディタMac版ダウンロード

AtomエディタMac版ダウンロード

最も人気のあるオープンソースエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい