ホームページ  >  記事  >  独学で優秀なフルスタックエンジニアになるには?

独学で優秀なフルスタックエンジニアになるには?

阿神
阿神オリジナル
2017-03-10 14:33:427818ブラウズ

独学で優秀なフルスタックエンジニアになるには?

IT業界のほとんどの卒業生と、社会に出たばかりの新参者が対象です。複雑な問題は、キャリアの方向性を選択する方法、優れたソフトウェア エンジニアになる方法、スキルを迅速に向上させる方法です。今日、私たちの php 中国語 Web サイトは、優秀な フルスタック エンジニア になる方法についてお話します。

フルスタックエンジニアとは

フルスタック エンジニアという用語が初めて登場したのは、Facebook エンジニア Calos Bueno による記事「フル スタック (ファイアウォールを回避する必要がある)」です。彼はフルスタック エンジニアを、パフォーマンスへの影響を深く理解している技術的なジェネラリストであると定義しています。それ以来、フルスタックという言葉がよく使われるようになり、フルスタックエンジニア、フルスタックデザイナー、フルスタック運用保守、フルスタックマーケターなどを見てきました。 「Lagou」や「100Offer」といったインターネット人材向けの求人サイトでは、フルスタックエンジニアが人気の採用職種となっており、給与水準も一般的な開発エンジニア職に比べて高くなっています。それでは、 フルスタックエンジニアとは何ですか?フルスタックエンジニアをどのように定義すればよいでしょうか?

百度百科ではフルスタックエンジニアを「さまざまなスキルを習得し、複数のスキルを駆使して独立して製品を完成させることができる人」と定義しています。この定義は十分に包括的ではないと思いますが、フルスタック エンジニアはアジャイル開発スキルを同時に備えた上級開発エンジニア、アーキテクト、プログラマーであるべきだと思います。フルスタック エンジニアのソフトウェア開発に対する理解は進化しており、特定のテクノロジを置き去りにしており、テクノロジの更新は常にコンピュータ理論よりも早いことを理解しているため、他のスキルに注意を払い、積極的に実践することに重点を置いています。テクノロジー。フルスタック エンジニアは、多くの場合、1 つの分野の専門家ですが、他の言語、ツール、テクノロジーを適切な状況で使用することにも熟達しており、上手に使用できます。

フルスタックエンジニアの価値

時間が経つにつれて、フルスタック エンジニアの役割と価値がますます多くの製品やプロジェクトで確認されるようになりました。では、個人や企業にとってフルスタックエンジニアが何を意味するのかを見てみましょう。

● 個人の価値と自由が大きく向上 - フルスタックエンジニアを紹介する記事をいくつか読みましたが、そのほとんどが会社やチームにとってのフルスタックエンジニアの価値を強調していました。何が言いたいかというと、優秀なフルスタックエンジニアは、会社に利益をもたらすからといって、さまざまな技術を一生懸命勉強する人はいないということです。私の知る人々は、創意工夫を持ち、常に高い技術を追求し、より良い製品を作ることに情熱を注ぐ人たちばかりです。そして、真のフルスタック エンジニアになれば、個人の価値と技術的な自由がかつてないほど高まっていることを感じるでしょう。良いアイデアが浮かんだときに、それを一人で実現したり、チームを率いて継続的に改善したりできることを想像してみてください。

● グローバルな思考と技術的先見性——さまざまな開発リンクと技術分野の知識があるため、フルスタックエンジニアはより優れた全体的な視野と技術的先見性を備えていることが多く、初期段階で適切なプロジェクトを選択することができますテクノロジーを活用し、プロジェクトの全体的な方向性を適切にコントロールします。現代のプロジェクトは非常に複雑であることが多く、フルスタック エンジニアは技術面および品質面での保証をもたらすことができるため、プロジェクトの成功において重要な役割を果たします。

● 通信コストの削減 - フロントエンド エンジニアがデザインを 100% 復元できないというデザイナーの不満や、バックエンド エンジニアがインターフェースから返したデータを直接使用できないフロントエンド エンジニアの不満をよく聞きます。 . バックエンドエンジニアも、プロダクトマネージャーが提起した要件をまったく満たせないと不満を抱いています。チームメンバーの数が増えると、スキルスタックの違いにより必然的にコミュニケーションコストが増加します。フルスタック エンジニアは、フロントエンドとバックエンドの開発 (さらには設計) を独立して完了できることに加えて、プロジェクトの初期段階に介入できれば、技術的リスクを効果的に回避し、不当な要求を排除することができ、その結果、さまざまな技術的な問題によるコミュニケーションが減少し、プロジェクトのリスクが大幅に軽減されます。

