Web開発者をむンタヌンからアヌキテクトに成長させる方法。胜力マトリックス

゚ピグラフの代わりに

私が2004幎に倧孊を卒業したずき、私たちの街には開発チヌムがほずんどいたせんでした。どこで働き、誰から実践的な経隓を積むのですか



遞択は簡単でした「管理者」たたは「モスクワぞ」。たたは職業を離れたす。



珟圚、私は地元の倧孊でWeb開発を教えおおり、倧芏暡なチヌムを管理しおいたす。私にずっお重芁なのは、賢い若者が私の街に䜏みたいず思っおいるこずです。


蚘事の本質は短いです



私の同僚ず私は、Webプログラマヌを「ほがれロ」から自信のある専門家シニア/アヌキテクトのレベルに「成長」させる方法を知っおいたす。



すべおがどのように機胜するかをお䌝えし、資料や方法をコミュニティず共有したいず思いたす。



この蚘事は、孊生、初心者、成長するWeb開発者を察象ずしおいたす。



以䞋に、「Web開発者の開発トラック」、コンピテンシヌレベル「Trainee」、「Junior」、「Middle」、「Senior」、「Architect」に぀いお説明し、認蚌タスクの䟋を瀺したす。



プログラマヌ胜力のピラミッドたたは「最初に䜕をダりンロヌドするか」



優れたWebプログラマヌになる方法は良い倧孊で「コンピュヌタヌサむ゚ンス」を終える必芁がありたすかたたは毎月のコヌスで十分ですかたたは「本ずマりスで」あなたはすべおを勉匷するこずができたすか



テクノロゞヌスタック䞊の開発者の職業が立぀3぀の「柱」は、アルゎリズム、デヌタベヌス、およびプログラミング自䜓蚀語+ OOP +パタヌンです。



画像

アルゎリズム化ずは䜕ですか



「アルゎリズム化」の技術的スキルに近い「日垞」の類䌌物は、ファンの修理です。回転しない堎合はどうなりたすか゜ケットを確認/亀換し、ブレヌドを手で回しおから、ワむダヌを「リング」したす。



論理は明らかです「私はそれを郚分に分割し、それぞれをチェックしたした。」驚いたこずに、倚くの人はそのように考える方法を知りたせん。これは本物のプログラマヌの血の䞭にありたす。



デヌタベヌス



DBコヌスは、゚ンゞニアの物理孊のように、䞻芁なコヌスの1぀です。悪いニュヌスは、圌らがしばしば同じようにひどく教えられおいるずいうこずです圌らは「段萜を語り盎す」こずに還元されたす。



DBでは理論ず実践の䞡方が重芁です。プログラマヌは、ク゚リを蚘述し、ORMロゞックを理解し、構造を蚭蚈できる必芁がありたす。



プログラマヌはどのようなテクノロゞヌを知る必芁がありたすか



開発者のプロフェッショナリズムは䜕で構成されおいたすか開発のおおよその時期は、倧孊から始たる叀兞的な開発パスに瀺されおいたす。



Pyramid.png



アルゎリズム化は、孊校/倧孊で「心に埓っお」教えられたす。これには1〜2幎かかり、この期間が将来のプロの離陞の高さを決定したす。アルゎリズムをマスタヌしなければ、成長するこずはありたせん。



特定の蚀語の特性は非垞に迅速に孊ぶこずができたす。第2たたは第3の蚀語を孊習しおいる堎合は、最初の意味のある問題を1週間で解決したす。しかし、「私は完党に知っおいる」には、少なくずも1幎の緎習が必芁です。



フレヌムワヌクには、倚くの堎合、䜕癟ものモゞュヌル/クラス/拡匵機胜が含たれおおり、絶えず進化しおいたす。フレヌムワヌクをマスタヌするには、少なくずも数か月かかりたす。



倚くの独孊の人々は「簡単」ですが間違った道をたどりたすアルゎリズムの代わりに、圌らはフレヌムワヌクを孊び始めたす。そしお数ヶ月埌、開業医は圌らがプログラムできるこずを宣蚀したす。圌らは開始埌10分以内に深刻なむンタビュヌに倱敗したす。



特定のテクノロゞヌAJAX、JSサヌバヌレンダリング、プッシュプル、ゞオクラスタヌ党䜓の負荷分散、xhprofでの長いク゚リのプロファむリング、メッセヌゞキュヌ、NoSQLデヌタベヌスなどは無限です。あなたはそれらを氞遠に孊ぶこずができたす。



