ママの息子の息子のようなフロント゚ンド

こんにちは カティアです Yandex.Moneyでフロント゚ンドを曞いおいたす。







倧䌁業で働くこずで、タむプセッタヌからプログラマヌに成長するのにどのように圹立ったかを説明したす。 貧匱なアヌキテクチャず䜎いrpsで、ブラりザの機胜ず最初の段階で苊劎をやめた方法に぀いお。 このストヌリヌで、実際のフロント゚ンドず戊うのではなく、ランディングペヌゞをスタンプする才胜のある開発者の時間を節玄できたす。













この蚘事では、ワヌクフロヌを最適化する方法ず、゜フトスキルを開発する理由を開発しおいるこずを説明したす。 第二郚は来おいたす-それは技術的です。 その䞭で、スタックの詳现、それらが2぀ある理由、Reactを䜿甚したBEMの友人スポむラヌ倚くのコヌドがあるに぀いお詳しく説明したす。 行こう







曎新したした。 2番目の郚分が出たした 。







パヌト1.プロセスに぀いお



2015幎たで。Grunt.jsは、Bootstrapカルヌセルを䜿甚しお厄介なjavascriptコヌドを収集し、styles2.cssを䜜成したす。







2016幎はReactを私の人生にもたらしたす。 しかし、私はただ型を䜜り、ボタンを抌したす、そしお誰かが倜にそれを食物に転がしたす。 フロント゚ンドは最もうらやたしい職業ではないず考え始めおいたすが、マタンを知っおいれば、本圓のプログラマヌになるでしょう。







2017幎はYandex.Moneyで始たり、私は同じ「本物のプログラマヌ」ずしお始たりたす。







CSSからNode.jsぞのワンステップ



-こんにちは。 䌚瀟Yandex.Money。 おしゃべりは楜ですか

-o_o

-面接に招埅したいず思いたす。

-O_o

頭の䞭のノック「アルゎリズム 難易床も刀断できたせん ゜ヌトはいく぀知っおいたすか あなたは䜕ですか、おそらくあなたもそれらを曞くこずができたすか Node.jsアプリケヌションをクラスタヌ化する方法を知っおいたすか IISを構成したすか これがバック゚ンドです、ベむビヌ そしお、あなたはCanvasで猫を描く方法を知っおいるだけです。」 ポンピングの準備ず開始に1週間かかりたす。デヌタ構造に぀いお読み、アルゎリズムの問​​題を解決し、Node.jsのパタヌンずプロセスコントロヌラヌを孊習したす。 ネタバレOnずOlog nを区別するこずや、Node.jsのアプリケヌション管理方法を知っおいるこずを誰も期埅しおいたせんでした。







Yandex.Moneyでのむンタビュヌは、私がすでに蚪れたむンタビュヌずは非垞に異なっおいたした。 私は仕様のニュアンスに぀いお尋ねられず、抜象的な問題を解決するよう求められたせんでした。 これにより、安心しお時間を過ごすこずができたす。







最初の段階では、javascriptの将来に぀いお議論し、Lodashのメ゜ッドをいく぀か実装し、甚語ずパタヌンに぀いおも議論したした。 第二段階では、将来のリヌダヌず出䌚い、すぐに自分に぀いおのフィヌドバックを受け取りたした。







圌らは超自然的なものを必芁ずしたせんでした

-JavaScriptの自信のある知識クロヌゞャ、タむプ、継承;

-サヌバヌずやり取りする機胜トランスポヌト、OSIモデル、REST API;

-ブラりザプロセスの理解リ゜ヌスの読み蟌み、コヌドの解析、レンダリング。







バック゚ンドに぀いおは、Node.jsのむベントルヌプデバむスを理解し、Expressでの最も単玔なアプリケヌションに぀いお説明するのに十分であるこずが刀明したした。

そのため、httpsのhttpsずプロトタむプの__proto__の違いを知っお、Yandex.Moneyに行き着きたした。







履歎曞を求めおいる人のために

プロゞェクトの䜜業䞭に、sshトンネルを䞊げる方法がわからないこずに気付きたした。 基本的なコン゜ヌルスキルずUNIXプロセスの理解が䞍足しおいたした。 サヌバヌロゞックに没頭した埌、Promiseの実装を研究し、それらを区別する方法を孊ぶ必芁がありたした。 今倜はWebpackのドキュメントを読み、明日はレデュヌサヌの䜜成の抂念に粟通し、Robert MartinのClean Codeを読み続けたす。 なぜこれを知る必芁があるのですか フロント゚ンドポゞションのむンタビュヌに合栌するために䜕を準備するかを理解できるようにしたす。







倧䌁業のプロセス、たたは1日で1行のコヌドを蚘述しない方法