● スタートアップ企業 - 誰もが起業し、誰もがイノベーションを起こす時代が来ました。スタートアップ企業も雨後の筍のように湧き出ている。新興企業は良いアイデアを持っていることが多いですが、「プログラマーが足りない」という困惑に遭遇することがよくあります。私が言いたいのは、実際にはプログラマーが不足しているのではなく、フルスタックエンジニアが不足しているということです。スタートアップ企業は資金が限られていることが多く、優秀なフルスタック エンジニアはスタートアップ企業が最低コストかつ最短期間で製品を立ち上げるのを支援します。これは、スタートアップ企業が生き残り、より多くの投資を受け、さらには「ユニコーン」になるための最も重要なステップです。

フルスタックエンジニアのスキルツリー

これを見たとき、フルスタックエンジニアになるにはどのようなスキルが必要なのかを尋ねる必要があります。下の図は Medium から引用したものです。著者は、ソフトウェア開発に関わるすべての側面をレイヤーに分割し、各レイヤーに含まれる主要なテクノロジーをコンポーネントとして使用して、このフルスタック テクノロジー図を作成しました。

独学で優秀なフルスタックエンジニアになるには?

上の図から、現在のテクノロジー システムが毎年これらのレイヤーに追加され、既存のテクノロジーが常に更新されていることがわかります。したがって、すべてのテクノロジを習得することはまったく不可能であり、フルスタック エンジニアになるためにすべてのテクノロジを実際に習得する必要はありません。主要な開発スキルと、習得する必要があるいくつかの追加スキルにエネルギーを集中する必要があります。

主要な開発スキル (ハードスキル):

Git / GitHub - Git を使用してコードを管理および共有する方法をマスターする必要があります。 Git はコード管理ツールであるだけでなく、推奨される作業方法でもあるため、最初の重要なスキルとして挙げられています。 Git を使用すると、どこでも開発でき、あらゆる規模のプロジェクトを効率的に管理できるため、他のチーム メンバーと分散コラボレーションを行うこともでき、作業効率が大幅に向上します。 GitHub を通じて、世界中のすべての開発者とつながることもできます。

● 少なくとも 1 つのプログラミング言語—少なくとも 1 つのプログラミング言語、JAVAPHPC#PythonRubyPerl、に熟練している必要があります。コアとなるビジネス処理のほとんどはこの言語で記述する必要があるためです。この言語の構文をマスターする必要があり、また、この言語に基づいてプロジェクトを構築、設計、実装、テストする方法にも精通している必要があります。 JAVAを選択した場合、オブジェクト指向の設計・開発、デザインパターンの適用、J2EEをベースとした各種コンポーネントの開発などを習得する必要があります。

● 開発フレームワークとサードパーティのライブラリを使用します - 一般的な開発言語には、JAVA の Spring、MyBatis、Hibernate、Python の Django、PHP の thinkphp、yin、nodeJs Express などの優れた開発フレームワークが付属しています。の上。これらの開発フレームワークは、ソフトウェア開発のベスト プラクティスに従う傾向があり、非常に優れた開発者によって作成されています。これらの開発フレームワークまたはサードパーティ ライブラリを上手に使用すると、車輪の再発明を回避し、半分の労力で作業をより効果的にすることができます。さらに重要なことは、これらの優れたフレームワークやサードパーティ ライブラリが通常継続的に維持されることです。これが製品やプロジェクトの品質、安全性、利便性を最も効果的に保証します。

● フロントエンドテクノロジー - フロントエンドテクノロジーがキーテクノロジーとして分離されている理由は、今日のプロジェクトや製品の開発プロセスにおいてフロントエンドテクノロジーがますます重要になっているためです。製品に求められる機能を実現するだけでなく、使いやすさ(ユーザーエクスペリエンス)も製品の成功を判断する重要な基準となっています。そして、これはすべてフロントエンド技術の実装に依存します。HTML5CSS3JavaScriptなどの基本的なフロントエンド技術をマスターし、さらにJQuery、LESS、SASS、を学ぶ必要があります。 AngularJS または REACT およびその他のフロントエンド テクノロジまたはサードパーティ ライブラリ。