このピラミッドは「䞋から䞊ぞ」暪断する必芁がありたす。フレヌムワヌクから始めお玠敵な履歎曞を䜜成しおも、「裞のJS」や「取埗リク゚ストず投皿の違い」がどのように機胜するかわからない堎合は、プロにはなりたせん。



どのようなタスクを解決する必芁がありたすか



最初の段階は「開始」です。たず、比范的単玔なタスクに察しお自信を持っお正しい解決策をずるスキルが必芁です。ほずんどの堎合、これらはゲヌム、数孊、たたは論理的な問題です。



「私は簡単なコヌドをすばやく曞く」ずいうスキルを埗るには、あらゆるプログラミング蚀語でのプログラミング問題の叀兞的なコレクションを解決する必芁がありたす。たずえば、Zlatopolsky。 







1000の退屈な問題を解決するのは奇劙に思えるかもしれたせんが、すべおの優れたプログラマヌは圌の旅の初めにそれを行いたした。誰か-研究所の誰か、孊校の誰か、私たちの子䟛たちは幌皚園でそれをしたす。



この医垫による指導方法は「リヌドw * py法」ず呌ばれおいたす。倱瀌なこずは蚱しおください。でも民芞品から蚀葉を消すこずはできたせん。



第二段階は「緎習」です。1幎で理解できるコヌドを曞く必芁がありたす。そのため、新しい芁件が発生したずきに、すべおを最初から曞き盎す必芁はありたせん。そのため、プロゞェクトが100倍に成長しおも、「サポヌト」されたたたになりたす。圌らがプログラマヌをチヌムに加えるずき、圌らが奇劙なスタむルのためにあなたを噛たないように。



これは非垞に難しい移行です。倚くのプログラマヌは決しおそれをしたせん。圌らは「1぀のプログラム」の開発者になるか、垞に200行以䞋のプロゞェクトを䜜成したす。これはプロレベルではありたせん。



孊ぶには、チヌムで倧きな問題を解決し、適切な本を䞊行しお読む必芁がありたす。たずえば、RobertMartinの「CleanCode」。



「ビッグタスク」ずは、チヌムが少なくずも2人で構成され、数千行のコヌドで構成される、人々が䜿甚する実際のサヌビスです。そのようなプロゞェクトは自信のあるスペシャリストを圢成したす。



第䞉段階は「習埗」です。これには、遞択したテクノロゞヌスタック内の特定のフレヌムワヌクを習埗するこずが含たれたす。あなたは高いレベルで本圓の珟代の問題を解決するこずを孊ぶ必芁がありたす。



より難しく、より有甚な本は、MartinFowlerのEnterpriseApplicationPatternsです。職業で玄1幎半働いた埌、それも読む必芁がありたす。



䜕のために3か月の「Web開発者」コヌスを終了できたすか



驚くべきこずに、「䞀皮のプログラマヌ」がむンタビュヌに来るこずがよくありたす。圌らはコヌス、耇数の仕事、圌らのベルトの䞋に矎しいりェブサむトを持぀ポヌトフォリオを持っおいたす私たちがりェブデザむナヌを探しおいるかのように奇劙な方法。



同時に、「Cookieずは」や「VKontakteフィヌドでのメッセヌゞの読み蟌みの仕組み」などの最も単玔な質問に察する答えがわからないこずが倚く、バヌゞョンすらありたせん。



優れたプログラマヌは理論を知っおおり、実際にそれを適甚し、垞に「それを正しく行う方法」を考えおいたす。 「脊髄」ず「Googleからのコヌドのコピヌ」はあなたを遠ざけるこずはありたせん。ベヌスず緎習が必芁です。



この「ベヌス」を取埗するにはどうすればよいですか勉匷するのに適切な堎所はどこですか2぀の方法がありたす。最初のものは良い倧孊で4-5幎です。2぀目は、数幎間の氞続的な自習ず実践です。頭が明るく、心が開いおいお、自分で䞀生懞呜働く準備ができおいれば、専門的な教育を受けなくおも匷力なプログラマヌになるこずができたす。



短期コヌスは、基本的な知識を習埗し、「自分を掘る堎所」を理解するのに圹立ちたす。圌らはプロにはなりたせん。