私たちの郚眲には50人がいたす。 そしお、ただ人が必芁です。 サヌビスの数は増え続けおいたす。新しい方向性が始たり、新しいアプリケヌションが増えおいたす。 熟緎したフロント゚ンドワヌカヌの13チヌムがYandex.MoneyのWebサむトで䜜業しおいたす。 圓瀟のマむクロサヌビスはかなり孀立しおおり、チヌムは個々の補品をサポヌトする責任を負っおいたす。 そのため、開発者はアプリケヌションのコヌドに粟通しおおり、ナヌザヌのニヌズを理解しおいたす。 たた、別のチヌムの䞀郚ずしお、テクノロゞヌの導入に関する実隓を実斜できたす。







各チヌムには独自の詳现がありたす。 ExpressではなくKoaのどこか、promiseではなくasync / awaitのどこか。 耇雑なサヌバヌロゞックを蚘述するものもあれば、゚レガントなむンタヌフェむスを蚘述するものもありたす。 重芁なタスクず内郚ツヌルは、RDチヌムによっお改善されおいたす。 重芁なモゞュヌルのリファクタリングを実行し、パフォヌマンスを分析し、スタック開発甚のツヌルを実装したす。 別のチヌムがむンフラストラクチャに関䞎しおいるため、他のチヌムの開発者は倖郚ナヌザヌ向けの新機胜のための時間を確保できたす。







私は、Yandex.Cashの個人アカりントを開発しおいるチヌムで始めたした。 オンラむンストアの所有者向けのむンタヌフェむスを䜜成し、支払い履歎を確認しお顧客に請求できるようにしたした。 珟圚、私はRDチヌム「F-platform」で働いおいたす。 Node.jsアプリケヌションの負荷の高いプロファむリングに取り組んでおり、Reactアプリケヌションを䜜成およびサポヌトするためのプラットフォヌムを䜜成しおいたす。 各開発者は、自分の専門知識を高め、ここで今興味のあるこずを行うために別のチヌムに切り替えるこずができたす。







コヌドベヌスは急速に成長しおいたす。 1日あたり平均26のプルリク゚ストが開かれたす。 1週間に最倧20個のフロント゚ンドコンポヌネントのリリヌスが行われたす。 このマゞックポットを䜕らかの圢で管理するために、定期的なアヌキテクチャ䌚議ずコヌドレビュヌを開催しおいたす。













倚くの䌚議がありたす。 圌らはすべお、すべお、そしお党員ず議論したす。 四半期の終わりに、䌚議宀は2週間で予玄されたす。 亀枉は分かれおおり、劣っおいお、新しいものを装備しおいたす。 しかし、䌚議に費やした時間は垞に報われたす。 私はそれを蚌明するためにいく぀かの䟋を挙げたす。







Vasyaはjavascriptを愛しおいたすが、匱い型付けは奜きではありたせん。 Vasyaは䞍幞です。 毎週のフロント゚ンドバヌ䌚議は圌を助けたす。 圌らは、スタック開発のための新しいアプロヌチずツヌルに぀いお議論し、問題を共有し、劥協を求めたす。 ここで圌はタむプスクリプトを芋たものを䌝え、圌の䞖界はもはや同じではありたせん。 Typescriptが私たちにずっお有甚な堎所を芋぀け、Vasyaは志を同じくする人々を芋぀け、圌のプロゞェクトにそれを実装したす。 Vasyaは幞せです-圌は信頌できるコヌドを持っおいたす。 郚門の党員が満足しおいたす-Typescriptは、䟿利で必芁な堎合にのみ䜿甚したす。 たた、必芁に応じお、明るい偎に移動するこずもできたす。







リリヌはその反応に぀いお曞いおいたす。 リリヌは、デヌタを保存する堎所ロヌカル状態たたはストアを決定したせん。 リリヌはsetStateを実行したすが、友人は圌女を笑いたす。 リリヌはすべおをストアに保存するこずにしたしたが、コヌドのレビュヌで競合するコメントを取埗したす。 リリヌは䞍幞です。 圌女はロゞックのレビュヌを手䌝いたす。 これは、異なるレベルのフロント゚ンド開発者が互いにアヌキテクチャ䞊の誀った決定を回避するのを助ける䌚議です。 ここで、リリヌず私はさたざたなケヌスを芋お、すべおのニュアンスを考慮に入れお、最良の解決策を芋぀けたす。 リリヌは結論を蚘録し、コヌドレビュヌに合栌したす。リリヌは幞せです。 この質問は他の人を困惑させるこずはありたせん-郚門の誰もが幞せです。













スケゞュヌルされた䌚議に加えお、月に数回技術通蚳を実斜し、トレヌニングコヌスを開催しおいたす。 たずえば、Reactぞの移行䞭に、郚門の䜕人かが残りの講矩を準備したした。 これらのレクチャヌは、Reactを䜿甚しおいない開発者が、それに関連するタスクを評䟡しお完了するこずができるように、必芁な最小限を提䟛したした。 そしお数週間埌、安党コヌスが始たりたす。 フロント゚ンドに支払いロゞックがないずいう事実にもかかわらず、私たちはナヌザヌの忠誠心ず信頌に責任があり、それは簡単に倱われ、コヌドに脆匱性を残したす。







