グーグルタイクーンの自己報告:天才プログラマーは実際には彼らが知らない秘密を持っています、そして彼らはそれを読んだ後に本当に学びました!

原点

最近、YouTubeでGoogleのボスによる演説を見ました。このトピックは「天才プログラマーの神話」と呼ばれています。翻訳は天才プログラマーの秘密です。このスピーチは、2009年にGoogleIOでGoogleSubversionチームで働いている2人の技術的な大物であるFitzとBenによって行われました。2人はGoogle内で最高の才能のあるプログラマーとして認められています。それで彼らはこれに基づいて共有しました、そしてこのビデオは私に多くのインスピレーションを与えました。

後でステーションBでクローンバージョンを見つけましたが、残念ながら、このビデオの人気が比較的低いため、現在は生肉しか入手できません。英語が苦手な学生にとっては難しいと思われるかもしれないので、このビデオを組み合わせて、私にとって素晴らしいすべての見解を共有したいと思って、このトピックを開きました。それがあなたにインスピレーションを与えることも願っています。ご意見がございましたら、コメント欄にご記入ください。

魂の拷問

スピーチの始めに、2人の大男は最初に一連の魂の拷問を投げました。

完全に独立してプログラムし、誰とも協力しない人は何人いますか?完全に独立してプログラムしたい人は何人いますか?

コードレビューを開発に必要なプロセスの1つと見なしている人は何人いますか?

他人の前で犯罪を犯したくない人は何人いますか?

あなたがすでにプログラマーであるなら、あなたの答えはほとんどの人と一致しているべきだと思います。コードレビューなどのレッドテープは嫌いで、自分たちでコードの品質を保証するだけで十分ですが、なぜ他人の試練をそんなに受け入れるのでしょうか。低レベルのミスでバカに見えることもありますが、ミスは避けられませんね。

大物は直接意見を述べませんでしたが、Googleでは、すべてのコードをマージする前にコードレビューする必要があるという事実を示しました。実際、これらの質問は、コードレビューの重要性を強調するものではなく、私たちの精神を苦しめるためのものであり、人々との協力についてどれほど寛容であるかを示しています。

洞窟から

一部のアメリカのドラマや一部の映画では、プログラマーは洞窟に隠れている原始的な人々として描かれることがよくあります。彼らは自分たちだけが知っていることをいじくりまわしましたが、ある日突然、世界を変える素晴らしい製品を思いつきました。

たとえば、マーケティングアカウントでは、Linuxシステムカーネルを作成したLinusや、Windowsシステムを作成したBillGatesなどについて言及することがよくあります。多くの正体不明のプログラマーはとても自称しており、彼らの心はそのような原始人になりたがっています。しかし実際には、世界でよく知られている、または広く使用されているソフトウェアやプログラムは、1人の人間によって作成されたものはほとんどありません。LinusはLinuxシステムを作成していません。彼が行ったのはシステムカーネルであり、Guidoも作成していません。 。完全なPythonを作成します。これらのマーケティングホーンによって唱えられた物語はすべて間違っています。

一人暮らしをしたいという願望や一人で戦うという願望は、多くのプログラマーの内なる欲求かもしれませんが、これは実際には間違っています。ベンは、Subversionの開発を担当しているため、Subversionはコードバージョン管理に使用されるGitに似た製品であると述べました。彼は、彼らが毎年受け取るフィードバックのほとんどは、私の提出物の一部を隠すことができる機能を作ることができるかどうかだと言いました。コードに問題がないと思うまで、リポジトリ全体を非表示にできますか?リポジトリ内のすべてのコードをクリアする機能を提供できますか?前のコードはバカすぎると思うので?

これらのフィードバックを書いたのはすべてGoogleのエンジニアであり、世界で最も天才的な場所であると主張していることを知っておく必要があります。このように、トップ企業のトップエンジニアは、自分のコードが愚かであると感じ、他の人からコードを隠したいと思うでしょう。これは実際、精神性と強さが互いに何の関係もないかもしれないことをある程度示しています。いわゆる強いという考え方も弱いかもしれません。

バスファクター

大物は私たちが原始的な人になることはできないと率直に言っていませんでした。私たちは他の人とコミュニケーションをとるために洞窟から出て、チキンスープか何かを私たちに与える必要があります。彼らはバスファクターと呼ばれる非常に興味深い理論を提唱しました。

この理論はどういう意味ですか?あなたが開発チームに所属していると想像してみてください。このチームには、設計と技術の詳細をすべて知っている強力なエンジニアがいます。ある日、仕事に行くとバスにひかれて二度と仕事に来られなくなった。このグループはどうなりますか?一晩で崩壊することはないかもしれませんが、それは間違いなく大きな困難に直面するでしょう。それはあなたにとって非常に苦痛であるに違いありません、そして無数の問題は解決することができません。

