「開発とは、単にコードを書くだけではない」というのは、3EV の Dan Frost 氏の言葉です。彼は、開発プロセス中に注意すべき点について記事で説明しています。元の内容は次のとおりです。 開発者はデジタル世界を創造する主力です。開発者はプログラミングツールの役割を果たすだけでなく、開発作業に対してより高い要求を持つ必要があります。では、開発者はどのような面で開発能力を向上させることができるのでしょうか? 以下で私の考えをお話ししたいと思います。私の提案は包括的なものではないかもしれませんが、少しでもお役に立てれば幸いです。 1. コードだけに集中しないでください。今では誰でもコードを書くことができます。多くのアマチュアもウェブサイトを構築したり、アプリケーションを書いたりできます。プログラミングはもはや珍しいものではありません。 インターネットの普及により、独学でプログラミングを習得できる人が増えましたが、独学でプログラミングを学んだ開発者も専門的に訓練された開発者も、同じ問題を抱えています。私は高学歴の候補者を何人か面接しました。彼らのほとんどはコンピューターの学位を取得し、AI コースを受講し、さまざまなコンピューター レベルの認定資格を取得していますが、それでも非常に重要な理解が欠けています。 開発者はコードに集中するだけでなく、開発作業の水平と垂直の 2 つの側面にも注意を払う必要があります。たとえば、開発者はチーム内の他のメンバーと協力する方法を知っておく必要があり、開発プロジェクトにおけるシステム レベルの設計についても明確に理解しておく必要があります。 開発者と一緒に仕事をする人もこの記事を読むべきだと思います。開発についてより詳しく知れば知るほど、開発者と協力するときに要求できる内容も高くなります。たとえば、議論中の問題を要約したり、システムのコア機能を抽出したり、アプリケーションによって実装された機能を画像や例を使って説明したりするように依頼できます。 ![]() 3. インターネットの影響: 専門の Web サイトで開発技術を検索するだけで、多くの答えが得られます。フレームワークの知識、ブラウザ、CSS、JS など。検索エンジンは、従う必要があるフレームワーク、プラットフォーム、トレンドを見つけるのに役立ちます。 これらは単なるツールであり、プロジェクトの構造化に役立ちますが、プロジェクトの成功の鍵ではありません。開発者がシステムの細部まで理解し、すべての API 機能と新しい CSS テクニックを習得したとしても、意味のない製品を開発してしまう可能性があります。 開発者はツールの使い方を知っておく必要がありますが、ユーザー、チーム、他の開発者など、対象者についても理解する必要があります。ツールが環境(つまり、製品の環境)にどれだけ適合しているか、またツールがどれだけ有用であるかを理解する必要があります。 「幅広く深い」と表現されるタイプの開発者がいます。このタイプの開発者は、チームで作業する方法を知っていると同時に、開発のコアテクノロジーを習得しています。彼らがプロジェクトに参加すれば、プロジェクトの進捗は大幅に改善され、プロジェクトのペースも変わります。彼らがいなければ、非技術者は些細なことにこだわって停滞してしまいます。 4. 必要なもの 現在、Web サイトの構築とホストの管理に必要なものすべてをリストアップしています。これは、初心者が技術を学ぶための基本的なガイドとして役立ちます。私たちは、このリストが新規参入者にとって良いスタートとなることを願って、継続的な議論を通じてリストの内容を修正しています。 私たちが提供するリストには、学習と開発に必要な知識のほとんどが含まれています。古典的でよく使われるツールと、いくつかの新しいツールがあります。 開発の実践において、これらのツールはプロジェクトの進行を促進するのに非常に役立ちます。優秀な開発者のツールの蓄積は、プログラミング言語、CMS、フレームワークの知識よりも豊富なはずです。スケジュール、テスト、CI、強制的なバージョン管理(自分だけではなくチームワーク)が必要であり、いくつかのガイドラインを理解するだけでは不十分なので、プロジェクトの中核となる概念も理解する必要があります。 5. デブオプス これらの補助ツールとテクニックは、DevOps モデルに適用できます (DevOps は、開発、技術運用、品質保証部門間のコミュニケーション、コラボレーション、統合を促進するための一連のプロセス、方法、システムを表す一般的な用語です)。長い間、DevOps モデルにおける「運用」と「開発」の競合を区別することは困難でした。運用とは、主に物事を稼働させ続けることです。開発は、新しいものを作成するために使用されます (多くの場合、動作を停止するために使用されます)。この矛盾は両陣営間の果てしない論争を引き起こした。 開発者が製品を十分に理解していない場合、開発した機能が製品と一致しないことが多く、このようにして書かれたコードは製品に適さないものになります。製品の使用環境を考慮していなかったため、製品との連携を無視し、機能性の向上に重点を置いたコーディングとなっていました。 これらの詳細により、リモート サーバー管理によってさらに悪化するひどい遅延が発生する可能性があることに注意してください。 優れた開発者になりたいなら、開発プロセスで使用されるすべてのツールを深く学ぶ必要があります。開発者全員がこれらのツールの使い方を学べば、大きな進歩が期待できます。 継続的デプロイメントと DevOps の関連プラクティスは標準となり、これらの概念をまだ検討していない開発者や企業は遅れをとっています。開発のペースについていけないと、いつか誰かに追い抜かれてしまいます。 インターネット上には「DevOps」の概念を紹介する記事がたくさんあります。この概念は、PHP、MySQL、Rails とは異なります。これは、ソフトウェアとエンジニアリングのコラボレーションのリスクを軽減するための一連の方法です。 DevOps のコンセプトは、主にスケジュール設定、自動化、生産ラインの高速化と効率化に重点を置いています。 この開発モデルを使用すると、開発者は他の部門や他社との間で良好なチームワークを築くことができることがわかります。 API を介してサードパーティと連携する場合は、相手側でどのような問題が発生する可能性があるかを調査します。しかし、サーバー管理者と連携する場合、サーバー管理者が気にするのは、サーバーの構成方法とソフトウェアのインストール方法だけなので、多くの問題が残ります。 6. コードのデバッグ Onion の CTO である Michael Greer 氏は、Web 開発者が持つべきスキルについての質問に、素晴らしい答えをくれました。 「怠惰」: 同じことを二度やることを拒否し、それを実行するスクリプトまたはアルゴリズムを作成します。「臆病」: 頻繁にテストし、過負荷とコードの影響を心配します。「無謀」: 頻繁に新しいことに挑戦します。「臆病」は細部への注意の別の言い方です。ご存知のとおり、開発者の生活の 99% はデバッグとテストで構成されています。 開発者が理解する必要があるのは、アプリケーションを修正するには、エラー コードの選択方法を知るだけでなく、優れた問題解決スキルも必要であるということです。たとえば、ユーザーの請求書をダウンロードできない問題を解決するために、PDF ファイルを生成する機能の開発に 1 日を費やす必要はありません。ページを印刷可能に設定するだけで済みます。場合によっては、1 週間のプログラミングよりもリンクの方が問題を解決できることがあります。コードの書き方しか知らないプログラマーにとって、そのようなショートカットを考えるのは難しいでしょう。 多種多様なテストツールが利用可能であるにもかかわらず、テストは開発者にとって奇妙な盲点のままです。開発者は、ユニット テスト、Selenium、負荷テスト、Xhprof などのプロファイリング ツールの使用方法を学ぶ必要があります。また、アプリケーションのメモリ使用量を可能な限り抑えるのに役立つ、NewRelic などのパフォーマンス監視ツールの使用方法も学習する必要があります。 デバッグも開発の重要なステップです。したがって、開発者はデバッグ ツールの使い方を学ぶだけでなく、問題をデバッグする方法も知っておく必要があります。Michael Greer のリストにデバッグについて少し追加したいと思います。 「せっかち」: 重要でない問題を無視し、実際の問題の解決に時間を費やします。上記はいくつかの基本原則です。開発者は、主要なポイントを把握し、二次的なポイントを無視することを学ぶ必要があります。真のマスター開発者は、コードを見なくても問題を見つけることができます。残念なことに、多くの人は、取るに足らない問題について何十時間、あるいは何日も盲目的に考え、問題を解決するために同じ方法を何十回も使う傾向があります。 ![]() 開発者はビジネス、運用、ビジネス プロセスを理解する必要があり、これは開発作業に非常に役立ちます。これらを理解することによってのみ、開発者はユーザーの要件を満たす製品を開発することができます。一部の開発者は、コーディング能力が速く、スタックに関する知識が深いだけでなく、さらに重要なことに、ユーザーの真のニーズを理解しているため、並外れた生産性を発揮できます。 元の論点に戻ると、開発はより容易になり、開発者にとって市場はより競争的になっています。さらに優れた存在になりたいのであれば、ビジネスニーズを理解し、顧客を満足させる製品を開発しなければなりません。したがって、開発者は市場に注意を払う必要があります。 データが時間の経過とともにどのように変化するかを理解します。開発者の観点から見ると、これらのデータは現在普及している、または近々普及する技術に合わせて変化するはずです。クライアントが新しいアイデアを思いついたときは、ユーザーの実際のニーズを考慮して、事前に予算を立てておく必要があるようです。 (対照的に、最悪のシナリオは、開発者が新しいテクノロジーがすべての問題を解決できると主張する場合です。) 開発者は、ターミナル データベースのすべてのフィールドを理解するなど、多くの側面を習得する必要があります。データが変更された場合、クライアントはそれをどのように表示するのでしょうか。問題を解決するより良い方法はあるでしょうか。データベース管理者は、外部の世界がデータベースに応答するのが非常に悪いと考えることがよくありますが、実際には外部に非常に悪いデータベースを示しています。世界は混乱と予期せぬ状況に満ちており、データベース管理者はそれらに対処する方法を学ばなければなりません。 8. 描画と書き込み 描画は物事を説明する最も直接的な方法です。開発者は、ホワイトボードまたは紙に自分のアイデアを提示できる必要があります。 優れた開発者は、紙にプロトタイプを描くことで自分の意図を明確に表現できるはずです。開発者がうなずいたり、話したり、エディターを使ってデモンストレーションしたりするだけでは、信頼を得るのは困難です。 最高のコードは簡単なスケッチ プロトタイプから始まります。何度も失敗することで、より早く成功できるようになります。 9. 楽しむ 問題を解決するために何十時間も費やさなければならない場合、どのように対処しますか? たとえそれが単なる普通の仕事であっても、プロセスを楽しむことを学びましょう。開発者として最も悪い態度は、チームの仕事にまったく興味を持たないことです。残念ながら、これは非常によくある状況であり、開発者が自分自身をチームの一員と見なしていないためによく起こります。 (情熱的なプログラマーは「仕事をもっと楽しくする」ようにしています。あなたも試してみてください) Web およびアプリケーション開発はまだ発展途上の分野であり、コンピューター技術の発展にはより高度な開発者が必要です。開発者は現状に満足できず、開発作業の効率を向上させるために、できるだけ早く高度な開発に取り組む必要があります。 10. 鋭い感覚を保つ これが私が最後に言いたい重要なことです。 鋭い感覚を保ち、競争を求め、どのチームでも最もこだわりのある人になりましょう。 チーム内で最も批判的で迷惑な開発者は、最も優れた開発能力を持つ開発者であることが多く、他の開発者は現状に満足していることが多いです。チームにこれらの高い要件が欠けていると、進歩が遅くなり、競争力が低下しやすくなります。自分自身の要件を改善するのは良い習慣です。 開発者は、仕事以外のプロジェクトを通じてより多くの経験を積み、これらのプロジェクトから受け取ったフィードバックや批判を要約することを学ぶこともできます。今、より多くの批判を受ければ受けるほど、将来受ける批判は少なくなります。ある日、他の人の要求をより包括的に考慮し始めると、あなたは優秀なシニア開発者になるでしょう。 |
<<: Docker Compose のインストールと使用手順
>>: MySQL データベースでは、datetime、bigint、timestamp を使用して時間の選択を表します。時間を保存するのに最も効率的なのはどれですか?
グループを作成グループ化は、SELECT ステートメントの GROUP BY 句で設定されます。例:...
背景docker とアイデアを使用して、Java Web の開発、展開、運用までのプロセス全体を実現...
目次MySQL Load Dataの多様な用途1. LOAD の基本的な背景2. 基本パラメータをロ...
目次1. キューを理解する2. カプセル化キュー3. 太鼓をたたいて花を渡す場合1. キューを理解す...
MySQL はインストール時に自動的に mysql という名前のデータベースを作成します。mysql...
コードサンプルヘッドタグにコード行を追加します: XML/HTML コードコンテンツをクリップボード...
Nginx: PV、UV、独立IPウェブサイトを作成する人なら誰でも、ウェブサイトのPV、UV、その...
ユーザー名前空間は Linux 3.8 で追加された新しい名前空間で、ユーザー ID やグループ I...
NATこのようにして、仮想マシンのネットワーク カードはホストの VMnet8 に接続されます。この...
この記事では、弾幕効果を実現するためのjQueryの具体的なコードを参考までに共有します。具体的な内...
<p></p> の行間隔を設定するには、style="line-h...
この記事では、参考までにタイマーを実装するためのVueの具体的なコードを紹介します。具体的な内容は次...
1.MySQLレプリケーションの概念これは、プライマリ データベースの DDL および DML 操作...
1. フローティングレイアウト1. 最初に固定幅の div をフロートさせます。ドキュメントフローか...
目次1. 古いMySQL5.7データをバックアップする2. MySQL8.0.13のイメージをプルし...