伝説のプログラマー、Zhihu Wheel Brother、これを読んでひざまずきました

リリース: 2023-07-26 17:14:11
転載
1083 人が閲覧しました

########## 著者について:####################################

vczh の本名は陳 Zihan で、Zhihu の個人情報には「プロのホイールビルダー」と書かれているため、「ホイール兄弟」として知られています。 vczh は大学時代に Microsoft でインターンをし、卒業後すぐに Microsoft に入社しました。私は上海マイクロソフトで入社し、その後北京のマイクロソフト リサーチ アジアに入社しました。現在は米国シアトルに拠点を移し、Office チームのエンジニアとして働いています。

人々は私にマイクロソフトへの行き方をよく尋ねました。実際、私はこの質問について考えたこともなかったので、そのときの答えは当然マイクロソフトの広告でした(プログラミングが得意、数学が得意、態度が良い)。 2009 年、私が大学 4 年生だったとき、たまたま米国のサブプライムローン危機が私たちを襲い、米国の企業に行きたいと思っている人たちが搾取されるのはさらに困難になりました。幸いなことに、私は 5 つのテストに合格し、6 人の将軍を倒し、最終的にはインターンシップ終了後も残ることができました。この原因と結果は明らかに数日間のインタビューでは判断できないため、Hello World から始める必要があります。 ######################## 中学校####################### 私は幸運にも中学2年生からプログラミングを学ぶことにしました。当時、世界はすでに現代のレベルに達していました。オペレーティング システムには、仮想メモリ、グラフィカル インターフェイス、インターネット、開発ソフトウェア、統合開発環境が備わっていました。一部の古いタイマーが述べているように、プログラムをコンパイルするには、ディスクを数回交換する必要がありました。は全く異なります。

パソコンを買って半年くらいだったので、見るものすべてに興味津々でしたし、当時は父親がゲームをすることに反対していたので、自分でいくつかゲームを作ろうと考えていたので、それをオープンにできると。そのため、汕頭華僑中学校で Visual Basic 5.0 の授業が提供されると聞いたとき、とても興奮しました。しかし、初めてのコンピューター授業に興奮しすぎて自転車に乗りすぎて大量出血し、歯を数本失ったあの日と比べれば、その興奮の度合いは無視できるほどだ。



当時はまだ 21 世紀初頭で、インターネット アクセスが非常に高価で、Google も始まったばかりでほとんど誰も知らなかった時代で、プログラミングを学ぶことは今よりはるかに困難でした。知識を探すのにインターネットは基本的にどうしようもないので、本屋に行くという趣味が生まれました。

「Visual Studio Advanced Graphics Programming Tutorial」という本を見つけるのに時間はかかりませんでした。この本はとても気に入っています。イラストはとても美しく、Visual Basic プログラミングを使用して描かれています。手放すことができません。残念ながら内容が高度すぎたので、中学3年生の時に初歩的な3次元解析幾何を独学で学んだとか、高校の授業は全く聞かなかったとかの話が後から流れてきました。高校3年生で、自分の数学的な分析だけを頼りにしていましたが、後になって理解しました。

途中で、プログラミングを使用して多くの複雑なグラフィックを描画したり、画像にさまざまな複雑な変換を実行しようとしたため、プログラムを書く前に紙の上で長い式を推測する必要がありました。プログラムの実行結果が間違っている場合、それをデバッグする方法はないため、エラーが発生した理由を説明するために数式内のいくつかのバグを見つけることを期待してプログラムを再導出する必要があります。

それ以来、私は記号計算がとても得意になりました。また、数学や物理の宿題をするにしても、プログラミングで公式を導出するにしても、計算すべきことが多すぎて、あちこちの紙切れを探すのが面倒なので、複雑な処理を暗算する能力も身に付きました(残念ながら、私は失ってしまいました)。それは今です)。ちなみに、このことは私にも恩恵をもたらしました。つまり、大学入学試験の数学の選択式問題の答えを、レポートが配られてから10分以内にすべて暗算し、書くことは許されませんでしたが、すべて正解でした。正しい。