● データベースとキャッシュ - どの製品やプロジェクトでも、データを保存するためにデータベースが必要です。フルスタック エンジニアとして、少なくとも 1 つまたは 2 つのデータベースをマスターし、データベースと対話する方法を知っている必要もあります。現在人気のあるデータベースには、主に MySQLMongoDBRedis、Oracle、SQLServer などが含まれます。ドキュメント データベースとしての MongoDB は、インターネット製品でますます使用されています。大規模なプロジェクトの場合は、バックエンド データベースとして MySQL または商用 Oracle を使用することをお勧めします。 Redis などのインメモリ データベースをキャッシュに使用すると、システムのパフォーマンスが向上します。

● 基本的な設計能力 - フルスタックエンジニアに関するほとんどの記事や議論では、設計能力がフルスタックエンジニアの重要なスキルとして挙げられていませんが、私はこのスキルは非常に重要だと思います。私は、ソフトウェアエンジニア自身が開発したいくつかの製品を評価するよう依頼されたことがあります。これらの製品は、アイデアも機能も優れていますが、一見したところ、デザインがあまりにも悪いため、ユーザーはそれらを使用する意欲を持ちません。そして多くの場合、それらの開発者は、一貫性のない色、乱雑なレイアウト、不適切なアイコンなどの問題の存在にまったく気づいていません。私がお勧めする基本的なデザイン スキルでは、プロのデザイナーのように素晴らしい絵を描いたり、素晴らしい視覚効果を作成したりできる必要はありませんが、カラー マッチング、基本的なレイアウト、優れたデザインなど、最も基本的な UI デザインの原則をマスターする必要があります。美的能力と基本的な UI デザインスキルがあれば、あなたの作る製品がそれほど悪くないことになります。

これらのコアスキルを習得した後は、興味や開発の方向に基づいて他のテクノロジーを学ぶことができます。たとえば、データ処理に興味がある場合は、ビッグデータ技術を学ぶことができます。モバイル インターネットにもっと興味がある場合は、Swift を学び、iOS アプリケーションを開発できます。知識は常につながっており、十分な技術的基盤を確立した後は、他の知識を学ぶのが非常に簡単になります。

追加スキル (ソフトスキル):

● コミュニケーション - 個人的なプロジェクトに取り組んでいる場合を除き、大規模なプロジェクトの場合は、常に同僚、関係者、顧客とコミュニケーションをとる必要があります。多くの場合、コミュニケーションを成功させることが、効果的なニーズを獲得し、チームの信頼を築く第一歩となります。プロジェクト中は、効果的なコミュニケーションで計画を策定し、誤解を解消し、プロジェクトメンバーと協力して進めていく必要があります。優れたコミュニケーションスキルがあれば、チーム内でより影響力があり、より多くの尊敬と注目を集めることができます。

● 問題解決能力 - フルスタックエンジニアは、何よりもまず、遭遇するさまざまな問題を解決するためのエンジニアリング手法を習得する必要があります。私のキャリアのハイライトは、プロジェクト全体のアーキテクチャ ソリューションの提供から、生産上の問題をできるだけ早く解決することに至るまで、ほとんどすべて問題解決に関連しています。問題解決スキルを向上させる方法は実際にはたくさんありますが、どれも練習より効果的です。私がこれまで見てきた優秀なエンジニアは、直感に基づいて正しい解決策を最短時間で提供できることが多いですが、その裏には多くの実践によって蓄積された経験があることがわかりません。

● 時間管理 - フルスタック エンジニアとして、異なるプロジェクトで異なる役割を同時に担当することが割り当てられる場合があります。すべての作業が時間どおりに完了するように、時間を合理的に割り当てる必要があります。また、余暇には、読書や学習に時間を費やす必要があり、独自のサイド プロジェクトを持つこともできます。したがって、時間を合理的に割り当て、いくつかの重要なタスクを計画することが重要です。多少のプレッシャーを感じるかもしれませんが、それがあなたの創造性を刺激し、すべてがスムーズに進むようにします。

