ホームページ >バックエンド開発 >PHPチュートリアル >ベテランプログラマーの技術的理想
子供の頃、先生に「あなたの理想は何ですか?」と尋ねられました。私は何も考えずにPHPエンジニアだと言っていたので、大人になったらエンジニアになりました。
長年働いてきた後、エンジニアという言葉の意味について考えてきましたが、ある日突然、それが「テクノロジーを使って世界をより良くすること」であることに気づきました。
それでは、ソフトウェアの観点から、現在の世界で解決する必要がある問題は何でしょうか?考えるべき質問がいくつかあります:
世界全体の情報化のレベルは今高いのでしょうか、それとも低いのでしょうか?
プログラマーは十分ですか?
ソフトウェア業界の生産性は高すぎるのでしょうか、それとも低すぎるのでしょうか?
ほとんどのソフトウェア システムは信頼できますか?
これらの問題についての私の理解を共有したいと思います。
私たちの生活は10年前と比べて劇的に変化しましたが、たとえば、スマートハンドヘルドデバイスが非常に人気があり、ウェアラブルデバイスもブームになっています。 10 年前、私たちはテキスト メッセージや電子メールを送受信したり、非常にシンプルで昔ながらの WAP ページを閲覧したりするために携帯電話を使用していました。しかし今では、ほとんどの人の携帯電話がコンピュータに取って代わり、日常生活に欠かせないツールになりました。
私たちは携帯電話を使って通信したり、買い物をしたり、映画やテレビ番組を楽しんだり、本を読んだり、さまざまなゲームをしたりすることができ、特に急速に発展しているモバイルショッピングと決済システムにより、お気に入りの商品を購入したり、旅行サービスやホテルを注文したり、電話したりすることができます。あらゆる場面でのファーストフード、タクシーなど。 では、世界全体の情報化のレベルはどの程度なのでしょうか。
ちょうど小学校2年生相当で、世界全体の情報化レベルはまだまだ深刻に低いと感じます。今から数えると10年前、10年後、この20年間、個人情報サービスは皆様の生活に密接な関係があり、非常に注目される分野です。しかし、開発が非常に必要な分野は他にもあり、それは伝統産業の情報化です。
多くの伝統産業はこれまでにある程度の情報化を導入してきましたが、この情報化は自社の業務の基本的な要件を満たすことしかできず、社会全体の傾向と結びつくと、非常に遅れていて遅いように見えます。例えば、ネットショッピングという大きなシステムにおいて、一般ユーザーが目にするのは商品の表示や価格比較、注文のプロセスなどですが、その背後にある核となるのは流通・物流です。
私がまだ学生だった頃、ある先生がこう言いました。「コンピューター業界は今非常に盛り上がっているので、飽和しているかもしれません。この分野の仕事に携わる必要はありません。」今この言葉を読み返してみると、人は将来を見据えたビジョンを持つのが本当に難しいと思います。昨年、私が研修のために蘇寧に入社したとき、副社長の孫偉民氏は、その年の意思決定の間違いの一例を教えてくれました。 1990年代末の企業統計によると、エアコンの年間販売台数は全国で数百万台に達しており、業界は飽和状態に陥っているのではないかと考えられており、他の製品の事業を拡大する必要があると推測されています。しかし今、エアコンは全国で7億台、全く増設しなくても10年ごとに7,000万台売れるのに、なぜ当時は飽和状態だったのか。
それで、今のプログラマーの状況を見ると、特に需要の高いハイエンドプログラマーは依然として供給が不足しています。この問題の背景には、社会全体の情報化が加速しており、従来のプログラマーの数が需要に追いついていないことが挙げられます。
それでは、この問題をどうやって解決すればいいのでしょうか?一方で、より多くの新しい人材がこの業界に来て真剣に働き続けることを奨励するために、研修を継続する必要もあります。
質問したいのですが、世界にはビジネスを理解している人、またはテクノロジーを理解している人はどちらが多いのでしょうか?ビジネスとは何かを理解している人は明らかに増えています。実際、業界や人生経験ではそれが常識です。
たとえば、経験豊富な倉庫管理者は高度な教育を受けておらず、ソフトウェアの動作原理を理解できないかもしれませんが、さまざまな承認プロセスや異常事態を含む、製品の出荷と入荷のプロセスには精通している必要があります。しかし、プログラマーはこれらを理解していません。この分野で情報化を推進したい場合は、プログラマーがビジネスを学ぶことができるようにすることと、ビジネス担当者もソフトウェア開発プロセスに参加できるようにすることの両方のポイントを見つける必要があります。比較的若く、物事を早く学ぶことができます。しかし、全体的な社会的利益という観点から見ると、これは実際には好ましくありません。なぜなら、プログラマーは人材が不足しており、伝統的なビジネス人材がたくさんいるからです。
以前、ビジネス担当者がソフトウェア開発プロセスにもっとよく参加できるようにするにはどうすればよいかという質問を見たことがあります。この問題の根本的な解決策は DSL (Domain Specific Language) であり、その中核となる解決策は二次開発プラットフォームです。
DSL および二次開発プラットフォームとは何ですか? これら 2 つの言葉は非常に高級なもののように聞こえますが、実際には、さまざまな数式を提供する Excel や VBA など、非常に一般的に使用されているものがこのカテゴリに分類されます。これらを使用する人はソフトウェア業界にはいません。Excel は二次開発プラットフォームとして非常に成功しており、数式や VBA は DSL と見なすことができます。
これらは十分に直感的ではありませんが、多くの小学生が興味のあるクラスで学ぶ Scratch などのいくつかのグラフィカル プログラミング言語も、同様のことを行うことができます。抽象化により、ビジネス担当者はプロセス構成などのグラフィカルな方法に参加できるようになります。グラフィカルなものは、技術者以外の人が最もよく理解できます。
ですから、社会の情報化を推進するには、様々な業界のビジネス人材を集めて一緒に仕事をする方法を見つけるのが一番良いのです。具体的な分業は大まかに次のとおりです。技術担当者とビジネス担当者が一緒に DSL を定義し、技術担当者は DSL の基礎となるプラットフォームの実装を担当し、ビジネス担当者は DSL を使用してビジネス モデル、ビジネス プロセス、およびビジネス モデルを構築する責任を負います。ビジネスインターフェースさえも。
それでは、ソフトウェア業界の生産性は高すぎるのでしょうか、それとも低すぎるのでしょうか?かなり低いと思います。著しく低いとはどういう意味ですか?機械動力の変革と比較すると、ソフトウェア産業の現在の生産性レベルは蒸気機関の発明以前のものです。言い換えれば、生産性が解放されるにはほど遠いということです。私たちが行うことのほとんどは将来的には機械化され、そのような反復的な作業を行うために多くの人が必要ではなくなります。多くの人がこの段落に不満を抱いているかもしれません。なぜこの作業が繰り返されるのでしょうか? 機械に置き換えることができることを教えてください。
別の観点から見ると、ほとんどすべての素人がソフトウェアは高価だと考えるのはなぜでしょうか?人件費が高すぎるので、そんなにたくさんのものを作るのにそれほど時間はかからないと考えているようです。両者のコントラストがこれほど大きいのはなぜでしょうか?
重要な点は、ほとんどの作業の抽象化レベルが著しく不十分であるということです。さらに、効率低下の大部分は、Web フロントエンドなどのプログラミング プラットフォームまたはプログラミング言語の不完全性によるものだと思います。
プログラミング言語の第 1 世代から第 4 世代まで、世代ごとに操作効率はある程度低下しますが、記述効率は大幅に向上します。ハードウェア テクノロジの発展に伴い、ソフトウェア プログラミングは必然的にますます広範囲になります。一般的な傾向として、桁違いのパフォーマンスの低下がない限り、細部の効率には特別な注意を払う必要はありません。
そのため、単位時間あたりの生産性を向上させるためだけに、比較的非効率な言語やフレームワークを使用する人がますます増えることが予想されます。上司の観点から考えてみると、ランニングマシンのパフォーマンスを向上させる方が、プログラマーを何人か雇うよりもはるかにコストがかからないことも理解できるでしょう。したがって、全体の傾向から見ると、細部の性能を追求するプログラマーは、一部の特定の分野を除いて、理想から遠ざかっていく可能性があります。
では、ほとんどのソフトウェア システムは信頼できるのでしょうか?別の文に言い換えましょう。プログラマーの皆さん、もしあなたが住んでいる家の品質が、あなたが取り組んでいるソフトウェアの品質と同じであるとしたら、あなたはそこに住む勇気はありますか?みんなが笑っているような気がします。笑いが何を意味するのかを私たちは知っています。
では、なぜソフトウェアシステムの品質はなかなか高くならないのでしょうか?主な理由は、プロセスが完璧ではないことにあると思います。では、なぜ完璧ではないのでしょうか?ニーズは簡単に変化します。なぜ変わるのが簡単なのでしょうか?これは、プログラマー自身も需要側も、自分たちが作るものは変更コストが低いと無意識に信じているからです。
考えてみてください、なぜ誰も高い建物を建てず、需要を途中で変えないのでしょうか?なぜ誰もブリッジを構築して、必要な変更の半分を修正しないのでしょうか?服を作る途中や髪を切る途中で要件を変更しても無理があるとみなされる。しかし、ソフトウェアの分野では、これは一般的な現象になっているようです。
ソフトウェアシステム全体の実装は仮想的で、目に見えず、無形であり、マテリアルを消費しないため、この観点から見ると、もちろん変更は簡単です。ただし、実際には、ソフトウェア システムのアーキテクチャはエンティティのアーキテクチャと何ら変わりません。変更を加える際には、単に小さな領域を考慮するだけではなく、いくつかの関連要素も考慮する必要があります。全体的な状況に影響を与えない変更。たとえば、家を建て途中の場合は、窓の大きさよりも外壁の色を変更する方が簡単です。やりすぎた場合は、壊して最初からやり直す必要があるかもしれません。
テストを強化して品質を管理しようとしている企業を多く見てきましたが、個人的にはこの方法は費用対効果が低く、成果も高くないと感じています。要件の変化にうまく対応したい場合は、ソフトウェアが変わらないという考えを持たないことが非常に重要です。そして、アーキテクチャから分割、分離、コンポーネント化などを行い、必要に応じてそれを実現するように努めます。変更する場合、特定の領域の内部を変更するだけで、他の領域には影響しません。
多くのソフトウェア会社は、一方ではアーキテクチャの設計と宣伝に注意を払っておらず、そのためプログラマはアーキテクチャの意図をよく理解できず、他方で多くの問題を引き起こしています。アーキテクチャは最初の静止画にすぎないと考え、プロセス全体でアーキテクチャを制御します。
あらゆる種類のアーキテクチャ ソリューションには、優れた制御メカニズムが必要です。建物を建てる人は設計図だけを気にし、建設プロセスを管理しない人はいません。アーキテクチャは実際には構築プロセスに厳密に関係しています。アーキテクチャは平面的なものではなく、システム プロジェクト全体の骨格となる立体的なものです。開発中に骨格が徐々に確立され、肉付けされていくのがわかると、システム全体の成功をより深く理解できるようになります。これは、開発プロセス中の具体的な実装はさまざまなシナリオに依存します。 。
したがって、将来のソフトウェア開発ソリューションは間違いなくいくつかの方向に発展するでしょう:
高い生産性、単位時間当たりの生産効率が高く、一般の人も参加可能
高い制御性、生産プロセス全体がより完全で信頼性が高くなります
時々今の子供たちを見れば、彼らはとても幸せだと感じるでしょう。なぜなら、彼らの世代が大人になると、今のようにプログラムを書く必要がなくなるからです。その頃には、プログラミングは人々に慣れ親しんだ一般的なスキルになっています。現在人々が Office ソフトウェアを使用しているのと同じように、いわゆるプログラミングはおそらくコードを入力する必要はなくなり、グラフィカルで、いくつかのパラメーターを設定するだけで完了します。
LAMP BrothersオリジナルPHPチュートリアルCD/「Essential PHP in Detail」を無料でプレゼント 詳細は公式サイトカスタマーサービスまでお問い合わせください: http://www.lampbrother.net
|