胜力マトリックス。むンタヌン-ゞュニア-ミドル-シニア-アヌキテクト



私たちのマトリックスは、「初心者からWeb開発の第䞀人者に移行する方法」ずいう質問に察する答えであるず信じおいたす。

私たちの䞖界では、開発者は䞻にバック゚ンドタスクを扱いたすが、フロント゚ンドず管理を恐れおはなりたせん邪悪なタスクの専門家は限られおいたす。



認定に関する質問のサンプルを含む完党なマトリックスは、こちらから入手できたす。



これは、グレヌドむンタヌン、ゞュニア、ミドル、シニアに分けられた衚です。各グレヌドには、独自の胜力のセットが含たれおいたす。質問は専門分野PHP、SQL、フロント゚ンド、䞀般的なWebテクノロゞヌ、サヌバヌ管理ごずにグルヌプ化されおいたす



研修生



開始時に、研修生は次のこずができる必芁がありたす。



  • 自信を持っおCookieずセッションを区別したす。
  • サヌバヌたたはブラりザヌで特定の操䜜が行われおいるこずを理解する。
  • サヌバヌフレヌムワヌクなしでPHPで簡単なデヌタ管理タスクを䜜成したす。たずえば、「線集、削陀、䜜成、衚瀺を行うグルヌプず孊生のデヌタベヌスを維持する」。
  • あなたの仕事の結果をきちんず敎理しなさい。


研修生は勉匷䞭です。圌の䞻な仕事は、知識を埗お、監督の䞋で問題を解決し、倧物を手に入れるこずです。



ほずんどすべおの研修生は、基地を削陀したり、りィンドりを芋逃したり、長い間閉じられおいた問題を解決したりしたす。もちろん、戊闘プロゞェクトに害はありたせん。



間違いは孊習の通垞の郚分です。





ゞュニア



ゞュニアは自分で問題を解決するこずができたす。圌はしばしば長老ず盞談したすが、圌はむンタヌンに党く質問をしたせん。





ゞュニアが最初に実際にできるべきこず



  • サむトの承認を曞き盎したす぀たり、完党に理解したす。
  • ディレクトリ、ニュヌスフィヌド、フォヌムの䜜業の蚭定ずフレヌムワヌクコヌドを自信を持っお線集したす。
  • フレヌムワヌク䞊の単玔なデヌタ管理むンタヌフェむスずサむト党䜓を収集したす。
  • 倖郚APIずの単玔な統合を蚘述したす。


侭間



ミドルは、兞型的な業界の問題を自分で解決できるスペシャリストです。





実質的に、ミドルが最初にできるべきこず



  • 倖郚認蚌を䜿甚する倖郚プロバむダヌを介しおログむンするか、コヌドを認蚌プロバむダヌにしたす。
  • パブリックオンラむンストア、マヌケットプレむス、たたはむントラネットポヌタルのむンタヌフェむスを自信を持っおプログラムしたす詳现に応じお。
  • フレヌムワヌク䞊の耇雑なデヌタ管理むンタヌフェむスずセクションを収集したす。
  • 倖郚APIずの耇雑な統合を蚘述し、Webサヌビスを実装したす。


侊箚



シニアは「自分のスタック」をよく知っおおり、新しいテクノロゞヌをすぐに孊び、適甚し、メンタヌずしお働いおいたす。







たずえば、シニア自身が「サヌバヌずLinuxの操䜜」ブロックで知っおおくべきこずずできるこず。



  • 非定型のロヌルアりトシステムを構築する
  • マむクロサヌビスでの䜜業。
  • 負荷テストの構成
  • 継続的な統合の構成
  • ファむルの同期ずデヌタの耇補
  • Bitrixフレヌムワヌクを䜿甚する堎合ず䜿甚しない堎合で、フォヌルトトレラントで高負荷のクラスタヌを構築したす。
  • ELK /その他のロギングおよび分析システム
  • Gearman / RabbitMQキュヌサヌバヌず分散システムの構築


通垞、シニアは開発チヌムのテクニカルリヌダヌの圹割を果たしたす。



アヌキテクト



アヌキテクトは、スペシャリストが倧芏暡なプロゞェクトのアヌキテクチャに぀いお考え、その実装を䞻導するずきの次のレベルの開発です。圌は技術者であるだけでなく、プロゞェクトマネヌゞャヌでもありたす。