コアプログラマーが離れたり離れたりする原因となるのは、必ずしも自動車事故ではありません。他にも多くの理由があります。たとえば、彼は結婚している、子供を産んでいる、宝くじに当選しているなどです。コアプログラマーが何らかの個人的な理由で辞任すると、チームは混乱に陥ります。これは、このチームのバスファクターが非常に高いことを示しています。つまり、多くの技術的信頼関係が同じ人物にあるのですが、逆に、コア人材の離職がショックや津波を引き起こさない場合、そのようなチームのバスファクターは非常に低く、つまり、リスクに抵抗する能力は非常に強力です。

では、どうすればチーム内のバスファクターを減らすことができますか?大物はそれをはっきりとは言いませんでしたが、答えはすでに見えています。それは、洞窟から出て、他の同僚とコミュニケーションを取り、お互いにコードレビューを行い、お互いが何をしているのかを知ることです。

あなた自身を手放す

一人で優れた製品を作ることは不可能であり、業界のリーダーになることも不可能です。私たちの登山と成長のプロセスには、他の人とのコミュニケーションとお互いからの学びが伴う必要があります。これを恐れないでください。

フィッツは、お互いを知らないエンジニアのグループが集まって素晴らしい製品を完成させた、Apacheオープンソースコミュニティの例を引用しました。しかし、このプロセスでは、コードよりも人の方が重要です。これらのコードは薄い空気から作成されたものではなく、突然大量のコードを薄い空気から取り出しても意味がありません。理にかなっているのは、エンジニアのグループのインスピレーションが衝突し、互いに刺激し合うことです。彼らは皆、自分たちが素晴らしいことをしていると感じ、お互いが自分たちのしたことを誇りに思っています。このプロセスでは、誰もが自分自身を置き去りにします。

彼は英語で自分を置くために、自己と自尊心を意味する自我を落とすのを使いました。私たちが自分自身を手放したときだけ、私たちは他人の考えを受け入れることができ、集団やコミュニティに統合することができ、私たちは今していることを誇りに思うことができます。

学び、コミュニケーションを続ける

私は自分でAndroid開発を8年近く行っています。2013年にJavaがAndroid開発に切り替わりました。私は小さな工場にいて、HuaweiやOPPOなどの大規模な工場にも行ってきました。19年5月に入学しました。今までのByteDance。

優秀な同僚に加えて、ByteDanceには大企業の内部文書や資料が豊富にあることがよくあります。同時に、社内でも優秀な記事をたくさん見てきましたし、優秀なテクニカルサロンやシェアリングもたくさんあります。過去2年間考えてみると、何度か行ったことがなく、記事や資料もあまり読んでいません。また、推奨分野としては、近年、大企業、特にアリ、ファーウェイ、今日頭条を中心とした国内大企業からの質の高い論文が多く出回っています。公文書以外にも、社内には技術関連の資料や資料がたくさんあり、とても貴重でとても貴重です。

過去8年間のAndroidの具体的な学習ルートとメモを共有しましょう。プログラマーが自分自身を手放し、学習とコミュニケーションを続け、テクノロジーの向上に関心のある友人を支援できることを願っています

以下の完全な学習ノートPDFは、ここをクリックして無料でダウンロードしてください。

Androidプログラマーとして、ゲームを破る方法!独自のアーキテクチャ知識システムのセットを構築することは特に重要です。

第一線のインターネット巨人のためのAndroidアーキテクチャの高度な学習ルート

  • 建築家は言語の基盤を構築します

現在、Android APP開発の主流言語はJava言語です。Java言語の最大の特徴は、ソフトウェアの相互作用の可能性を高めることです。Android携帯のほとんどすべてのアプリケーションはJava言語で書かれていると言えます。

知識のポイント:
1。Javaジェネリックの詳細な理解
2.詳細な説明の説明
3.並行プログラミング
4.データ送信とシリアル化5.Java
仮想マシンの原理
6.効率的なIO

画像

  • デザイン思考のためのオープンソースフレームワークの解釈

インターネット企業の継続的な発展に伴い、製品プロジェクトにはますます多くのモジュールがあり、ユーザーエクスペリエンスの要件はますます高くなっています。小さなステップと高速な反復の目的を達成することはますます困難になっています。プラグイン技術が生まれます。プラグイン技術がない場合、MeituanやTaobaoなどの多数の「アプリ」を統合するアプリケーションは数gにもなる可能性があります。

したがって、今日のAndroidモバイル開発は、ホットフィックス、プラグイン、またはコンポーネント化されておらず、インタビューの80%以上が合格しません。

知識のポイント:
1。ホットフィックスの設計
2.プラグインフレームワークの設計
3.コンポーネントフレームワークの設計
4.画像読み込みフレームワーク
5.ネットワークアクセスフレームワークの設計
6.RXJavaレスポンシブプログラミングフレームワークの設計

