私は19歳の学生で、本当にプログラミングを楽しんでいます。ここでの長年の経験を参考にしたいと思っています。現在、私はPHPあらゆる機会を得て、3年ほど勉強していますが、正式なクラスを受講したことはありません。いつかプログラマーになりたいです。フルタイム、そしてそれの良いキャリアを作ります。
あなたへの私の質問はこれです:あなたはプロのプログラマーの特徴や特徴とは何だと思いますか?主にPHPの分野ですが、他のより一般的な資格も歓迎されます。私が思うにPHPは趣味の言語で、選択した言語ではないかもしれません。潜在的な雇用主です。私が間違っている場合は修正してください。何よりも、価値のないことに時間を費やしたくないのです。
私は現在、言語としてのPHP)の知識にかなり自信を持っています。必要なものをほぼすべて構築して「機能」させることができることはわかっていますが、デザインコンセプトとコード構造です。オブジェクト指向のコードを書くこともできますが、個人的には、適切に構成されていなければ、豆の山の価値はありません。このため、Matt Zandstraの著書「PHP Objects、パターン、そして練習」と毎日少しずつ読んでいます。
とにかく、私はここで少し脱線し始めているので、元の質問に戻ります。この分野に影響を与えたいと思う意欲的なプログラマーにどんなアドバイスをしますか?
また、余談ですが、私は私の友人とプロジェクトに取り組んでおり、コーディングの賢いところについてかなり良いアイデアを提供してくれます。リンクを貼るつもりです。ここで私がプッシュしたりスパムしたりしているように誰にも感じさせたくないので、望まない場合はクリックしないでください。ただし、そこにもフィードバックを提供することに興味がある場合は、githubでコードを確認できます。私はそこでザ・クローとして知られています。
1。高品質のコード
コードを書くのは簡単ですが、適切でクリーンなコードを書くのははるかに困難です。そして、いいことに、特定のスタイルに一致し、十分にコメントされているが、それほど多くはない、短いメソッド、変数の自己文書化名などを備えた、読み取り可能なコードを意味します。
2。幅広い知識
1つのプログラミング言語しか知らなければ、プロの開発者とは言えません。さまざまなパラダイム(オブジェクト指向、機能、反射など)を理解することも必須です。
また、Web開発者として、HTTP、JavaScript、SQL、REST、およびここにリストするには多すぎることを知っている必要があります。プロのWeb開発者は、平均規模のWebサイトだけで実行できるはずです。 、ビジュアルデザインとグラフィックスを除いて、高度に専門化されたチームによって作成されたWebサイトほど良くはありませんが、許容範囲内である必要があります。
ツールを知ることも必要条件です。バージョン管理やIDEなどに精通している必要があります。
。確かな経験
2年間の大学卒業後、専門家になることはありません。 10年のプロの経験を持つ人は、プロの開発者と呼ばれる可能性が高くなります。
もちろん、さまざまな種類の経験があります。誰も製品の品質を気にしない小さな会社で働くことはあまり価値がありません。
大規模プロジェクトでの経験もいいです。小さなWebサイトを構築するのは非常に簡単ですが、サーバーのアレイに展開する必要があるWebサイトになると、キャッシュに大きく依存するなど、Webサイトを正しく構築するのがはるかに難しくなります。
4。個人の動機
ソフトウェア開発に本当に動機付けられている人は、それを示すことができるはずです。プログラミングに情熱を持ち、ソフトウェア開発で15年の経験があるが、「プログラミングに関連する最後の個人プロジェクトについて話してください」という単純な質問に答えられない人にインタビューすると、何か問題があることがわかります。この候補者と。
ソースコードがダウンロード可能なオープンソースプロジェクトを用意してください。ブログを持っています。 Stack Exchangeに参加してください。これらすべては、自分をプロの開発者として提示するときに価値があります。
私はPHPで8年間開発を続けてきました-私は16歳のときからです。あらゆる年齢、形、サイズ、背景の人々に出会います。MainMaのほとんどの点に同意しますが、私のいくつかの強調といくつかのポイントを追加します。
情熱と動機
これは断然最も重要なことです。最高になるように努力してください(あなたは最高になることができます)。それはあなたの技術の問題解決と磨きに真の情熱を必要とします。誰かが情熱を持っているかどうかは5秒でわかります。あなたが彼らに質問をするとき、彼らは即座に関与しますか、それとも彼らは二語の返答をしますか?あなたが何かをお勧めした場合、彼らは戻ってきてそれについてあなたに話しますか?
献身
ソフトウェア開発は、習得するのに数十年かかる可能性のある技術です。何かを習得するには10,000時間かかると言われていますが、ソフトウェア開発のような動くターゲットで作業する場合、それははるかに多いと思います。フルタイムで仕事をしていると、数年ごとにその基準に達し、常に自分自身を再発明できるようになります。この長い間何かにこだわることができるためには、非常に多くの忍耐と情熱が必要です。信じられないほどの10/15年の経験を持つ人々に注意してください。彼らは献身的ではなく、おそらく10年前に情熱を失いました。 15年の経験は、1年の経験の15回と同じではありません。
知識への飢え
それは一定の学習と敗北が必要です。それは前年度のコードを見ると恥ずかしい/落ち込んでいるはずです。そうでなければ、十分な学習ができていません。トップにいる人を見つけ、彼らからあなたができるすべてを学びます。通常、これは主要なオープンソースコントリビューターです(PHPの場合:Symfony、Zend、PHPUnit/Behat/etc。開発者)。彼らは他の皆を訓練するものです。 XがYより優れていると誰かが言ったときは、自分で調査してください。彼らは通常、5年前にまだそれを説教していると言われた羊です。私は実際にこのサイトを素晴らしいリソースにしています。通常は同じ主要人物またはプリンシパル(Martin Fowler、Uncle Bobなど、DDDなど)につながる非常に幅広いコンテンツを見つけました。
PHPサックス
なんでも。人々があなたやPHPをぼろぼろにしたいのなら、あなたを落胆させないでください。重要な開発原則に従い、実際にソフトウェアを構築する場合は、続行してください。 PHPは長い道のりを歩んできて、それはかつての醜いアヒルの子ではありませんでした。他の言語から学び、時々他の人をいじってください。あなたはもっと好きかもしれませんし、どちらの方法でも、知識が広がり、PHPで一般的ではない、あるいは不可能である新しいパターンやプラクティスが紹介されます。
ネットワーク
あなた自身のためのブランドを構築し始めます。ブログ。ミートアップ/会議に参加します。 Twitterで他のユーザーに連絡します。関与するコミュニティ/ニッチを見つけます。オープンソースプロジェクトに貢献する。現在、プログラミングは非常に社会的な仕事です。自分を孤立させないで、あなたの仕事を知らせてください。これを行うのが早ければ早いほど、自分の主導権を握る優れた開発者との関係を築くのが早くなります。また、他の誰もが働いている下手なクライアント/雇用者ではなく、まともなクライアント/雇用者を見つけるのが早くなります。
Adrian Schneider と MainMa が書いた内容(どちらも良い)に加えて、言語に関係なく、プロのプログラマーの1つの特徴はコードの半減期が非常に長いという認識-私たちが通常認識するよりもはるかに長い、または問題に関してそれを書いているときに期待する。
はい、50年前のシステムがまだアクティブに使用されている極端なケースがあります(1960年代から1970年代にCOBOLで記述されたビジネスクリティカルなアプリケーションがまだ使用されています)が、それほど極端である必要はありません。もちろん、もう一方の極端な例は、一度だけ実行されるように作成されたアドホックコードです。私が取り組んでいるアプリケーションの1つは、基本的にはWebベースのCRUDアプリケーションです。たくさんのテーブルビュー、いくつかの専門的なビュー、いくつかのレポート、いくつかの周辺のオッズとエンド。本当に、物事の壮大な計画にはそれほど凝ったものはありません。 現在、10年以上前のコアクラスとデータベースコードがいくつかあるため、中央値にかなりうまく収まると思います。言語とフレームワーク(この特定のケースではC#.NET)はもちろんその間に進化しており、関係者はそれを使用する経験を積んでいますが、古いコードは機能し、十分に機能するため、適切な場所にあります。時々変化しますが、ほとんどの場合、システム全体が依存する基盤を提供します。それ以前の私の採用は、シングルユーザー向けに設計されたエージングシステムを15年以上前に書かれた部品で、もう少しモダンなものに置き換えることを中心としていました。言い換えましょう。 私がシステムの最も重要な部分のいくつかは、時代遅れのWindows 3.0の交換を任されていました。
プロのプログラマーは、明示的にではないコードを書くとき、使い捨てコードを非常に解決するように設計されています特定の1回限りの問題について、今日書いているコードが長年にわたって何らかの形で残る可能性が高いという事実を考慮してください。それがソフトウェアのコア部分である場合、それは製品の寿命のかなりの部分にわたって残る可能性が高いです。元の開発チームとは何の関係もないプログラマーによる将来のメンテナンスが必要になる可能性があります。一体、もともとそれを書いたプログラマによるメンテナンスさえ必要かもしれません! (それが得られない場合は、6か月前に作成したコードが他の誰かによって作成された可能性があるということを考慮してください-次に、6か月ではなく6年間試してください。)
これから、コードは読みやすく、理解しやすい必要があるという認識、変更が容易と拡張が簡単で、新しい用途に適合したり、変化する要件を満たすことができます。また、デバッグしやすいだけでなく、できればフォローしやすい -)なしインタラクティブなデバッガーで実行しません。