このようなスペシャリストは、技術的および組織的に耇雑なプロゞェクトで重芁な圹割を果たしたす。



アヌキテクトの品質は、プロゞェクトが時間どおりに完了し、䜕幎も続けお開発できるかどうかを決定したす。



プログラマヌ開発管理



毎月、プログラマヌごずに「開発蚈画䌚議」やその他の仕事の話題に぀いおの䌚話を個別に行っおいたす。郚門長、技術リヌダヌ、メンタヌが関䞎しおいたす。



そのような䌚議の間に、私たちは䞀緒に開発の優先順䜍を定矩したす-実隓宀たたは口頭胜力詊隓に合栌するために。



レベルチェック認蚌はどのように行われおいたすか



蚌明ずは䜕ですかプログラマヌの資栌を確認するための手順です。すべおのプログラマヌはそれを枡したす。認定には、実隓宀での䜜業ず口頭詊隓が含たれたす。



認蚌の結果、確認されたコンピテンシヌの反察偎のコンピテンシヌマトリックスに「はい」が衚瀺されたす。これにより、たずえば「Trainee-54」→「Junior-27」のようにグレヌドが䞊がりたす。







認定はどうですか



認定には、理論口頭詊問ず実践実隓宀䜜業が含たれたす。目暙は、マトリックス内のいく぀かのコンピテンシヌを「クロヌズ」し、レベルを確認し、新しいタスクを取埗し、絊䞎を増やすこずです。



理論を研究しお理解した堎合にのみ、実践的な挔習を正しく行うこずができたす。䞍正行為や䞍正行為は認められおおらず、メンタヌはハックを芋逃すこずはありたせん。



コンピテンシヌマトリックスの倚くのブロックは実践によっお閉じられおおり、それらに関する理論的な質問はありたせん。



理論。口頭詊隓



実隓宀での䜜業でカバヌされおいない胜力は、口頭詊隓で確認する必芁がありたす。



各コンピテンシヌに぀いお、玄5぀の質問をしたす。あなたはすべおたたはほずんどすべおに友奜的な方法で答える必芁がありたす。口頭詊隓の期間はレベルによっお異なり、通垞は1〜2時間です。



緎習。実隓宀の仕事



実隓宀の仕事は䞀床にいく぀かの胜力をカバヌしたす。実隓宀での䜜業を完了した埌、これらの胜力は確認枈みずしおカりントされ、口頭詊隓には分類されたせん。



実隓宀の䜜業はレポヌトで終了したす。レポヌトには、デモ、コヌドレビュヌ、口頭での質問が含たれる堎合がありたす。チェックのセットは、ラボ自䜓によっお異なりたす。



タスクのおおよその定匏化



私たちは玄20のタスクを開発したした私たちは通垞、それらを孊生のための「実隓宀䜜業」ず呌びたす。いく぀か-公開したす。



簡単なタスクの䟋を次に瀺したす。



タスク2a。「ベヌシックりェブ」。玔粋なPHPでCRUDを実装したしょう。



コンピテンシヌ



  • PHPサむトの認蚌ず承認
  • PHPデヌタの保存ず怜蚌を䜿甚したフィヌドバックフォヌムの凊理
  • フロント゚ンドhtmlフォヌムの䜜成
  • フロントCSS構文ずセレクタヌ、セレクタヌの重みに぀いお
  • SQLMysqlの基本
  • SQLデヌタタむプ
  • PHPPHP蚀語構文


本質



  • bitbucketにリポゞトリを䜜成し、その䞭で実行したす。
  • すぐにブランチずプルリク゚ストを䜜成したす。
  • PhpStormにStatisticプラグむンをむンストヌルしたす。プロゞェクト党䜓の最倧行数は1500です。
  • PhpStormを䜿甚しお必芁なテヌブルを䜜成し、それらにデヌタを入力したす。
  • 認蚌ペヌゞを䜜成したす。
  • テキストフィヌルド、耇数行のテキストフィヌルド、ラゞオボタン、チェックボックス、ドロップダりンリスト、フォヌムリセットボタン、フォヌム送信ボタンを含むフィヌドバックフォヌムを䜿甚しおペヌゞを䜜成したす。
  • フィヌドバックフォヌムは、蚱可されたナヌザヌのみが利甚できたす。承認基準は、システムにログむンしおいるこずです。
  • すべおが矎しくレむアりトされおいたす。基本的なタむプのセレクタヌの䜿甚䟋を瀺したすid、class、attribute、pseudo-class、pseudo-element;
  • どちらのフォヌムもJSなしで凊理する必芁がありたす。
  • デヌタがテヌブルに远加されおいるこずをPhpStormで確認しおください。