画像

  • 360°オールラウンドなパフォーマンスチューニング

さまざまなレベルの開発エンジニアの手に渡ると、技術レベルが不均一であるため、多くの携帯電話が非常に高いソフトウェアパフォーマンスで実行されている場合でも、アプリケーションを開く際に遅延が発生します。

また、商品内容の反復により、機能がますます複雑になり、UIページがますます豊富になり、円滑な運用の障害にもなっています。要約すると、APPのパフォーマンスの最適化は、開発者が持つべき包括的な品質になりました。また、開発者が高品質のアプリケーション作業を完了することを保証します。

知識のポイント:
1。設計のアイデアとコード品質の最適化
2.プログラムのパフォーマンスの最適化
起動速度と実行効率の最適化
レイアウトの検出と最適化
メモリの最適化
電力消費の最適化
ネットワーク送信とデータストレージの最適化
APKサイズの最適化

3.開発効率の最適化
分散バージョン管理システムGit
自動構築システムGradle

4.プロジェクトの実際の戦闘
起動速度と
流暢さ
DouyinのAPKパッケージサイズリソース最適化の実践
Youkuレスポンシブレイアウトテクノロジーの完全分析
ネットワーク最適化
モバイル淘宝網ダブルイレブンパフォーマンス最適化プロジェクトシークレットAutoNaviAPP
フルリンクソースコード信頼性分析による
完全な殺害
OOMExperience共有WeChatAndroid端末メモリ最適化プラクティスの実際の戦闘

画像

  • Androidフレームワークアーキテクチャ

Androidフレームワークアーキテクチャ(高度なUI + FrameWorkソースコード)この知識は現在最も多くのユーザーであり、2013年から2016年までAndroidのテクノロジーと呼ばれています。

Android開発者は、インターネット上でコードをコピーすることに慣れているため、この頻繁に「使用される」コードに精通していることがよくあります。慣れ親しんだ人は、ほぼ毎日それらを処理し、コードを毎日コピーしています。不慣れなのは、これらのコードを使用しているにもかかわらずです。毎日コードを扱っていますが、私はこれらのコードの原理とコードの深さの意味を深く研究していません。

知識のポイント:
1。高度なUIプロモーション
2.Androidカーネルコンポーネント
3.大規模プロジェクトに不可欠なIPC4
。データの永続性とシリアル化
5.フレームワークカーネル分析**

画像

  • NDKモジュール開発(オーディオおよびビデオ開発シリーズ)

NDK(Native Development Kitの略)は、AndroidアプリケーションでCおよびC ++コードを使用できるようにするネイティブプログラミングインターフェイスに基づくソフトウェア開発キットです。このツールによって開発されたプログラムは、仮想マシンではなく、ローカルで直接実行されます。

Androidでは、NDKは一連のツールのコレクションであり、主にAndroidSDKを拡張するために使用されます。NDKは、開発者がCまたはC ++ダイナミックライブラリをすばやく開発するのに役立つ一連のツールを提供し、Javaアプリケーションをapkに自動的にパッケージ化できます。

知識のポイント:
1。NDKによって開発されたC / C ++の概要
2.JNIモジュールの開発3.Linux
プログラミング
4.低レベルの画像処理
5.オーディオとビデオの開発
6.機械学習

画像

  • フラッター学習が進んだ

2020年は間違いなくFlutterテクノロジーが本格化する年です。今でもこの技術は非常に価値があります。

すべてのモバイル開発者は、スーパーアプリから独立したアプリまで、純粋なFlutterからハイブリッドスタックまで、Flutterによってもたらされる「迅速な開発、表現力豊かで柔軟なUI、ネイティブパフォーマンス」の機能と概念に夢中です。開発者私たちはFlutterの探索と適用に熱心ですさまざまなシナリオでのテクノロジー、そして私たちはさまざまなさまざまな課題にも直面しています。

知識のポイント:
1。Flutterクロスプラットフォーム開発の概要
2.WindowsでのFlutter開発環境の構築
3.最初のFlutterAPPの作成4.FlutterDart
言語システムの使用開始**
……

画像

  • WeChatアプレットの開発

最も人気のあるプログラミング開発アプリケーションシナリオの1つとして、WeChatアプレットは市場で非常に人気があり、多くの開発者を貪欲にしています。しかし、初心者にとっては完全に途方に暮れています。WeChatアプレットの開発と作成でどのような知識を学ぶ必要があるのか​​わかりません。困っている友人はこの記事を参照できます。

この記事の主な知識ポイント:
1。
アプレットの概要と紹介2.アプレットのUI開発
3.API操作
4.ショッピングモールプロジェクトの実際の戦闘

画像

情報の完全版はPDFファイルにまとめられており、興味のある友人はここをクリックしてすばやく入手できます。みんなを助けたいです!

おすすめ

転載: blog.csdn.net/weixin_43901866/article/details/114434326
おすすめ