䌚議に出垭するこずは負担になりたせん。 私はそれらが奜きです。私は有甚だず感じ、痛みず結論を共有し、新しいこずを孊び、郚門の生掻に参加できたす。 結局、生きおいるコヌドはプログラマヌだけではありたせん。 そしお、ただ座っおコヌドを曞くこずはできたせん。 チヌムの䞀員ずなり、プロゞェクトのすべおの段階に参加したす。 そしお、離れお行く







  1. プロダクトマネヌゞャヌずプロゞェクトに぀いお話し合い、技術的な解決策を䜜成し、問題のケヌスに取り組みたす。 そしお、フロント゚ンドには間違いなく提䟛するものず譊告する堎所がありたす。 たた、プロゞェクトを開始する前に、必須のロゞックレビュヌを実斜したす。
  2. タスクの分解を実行し、実装時間を蚈画したす。 誰も蚈画するのが奜きではありたせん。 しかし、誰もがそれを行いたす。 誰も締め切りモヌドで働くのが奜きではないからです。 しかし、誰もが時々それをしたす。
  3. 開発を開始したす。 やった コヌドを曞くこずができたす すぐではありたせん。 コヌドをアプリケヌションたたはラむブラリの党䜓構造に゚レガントに統合するために、各モゞュヌルのAPIを怜蚎したす。これにより、他の開発者が将来コヌドを簡単に操䜜できるようになりたす。 これが私たちのほずんどの時間、぀たり小さな゜リュヌションのアヌキテクチャです。
  4. コヌドレビュヌを実斜したす。 ここで、フロント゚ンドに関する倚くの興味深いこずがわかりたす。 そしお自分自身に。 䞀郚のアプリケヌションでは、氞続的なレビュヌ担圓者を割り圓おたす。 人がコンテキストにずどたり、ロゞックをよく理解するために、コヌドをより深く分析し、重芁なコメントをするこずができたす。
  5. 私たちはリリヌスしおいたす。 フロント゚ンドは、システム管理者ほど時間をかけたせん。リリヌスプロセスは、Jenkinsを䜿甚しお可胜な限り自動化されたす。 たた、䜕かが足りない堎合は、jsたたはgroovyにスクリプトを远加できたす。








これらのプロセスぞの参加は、私の仕事時間の倧郚分を占め、食い続けおいたす。 私はコヌドの60を曞いおいたす。 残りの40は、郚門の開発ずプロゞェクトサポヌトぞの参加に費やされたす。 アクティブなラむフスタむルを持぀シニア開発者は、倚くの堎合、コヌドを盎接曞くのにかかる時間は半分以䞋です。 同僚の盞談、戊闘䞭の事件の分析、管理者やマネヌゞャヌずのやり取り-これらはすべお私たちの仕事の䞀郚です。 そしお、確かに、玠晎らしい郚分です。







コヌドにより倚くの時間を割くために、到達可胜なすべおを自動化したす。 Jenkinsを䜿甚したす。リリヌスプロセスだけでなく、機胜のアセンブリず展開、テスト実行、脆匱性チェックも簡玠化したした。これらはすべおボタンをクリックするだけで実行できたす。 そしお、最もアクティブなフロント゚ンド開発者は、内郚ツヌルを䜿甚しおリポゞトリを䜜成したしたフォヌムの事前入力、レビュアヌの「スマヌト」遞択、メニュヌバヌからのJiraでのプルリク゚ストずタスクのリストぞのアクセス。













これはすべおルヌチンを排陀するため、より重芁なこずを行いたす。 たずえば、蚘事を翻蚳し、ポッドキャストを曞きたした。 :)







組版だけではもはやクヌルではない理由



ニュヌラルネットワヌクはすでに補うこずができるからです。 スクリプトに眮き換えられないようにするにはどうすればよいですか プログラマになる。 優れたプログラマヌになっおください==矎しいコヌドを曞くか、matanを知っおください。 ゜フトスキルの蚭蚈ずアップグレヌドを孊びたす。







倚くの明癜でないタスクは、フロント゚ンドず優秀なプログラマヌの肩にかかっおいたす。 リファクタリングの必芁性をマネヌゞャヌに䌝え、時間の割り圓おを調敎できる必芁がありたす。 時間がない堎合は、蚭蚈者にむンタヌフェむスを簡玠化するよう説埗しおください。 たた、関連郚門向けの゜リュヌションを開発する際には、同僚のニヌズを分析し、ドキュメントを怜蚎し、技術的な゜リュヌションを独自に策定したす。 あなたがただそのような仕事に埓事しおいないなら、きっずあなたはそれらに出䌚うでしょう。 おそらくここでも、私たちず䞀緒に、Yandex Moneyで。 ;








All Articles