伝説のプログラマー、Zhihu Wheel Brother、これを読んでひざまずきました


グラフィックプログラミングを長くやっていた頃、当初の理想を思い出したのでゲームを始めました。そんなとき、成都ゴールデンピン作業グループが開発した『ヒーローズ オブ マナ』を見て、RPG開発への熱意に火がつきました。何度か失敗を経験しましたが、高校 2 年生の旧暦 1 月 1 日に、ついに「Tiandi Zhuan」のすべてのコーディング作業を完了し、すぐに GameRes の Web サイトにアップロードしました。


これは、10,000 行を超える初めてのプログラムです。それを無事に完成させるために、なぜオブジェクト指向なのか、なぜ相互依存を減らすためにモジュールを分割する必要があるのか​​など、多くの真実に気づきました。これは、後に独自のグラフィカル インターフェイスとスクリプト エンジンを開発する機会にもなりました。その後、OpenGL を使って 3D ゲームを作ろうとしましたが、共通の関心を持って一緒に仕事をしてくれるアーティストを見つけるのが難しかったため、断念しました。しかし、これにより、グラフィカル インターフェイスとスクリプト エンジンに投資するための多くの時間が得られました。


伝説のプログラマー、Zhihu Wheel Brother、これを読んでひざまずきました


その後、高級言語を説明することを思いつきました。これは私のプログラミングの歴史全体の中で最初のターニングポイントでした。当時はデータ構造としてリンクリストしか使っていなかったので、コンパイルの原則やデザインパターンについては全く聞いたことがありませんでした。当時の高級言語を説明するのは当然より困難でした。そこで、何日もかけて考え抜いた結果、単純な高級言語をアセンブリに似た単純な命令セット言語に再処理する、現在ではワンパスコンパイルと呼ばれる方法(これも非常に悪い方法です)を思いつきました。


当時私はすでに高校 3 年生だったので、実際にはプログラミングに費やす時間があまりなく、最初に作ったプロトタイプは Delphi で開発された簡易型 Pascal インタプリタでした。今考えると、メモリリークやパフォーマンスの問題がたくさんあったはずですが、当時はそれが何なのかわかりませんでした。高校卒業後の3か月の無為の間に、これを再設計し、数十ページの計画を立てました。仕上げる時間がなかったので、プリントアウトして華南理工大学に持って行きました。 ################ 大学######################## 大学に入学してからほんの数日後、私たちのクラスの先生である陳建先生が編集の原則を教えていると先輩の姉妹から聞き、彼女にこの紙の束を見せました。彼女は何も言わず(今振り返ると本当に見苦しいデザインだったとしか言いようがありません…)、コンパイル原理の教科書をくれました。すぐに読み終えて、その中の知識を使って初めての本格的なスクリプト エンジンを作成しました 構文は Java 言語の簡単な部分をコピーし、テンプレートのパラメータを自動的に変更する機能も追加しました オブジェクト型の構文は次のとおりですジョーブという名前。その後、Java のクラスを受講したところ、実際に Java がこれを行っていることがわかり、非常に不思議な気持ちになりました。