● 好奇心 - どんな仕事に対しても好奇心を持ち、学習と改善を続ける意欲があることは、優秀なエンジニアに共通する特徴です。ソフトウェア開発の分野には、世界中の最も賢い人々が集まり、さまざまな種類のテクノロジー、製品、フレームワークが日々変化し、際限なく出現しています。優秀なフルスタックエンジニアは、こうした変化を捉え、コンピュータ分野の発展についていくために継続的に学習する必要があります。コンピューター業界では常に新しいものが登場するので、学び続けるのは疲れるのではないか、とよく聞かれます。何が言いたいかというと、学び続けることが生活習慣になっている人にとって、新しいことを学ぶことは負担ではなく楽しみになるということです。

● リーダーシップ - 優秀なフルスタック エンジニアには、技術リーダーやプロジェクト マネージャーの役​​割が与えられることがよくあります。マネージャーになるということは、他人を支配したり、他人に何かをしてもらったりすることではありません。マネージャーはチームメンバーの長所と短所を理解し、奉仕の姿勢でチームの成果を最大化する方法を知る必要があります。非常に優れたエンジニアの中には、チームの管理を任されたときに反発し、単独で作業することを好む人もいます。しかし、私が言いたいのは、マネージャーになることであなたはより賢く、より信頼され、信頼されるようになり、将来のキャリアにも大きな利益をもたらすということです。したがって、チャンスが来たときは、それを挑戦として受け入れ、拒否しないでください。

経験豊富な技術リーダーは採用の際、候補者の技術的能力と上記の追加スキルを同時に検討し、若手プログラマーの採用においては、優れたテクノロジー企業によってそれらの追加スキルがより重視されることがよくあります。開発スキルはハードパワーであり、追加スキルはソフトパワーと言えます。両方のスキルを備えて初めて、優れたフルスタックエンジニアになれます。

優秀なフルスタックエンジニアは外に出る必要がある

優秀なフルスタック エンジニアは、自分の仕事に限定されるべきではなく、外に出てさまざまなテクノロジーに触れ、経験や洞察を共有し、より多くの友人を作る必要があります。ここでは私の実践例をいくつか紹介します。

● テクノロジー カンファレンスに参加する - InfoQ、CSDN、GITC、Youshe、TED およびその他の Web サイトでは、さまざまなテクノロジー カンファレンスが定期的に開催されます。これらのカンファレンスでは、技術専門家によるそれぞれの分野の最良の技術実践を聞くことができるだけでなく、業界の多くの友人に会うことができます。これは、アイデアを広げ、技術的な社会の輪を広げるのに非常に役立ちます。したがって、企業がこれらのテクノロジ カンファレンスへの参加を手配していない場合は、自分への投資として、自分でチケットを購入して出席してください。

● 人前で講演する - フルスタックエンジニアは人前で講演する必要はありませんが、チームの中心メンバーとして、チーム内の技術や経営などについて講演する必要があります。共有する意欲のある技術専門家であれば、個人コース (ビデオまたはオーディオ) を録画して、MOOC、NetEase Classroom、Youku、またはライチ、ヒマラヤなどのさまざまなメディアでスキルや知識を共有することもできます。専門家ではないから試してみようというわけではありません。丁寧に作成したコンテンツは誰もが認め、多くのファンを獲得します。

● 個人ブログ - 毎日少しずつ進歩すれば、1 年後には質的な飛躍が得られます。優秀なフルスタック エンジニアは知識を蓄積する方法を知っており、テクノロジー ブログは彼らの普段の実践や考えを記録し、将来のレビューを容易にするためにタグを追加する良い方法です。最も興味深いのは、ブログの記録と更新を続けると、世界中のプログラマーもあなたのブログを通じてあなたのことを知るようになるということです。

● オフラインアクティビティに参加する —— プログラマーが常に家にいた昔とは異なり、今日の若いプログラマーは共有したりコミュニケーションしたりすることに積極的です。多くの Web サイトでは、さまざまな技術的なトピックに関するオフライン アクティビティも企画されており、これらのアクティビティでは、技術専門家の意見を聞くことができ、あなたと同じようにテクノロジーに情熱を持っている多くの人々を見つけることもできます。私が現在取り組んでいるオープンソース プロジェクトのチーム メンバーの多くは、これらのオフライン活動を通じて知り合いました。

フルスタック エンジニアになるには、決して一朝一夕に達成できるものではありません。しっかりした技術基盤を築き、コア スキルを強化し、学習を続ける必要があります。いつかあなたも私と同じように、テクノロジーを自由に使って優れた製品を開発する喜びを感じる日が来ると信じています。

関連記事:

入門から上級までのphp独学ロードマップ

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