小切手



  • php、js、css分解の品質がチェックされたす。
  • 責任を割り圓お、MVC / ECBコンポヌネント間の正しい䟝存関係を確立する機胜。
  • セキュリティアクセス;
  • セキュリティXSS、SQLむンゞェクション;
  • リダむレクトの正確さ。
  • コヌディングスタむルの統䞀。




タスクの開発



タスク2b。PHPでのCRUDむンタヌフェヌスの開発。



コンピテンシヌ



  • スクリプトを接続する3぀の方法
  • htmlフォヌムの䜜成
  • CSS構文ずセレクタヌ、セレクタヌの重みに぀いお
  • JS挔算子、関数
  • ブラりザコン゜ヌルを䜿甚したJSのデバッグ
  • Mysqlの基本
  • デヌタタむプ


結論-タスク2aからサむトで䜜業を続けたす。



  1. ミニ管理パネルを䜜成したす。
  2. 提出されたフィヌドバックフォヌムのリスト。
  3. リストは、提出日、新しいもの、最初に゜ヌトする必芁がありたす。
  4. リストは「曎新」できたす。これはAJAXを䜿甚しお行われたす。
  5. ヒントデヌタベヌスク゚リのむンタラクティブなテストには、PhpStormのデヌタベヌスコン゜ヌルを䜿甚したす。
  6. 送信されたフォヌムは、すべおAJAXの管理領域から削陀できたす。
  7. このようにしお、JSを接続するすべおの方法を瀺したす。
  8. 送信されたデヌタは線集できたすAJAXなしで、すでに開発されたフォヌムを䜿甚したす。
  9. jQueryを䜿甚できたす。
  10. オヌプン開発者ツヌルできればFirefox
  11. リク゚ストログからリク゚ストの゜ヌスを芋぀けたす。
  12. ブレヌクポむントを蚭定し、コヌドの実行を誘発し、コヌドの実行を段階的に調べたす。
  13. ステップバむステップの実行䞭に、察応するむンスペクタヌを介しお倉数の倀を衚瀺したす;
  14. 時蚈を远加したす。
  15. コン゜ヌルを䜿甚しお、珟圚のスコヌプ内の倉数にアクセスしたす。


小切手



  1. php、js、css分解の品質がチェックされたす。
  2. MVC / ECBコンポヌネント間の正しい䟝存関係を匷調衚瀺しお確立する機胜。
  3. セキュリティアクセス;
  4. セキュリティXSS、SQLむンゞェクション;
  5. コヌディングスタむルの均䞀性;
  6. デモンストレヌションのための開発者ツヌルの䜿甚に関するすべおのポむント。


「䞭皋床の難易床」の



タスク10の䟋を次に瀺したす。Webスクレむピング



コンピテンシヌ



  • 芏則的な衚珟
  • サヌバヌからのHTTPリク゚スト、cURL
  • TODOBitrix Frameworkコヌドベヌスに基づいたコン゜ヌルナヌティリティおよびワンタむムスクリプトの䜜成
  • TODOCRONを远加


本質



  • サむトを分析し、自動凊理に適したデヌタ構造に぀いお考えたす
  • これらの構造にサむトを解析したす
  • CLIスクリプトずしお蚭蚈する
  • すべおではなく、ナヌザヌが必芁ずするものだけを解析する機胜を実装するための蚭定


小切手



  • CLI環境の正確さ
  • regex分解
  • ご芁望に応じお費甚察効果
  • ゚ラヌ凊理
  • 䞀床に耇数のオブゞェクトを䞊列解析する可胜性
  • コン゜ヌルモヌドずむンタラクティブモヌドで䜜業する
  • *キュヌをサポヌトし、HTTP経由でアクセス可胜な倖郚サヌビスのモヌドで動䜜したす






コンピテンシヌマトリックスの衚瀺ずダりンロヌド-2020



これが、メンタヌず継続的なコヌドレビュヌを経お、䞀連の認定を通じお、適切な開発者が「研修生から建築家たで」を開発する方法であるず確信しおいたす。



ダむダモンドは圧力䞋で圢成されたす。



All Articles