その後、私は多くのスクリプト エンジンを次々と書きました。私が新入生のときに構築した Jove は、まだ人気があると思った最初のスクリプト エンジンでした。 2 つ目は、2 年生で失敗して多くの教訓を学んだ後、3 年生で開発した動的言語で、名前は Free (私のブログ http://www.cppblog.com/vczh で確認できます) です。このほど、開発中のグラフィックスカード高速化GUIクラスライブラリ「GacUI」と連携するため、3.0へのアップデートを予定している。次に、マイクロソフト上海の WCFTools グループでインターンをしていた期間に、KernelFP と呼ばれる純粋関数型言語を毎晩完成させました。これが後の卒業プロジェクトになりました。


伝説のプログラマー、Zhihu Wheel Brother、これを読んでひざまずきました


卒業制作を提出した後、卒業までの数か月以内に CMinus を完成させました。これは、コンパイル原則コースで設計された非常に単純な CMinus ではなく、完全な C 言語コンパイラーです (関数ポインターの構文は私によって変更されていますが、まだサポートされています)。コンパイル結果は、X86 バイナリ コードの一部としてメモリに保存されます。関数の開始アドレスは、強制的に関数ポインタに変換され、C プログラムで直接使用できます。これは、Visual C のルールのいくつかに従っているためです。命令を生成するときの規則については、MSDN で明確に説明されています。


卒業後、私は野心的に、ジェネリックスとコンセプト マッピングを備えた C 言語である NativeX を構築しました。数か月前、C# をコピーしようとしましたが、C# は複雑すぎたので、GacUI に頼りました。また、多くのグラフィカル インターフェイス (GUI) クラス ライブラリも作成しました。高校で RPG 用の 2 つのコントロール ライブラリを開発した後、大学で OpenGL を使用して開発した 2 つの GUI ライブラリが失敗しました。その後、Windows API (Vczh GUI) もカプセル化され、使いやすさを VCL や WinForm に近づけようとしました。


卒業後、何度かレンダリングベースの GUI を公開しようとしたり、アーキテクチャを何度か変更したりしましたが、今開発している GacUI になって初めて、自分が正しい軌道に乗っていると感じました。このプロセスで私が得た結論の 1 つは、「Windows Presentation Foundation の設計は本当に完璧だ」ということです...これらの作業に加えて、3 次元オブジェクト用の 3 つのソフトウェア レンダリング プログラムも開発しました。最初の 2 つは卒業までに完了しました。 、最後のものは、余暇をどのように使って人生を豊かにできるか分からなかったため、1 年前に開発されました。時間を潰すために開発されました。


伝説のプログラマー、Zhihu Wheel Brother、これを読んでひざまずきました


ここで、1か月前に後輩の兄弟姉妹からうまく答えられなかった質問に答えることができそうです。マイクロソフトでの仕事を見つけるにはどうすればよいですか?上記のことをすべて履歴書に書いたからです。同時に、これを 4 年生になるまで質問しないと、すでに手遅れになります...


特筆すべきことは、私は3年生の頃から、基礎がほぼゼロで私の2学年下のソフトウェアカレッジの学生にプログラミングを学ぶよう指導していたことです。私の 3 年間のトレーニングを受けた後、相手にしっかりとした C の基礎と熟達した単体テストの作成レベルを身につけ、それほど悪くない設計を直感的に思いつくことができるようにするために、私は C に関する多くのコンテンツを見直しました。私は数日間、いくつかのポインタのクラスの準備をしていて、毎日課題があります。その過程で、プログラミングのレベルを早く上げたいなら、できることは必ずやっておかなければいけない、でもちょっと難しかったらできない、ということを痛感しました。このままあと数年続ければ、必ず名人の仲間入りができるでしょう。


そのため、宿題を整理する過程で、ポインタに関する内容は意図的に後回しにしました。まず、相手に変数と分岐ループを受け入れさせ、次に適切なスタイルを開発し (たとえば、変数に常に 1 文字の名前を付けることができるとは限らないなど)、次に配列の操作を学び、次のステップはポインタについてです。強制的な型変換を行わずに、いくつかの操作を行うだけで、1 か月以内に単体テストを備えた文字列クラスを作成できました。ポインタのポイントは、「ポインタそのものが位置を指す数字である」という概念を相手に深く理解してもらうことです。この目的のために、ポインターの背後にある複雑な概念を説明するために、グローバル無限長配列を 1 つだけ備えたアセンブリ言語を特別に設計しました (実装はしませんでした)。その後、オブジェクト指向、デザインパターン、スクリプトエンジン関連などについての知識があります。


学生の卒業プロジェクトはシンプルな動的言語スクリプト エンジンで、スクリプト エンジンの実装により、Linq を模倣したリスト処理関数ライブラリが正しく実行されます。このクロージャの実装は階層化されており、あらゆる場所のオブジェクトに削除関数を追加し、スクリプト エンジンの実装をテストできるさまざまな遅延実行イテレータを作成します。相手は卒業後にNetEaseに採用され、待遇面では人道的な配慮が与えられた。


伝説のプログラマー、Zhihu Wheel Brother、これを読んでひざまずきました


私のプログラミングの旅には、空いた時間に行ったプログラムだけでなく、マイクロソフトでのインターンシップや仕事のプロセスも含まれています。私は高校生の時に華南理工大学のマイクロソフトクラブの存在を知り、マイクロソフトに対してある種の憧れを持っていたため、入学後は大学の学生会だけでなく、大学の活動にも積極的に参加してきました。 Microsoft Club に注目してください。新しいメンバーを募集し、他のすべての協会を無視してください。しかし、正直に言うと、Student Union や Microsoft Club での活動は単なる余興であり、本格的な活動はまったくしていませんでした。


私が大学 2 年生のとき、マイクロソフト サーチ テクノロジ センター (STC) が履歴書を回収するためにマイクロソフト クラブを訪れたとき、道中で前述のクラス担任の陳建先生に会い、この件について話しました。その後、相手は全員大学院生なので若すぎると言われ断念しました。私が大学 3 年生のとき、教師の Chen Jian が、マイクロソフトでのインターンシップ履歴書の提出を昔のクラスメートに手伝ってもらえると言ってくれたので、2008 年 3 月にマイクロソフト上海からの電話面接を受けました。電話面接は 2 回あり、1 回目は人事担当者、2 回目はソフトウェア エンジニアでした。 2回目の電話インタビューでは、上記のFreeについて話し、さらにデータ構造やフレームワーク設計の問題についても熱心に議論しました。数日以内に面接の通知を受け取り、上海市閔行区にある紫竹デジタル情報港に面接に行きました。それが私の人生初の面接でした。


# インターンシップ


マイクロソフトの面接の手配は秒単位まで正確で、一部の企業よりもはるかに使いやすく、他の人の時間を何時間も無駄にすることはありません。インターンシップの面接は3回あり、会話はすべて英語でしたが、外国人は1名だけでした。その若い外国人に面接を受けたとき、緊張しすぎて簡単な質問に最適な答えを出せなかったことを今でもぼんやりと覚えています。しかし、最終的には私を上海の Microsoft WCF Tools チームにインターンとして参加させてくれました。


このチームには、私が非常に尊敬するソフトウェア開発マネージャー、Ge Ziang 氏がいます。 Ge 氏はアジャイルを愛し、その実践に熱心に取り組む人です。 4 か月半のインターンシップ中、彼はソフトウェア エンジニアリングについて多くのことを教えてくれましたが、私に大きな恩恵をもたらした最も重要なことは単体テストについてでした。


さらに、迅速なイテレーション、スクラム ミーティング、ペア プログラミング、ソース コード バージョン管理システム (TFS を使用) に基づく複数人による共同開発プロセスも経験しました。 PetShop を変更して TechEd カンファレンス用の WCF デモを作成し、Visual Studio 2010 の WCF 開発ツールのバグを修正し、拡張性の高い構成ファイル エディタを開発した後、2008 年 12 月に Microsoft でのインターンシップを終了しました。このインターンシップの後、ソース コードを管理する私の能力も向上し、それは空き時間に開発するプロジェクトのコード品質に直接反映されています。

# 正社員になる


# インターンシップが終了する前に、私は正社員(FTE)としての面接を受けることになりました。当時の状況は非常に深刻でした。 2008 年に米国で発生したサブプライムローン危機は 10 月にマイクロソフト上海に正式に影響を及ぼし、同社はその期間中、フルタイム従業員の採用数を削減することを決定しました。 11月に正社員の面接を受けたのですが、この出来事でとても緊張しました。その後、Ge さんから、私が卒業後も留まって働き続けてほしいという個人的な提案があったと聞き、私は安心しました。


インターン生が正社員になるまでの面接は計5回あります。非常に印象に残ったのは、あるラウンドで面接官が非常に複雑な質問をたくさんし、最後に手がかりバイナリツリーのオンライン更新について質問したことですが、具体的な内容は思い出せません。長い時間をかけてようやく正しいアルゴリズムを考えた後、時間が過ぎてホワイトボードにコードを書く時間がなくなったことだけを覚えています。その後、ようやく面接に合格し、数少ない面接の一つがついに奪われてしまいました。しかし、数か月後には規制が緩和され、面接時ほど難しくはなくなると聞きました。


インターンシップと面接の過程で、華南理工大学ソフトウェア学部が提供する多くのコース、特にデータ構造、デザインパターン、ソフトウェアテストに関するコースが実際に非常に役立つと感じました。これらは仕事上で非常に役立つ知識であり、今後の仕事でも経験を積み続ける必要があります。ただ、この大学は学生数が多く、新しい大学には常に教師が不足しているため、多くのクラスメートは教科書に記載されている内容の役割を理解するのが難しいと言いました。おそらく、当時よりも今のほうがはるかに状況は良くなっていると思われます。


#Microsoft SQL Server


面接終了から内定までは何十日もかかり、最終的に人事から通知が届いたのは大晦日でした。次の6か月間、私は学校で自分のことを続け、経験などを紹介するいくつかの活動に時々参加したり、何人かと遊びに出かけたりしました。卒業後は上海マイクロソフトに入社。途中で何かが起こり、クォータの変更により、WCF Tools の内定を受けたものの、最終的に SQL Server グループに配属されることになりましたが、その前に通知は届きませんでした。私はデータベースが好きではなく、SQL Server についてほとんど理解していなかったので、SQL Server Management Studio (伝説的な「インターフェイス」としても知られています) の開発に 1 年半を費やしました。この期間中に、単体テスト、インターフェイス開発、デザイン パターン、Linq、構文アナライザーに関する知識を同僚に広めました。


この 1 年半の経験は私を大きく成長させてくれました。主な理由は、インターンシップと比べて、正式に仕事をする場合、常に他のチーム、企業、民族、国、種族と情熱的かつ広範な交流を持たなければならないからです。とても時間がかかります、とても時間がかかります。社会主義の優位性を体験するために、時々米国に行かなければなりません。正式なソフトウェアのインターフェイス部分は非常に複雑で、オペレーティング システムの DPI 変更やローカリゼーション プロセス (インターフェイス上のテキストを他の言語に翻訳する内容がほとんどです) だけでなく、インターフェイスのレイアウトも変更する必要があります。一部のテキストが失われないように自動的に調整されるか、ボタンの半分しか表示されず、さまざまな障害者 (特に視力を失った人) に配慮する必要があります。いくつかの自己描画複合体には、いくつかのランタイム インターフェイスを提供する必要があります。自動テスト チームがタスクを完了できるようにするためのコンテンツです。


伝説のプログラマー、Zhihu Wheel Brother、これを読んでひざまずきました


今回の経験で、厳密なインターフェースを開発することの難しさを実感しました。もう 1 つは需要の変化についてです。デザインパターンの存在は、要求の変化に対抗するためのものですが、私はこの事実を仕事を始めるまで理解できませんでした。要件の大規模な変更後も、コード全体が美しく、変更が容易で、パフォーマンスが高く、安全であるように、ソフトウェアのアーキテクチャを適切に設計する必要があります。すべての変更をパッチにすることはできません。いつでもコード全体を適切なものにするために、常にリファクタリングする必要があります。この目標を達成するには、デザイン パターンに習熟し、それを使用してプロジェクトを開発する必要があります。


他社と比較した Microsoft の数少ない利点の 1 つは、ソフトウェアをゆっくりと完成させるために多くの時間を与えてくれるということです。そして、この適切な定義は、もちろん、機能性と保守性に重点を置いています。タスクを高速に完了するために非常に高度な方法を使用しているコードが、複雑すぎてコメントを書き尽くしても後続の保守者が理解できない場合、そのコードは実用的な価値がありません。優れたコードとは、その設計がどれほど巧妙であるか、アルゴリズムがどれほど高度であるかではなく、10 年間にわたって数千人が同時に開発でき、継続的に機能が追加される過程で決まります。そのため、書き直す必要が生じました。


# ジョブホッピング


その後、訳あってMicrosoft Research Asia(MSRA)に人事異動を申請しました。 2011年1月、上司の許可を得て、上海から北京へ行き、研究所の面接に臨みました。今回の面接はまだ5回あります。この面接は困難でした。面接官の 1 人は、私の履歴書にコンパイラに関連する多くの項目があることに気づき、strncpy 関数の実装を依頼することにしました。要件は、CPU によるメモリへのアクセス数が最小限であることです。これには、帯域幅、アライメント、バイナリ バイト シフト操作などのさまざまな問題が関係します。手法自体がすでに非常に面倒で、紙にコードを書く場合には間違いが避けられないため、プログラム全体を書き終える時間がまだありません。もう一人の面接官の外国人の方も、若い頃にコンパイラの仕事をしていた方ですが、驚いたのは、面接中は私に何も質問せず、アルゴリズムやコンパイラの問題点について色々と話してくれたことです。質問に答えなければならなかったので、私が知っていた知識が明らかになりました。それから私はこの男性と深い友情を育みました。


その後すぐに異動が承認されました。上海の SQL Server チームの単体テスト標準の確立など、いくつかの仕上げ作業を行った後、2011 年 4 月に北京に行き、正式に Microsoft Research Asia のメンバーとなり、分散システムに関連するいくつかの仕事を行いました。


## Microsoft Research Asia


## 研究機関の仕事は非常に特殊です。主な理由は、私は長期的なプロジェクトに参加したことがなく、常に数人の研究者と一緒に仕事をしてきたからです。最初のプロジェクトは主に、C/S アーキテクチャ プログラムがデッドロックするかどうかを判断し、プログラマが問題の根本原因を理解し、独自のプログラムをさらに修正してデバッグできるようにするためのレポートを提供する動的分析プロジェクトです。その後、私は彼らに従って画像検索エンジンと分散グラフ データベースを構築し、退職前にマイクロソフト独自のナレッジ グラフ プロジェクトなどのデータを充実させるためのいくつかのクローラーの構築を手伝いました。

研究所での過去数年間で、技術的な知識を獲得し、ベテランになる方法を学んだことに加えて、主な技術的成長は依然として私自身が開発したプロジェクトから来ています。この研究所の構造は、複雑な (ただし新しいとは限りません) テクノロジーを扱うのが好きな私のようなプログラマーに非常に適しています。さらに、研究所での私の直属の上司は鄒新でした。そのおかげで、優れたリーダーがいかに重要であるかを深く理解しました。


書いてから4年半も経ちました。 GacUI を作成する当初の目的は、自分の言語用の IDE を作成することでしたが、C でパーサーを作成するのは楽しかったです。以前、UI を C# で作成し、スマート プロンプト アルゴリズムを C で作成したプロジェクトを実験していました。


伝説のプログラマー、Zhihu Wheel Brother、これを読んでひざまずきました


後になって、すべてを C で記述できたらどんなに素晴らしいだろう、と単純に思いました。しかし、C GUI ライブラリの MVVM サポートは役に立たないため、GacUI が登場しました。しかし、GUI ライブラリを作成するのは実際には少し負荷が高く、私は良い開発体験を追求しているので、これまでずっと取り組んできました。 1.0 は今年リリースされるはずです...


GacUI を開発することで、私は長年にわたって構築してきた 7 天の王国 GUI ライブラリの経験と教訓を整理しただけでなく、最小限のコストでクロスプラットフォームのクライアント プログラムを開発する方法も学びました。実際、クロスプラットフォームのプログラムを書くことはまったく難しいことではありませんが、なぜインターネット上でこれほど多くの人が大騒ぎしているのかわかりません。 GacUI がもたらしたもう 1 つの利点は、基本的にデザイン パターンのすべてのコンテンツをレビューしたことです。また、その巨大なサイズのため、異なる git リポジトリ間の半順序依存関係を具体的に実装する小さなツールも作成しました。リポジトリ全体は 2 つのファイルにパッケージ化されているため、他のリポジトリで直接使用できます。当初はサブモジュールを試してみたかったのですが、サブモジュールはツリーの依存関係しか実装できず、これは非常に悪いです。


GacUI は、以前に学んだコンパイル原則をついに見直しました。 XML をコンパイルするプロセスで、GacUI は実際にすべてをスクリプト エンジンのバイトコードに変換し、最終的にはスクリプトを直接実行するか、スクリプトを C に変換します (開発中)。そこで、これを実現するにはコンパイラを書くことは避けられず、コンパイルしたものはC側のクラスと通信できるようにする必要があるため、改めてCOMの内容を見直しました(私は使いませんでしたが、同じものを作ってみました)。


C世代が完了したら、昨年から始めたGacJSを書き続け、GacUIをブラウザに移動し、あらゆる面でIDEを実行する予定です。 C が適している領域は広大で奥が深いです。


# 海外旅行


伝説のプログラマー、Zhihu Wheel Brother、これを読んでひざまずきました


## データベースが嫌いで研究所に転職したのですが、その結果、研究所は私が SQL Server 出身であることを見て、データベースをたくさん作ってくれました。その後、上司に何か他にできることはないか尋ねました。上司が私に何をしたいのかと尋ねたので、コンパイラ関連のものを手に入れてみてはどうかと言いました。そこで上司はその後、私が別の研究機関で分散グラフ データベース用のクエリ言語を作成するよう手配してくれました。しかし、このようなことは最初は非常に簡単で、すぐに終わらせた後、私は再びデータベース開発者になりました。それで、私は真実を理解しました。ほとんどの研究機関には、私の好みのものはありません。


それで、数年後、北京(初級)と研究所(副)に対する私の不満が徐々に高まったので、すぐに妻を見つけて関与しました。実際、これは通常の面接と同じです:

1. 参加したいグループを見つけます


2. 上司に連絡します, 彼に履歴書を渡します

3. 彼が従業員を解雇していないか、経済危機や買収案件のせいで人材を採用できないかどうかを確認してください


4. 次に、


5 にインタビューします。オファー (これは確実です)


6. ビザの申請


このプロセスを見て私はため息をつきました、アメリカの面接官は世界を見ていないだけです。競争の圧力は低すぎるし、聞かれる質問は非常に簡単で、彼らは中国に来て滞在してお互いに会わなければならない、そうでなければ遅かれ早かれアメリカ帝国主義は潰されるだろう。ただ、もう一つの側面としては、Office のクロスプラットフォーム GUI を作ったチームが、私が作った GacUI を見て、かなり良いと思ったのか、気軽にインタビューしてくれたということも考えられます。


ここで言及しなければならないのは、マイクロソフトは従業員を非常に大切にしており、高品質の引っ越しサービスを私に提供してくれただけでなく、私が米国に到着した後、私が現代社会に溶け込めるように叔母を手配してくれたのです。彼はまた、もし私が素晴らしくてこれらのものは必要ないと感じたら、2万ドルくれるとも言いました。 Googleでも、(自ら海外に行きたい社員ではなく)会社から強制的に渡米を手配された人のみが利用できる。最も重要なことは、Microsoft の従業員が BMW の割引を受けられることです。これは非常にうれしいことです。


中国と米国の優秀な人材の給与に大きな差はないが、米国のIT分野の住宅価格が北京、上海、広州と同等であることを除けば、自動車やその他の物価はそれほど変わらない。米国の電化製品ははるかに高価であり、全体的に見て、幸福度は低下しています。幸いなことに、中国のIT先進地域の大気汚染は非常に深刻なので、この欠点を補ってくれるだけでなく、貧しいほうが楽だという気持ちにもなりました。というわけで、壁を飛び越えてからは、電化製品で遊ぶ時間がなくなり、時間があるときは車を運転し、時間がないときは仕事に行くという生活がとても楽しいです。


案の定、豚は風の中に立っていれば飛ぶことができます。他の産業の賃金は明らかに米国よりも中国の方がはるかに低いですが、プログラマーの場合はその差はわずか 1 ~ 3 倍です。案の定、中国は社会主義の発展におけるギャップを埋めるために、専門的な訓練を受けた多数のプロのプログラマーを依然として必要としている。 ######################## マイクロソフトオフィス####################### # 今回の転職の際、たまたまマイクロソフトの人がノキアの人を解雇しようとしていたのですが、その結果、ほとんどのチームの定員が凍結されてしまい、資金が潤沢なオフィスしか人を採用できなかったので、やむを得ず採用することにしました。オフィスに来てください。当初の目標はEdge用のJSエンジンを構築するか、VSグループに行ってコンパイラか何かを構築することでしたが、あまりにも貧弱だったので断念せざるを得ませんでした。


Office での作業は私にとって目を見張るものでした。30 年間にわたって 10,000 人によって作成されたソフトウェアが、数百ギガバイトのコードを含むリポジトリ スナップショットとともにどのように作成されるかを体験しました。マシンが高価すぎるため、コードを変更する場合はローカルでしかコンパイルできません。そのため、msbuild に基づいて作成した CI セットには、ライブラリ/dll が含まれていない場合にリンクする必要があるコードも含まれています。サーバーに移動して現在のチェックポイントのコンパイル済みキャッシュを見つけ、コンパイル済み関数をダウンロードします。したがって、ビルド ファームが時々ハングアップする日には、ネットワーク接続が切断されてローカル コンパイルを実行できません。


# 終了


## 自分のプログラミング遍歴を振り返ってみると、おそらく学生時代にゲームを書き始め、その後ゲームエンジンを書き、その後グラフィックス、GUIライブラリ、ゲームエンジンに必要なスクリプトエンジンを専門に学び、最後に気力でGUIライブラリを誕生させました。およびコンパイラ、デバイス。最初にスクリプト エンジンを設計したとき、スクリプトをどのように一時停止するかという問題に細心の注意を払いました。実際、それは基本的にゲームのニーズから派生したものでした。そのため、人間の肉体はさまざまな奇妙なコルーチン実装を作成しました。結局、オーソドックスな方法をようやく覚えたので、簡単に完成するはずだった問題が、その後の要件のせいで少し複雑になってしまいました(端的に言えば、コルーチン関連をスクリプトでカスタマイズ(またはハック)できるようにするためです)型システム) コンテンツ)、その結果、コルーチンを実装するために無限に複雑なメソッドが必要になります。なぜ人間は傷つけ合うのでしょうか?


仕事に就くと、基本的には

1 でした。もともと Visual Studio を手に入れたかったのですが、学生の頃は SQL が好きではありませんでしたが、 SQL に関して言えば、その作業には、データベースの専門知識を学習し、コントロールをドラッグすることが含まれます。


2. しかし、数年間働いた後でも、SQL は好きではないと感じたので、MSRA に切り替えました。その結果、MSRA は私がデータベースで作業できるように最善を尽くしてくれました。私はそれについて考えもしなかったので、これが嫌だったという理由だけで辞めました...



3。後で、まあまあ、とにかくコンパイラでやることは何も残っていないので、コントロールをドラッグするだけだと思いました。そこで私は Office の人々に、私が GacUI を作るのがどれほど素晴らしいかを見てください、と言いました。オフィスの人たちは「くそー!」と言った。そこで私は、チームの非 GUI 部分の責任者として採用されました。



4. 半年後、上司が仕事を手配し始めたので、「まだ好きだ」という気持ちを表現する方法を考えました。他のことをするために。そこで私はついに、以前の仕事である Office プログラマ向けの内部コンパイラの開発を開始しました。


ついに、大好きな仕事をすることができました。

以上が伝説のプログラマー、Zhihu Wheel Brother、これを読んでひざまずきましたの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

関連ラベル:
ソース:Java学习指南
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート