TwitterインターンからフルタイムのTwitterソフトウェアエンジニアに移行して学んだこと

より多くのコーディングと成長!

UnsplashのJoshua Earleによる写真

*カレンダーを見る*おっ!もう6ヶ月ですか?! Twitterインターンシップの初日に、トンネルの終わりを見るのに永遠に時間がかかることを知っていましたが、ここにいます。私はTwitterのフルタイムエンジニアです!!

それは間違いなく短距離走であり、想像以上に多くを学びました。ほとんどの知識を吸収できてうれしいです。ここで、プログラムを完了した経験について時間をかけて書きたいと思います。ほとんどのインターンシッププログラムには、フルタイムの雇用への簡単な道筋があります。そこで、私が経験したいくつかの段階、直面した落とし穴を強調し、学んだことすべてを振り返りたいと思います。この投稿からコーディングの旅の1人を支援できる場合は→!!

注:Twitterのインターンシップに参加した方法に興味がある場合は、そのストーリーをここで見つけることができます。入隊した空軍からソフトウェアエンジニアインターン@Twitterに行った方法

興奮

Twitterにインターンすることに気付いた途端、私は世界最大のエンジンのように感じました。エネルギーに溢れ、残念ながら私の道に着陸するのに十分なプロジェクトを征服する準備ができていました。

例外として、エンジンは車の残りの部分なしでは何もありません。そして、あなたが完全な車として現れる可能性は低いです。以前にエンジニアとして働いたことがある場合でも、会社によって異なることがあります。しかし、実地訓練はあなたの新しい親友になります。これを少し使えば、すぐにクルージングできます!

私は最初の日にTwitter HQに引き上げました。画像ソース。

車の残りの部分を構築するための最初のステップは、新入社員オリエンテーションでした。 Tech Company XYZがFreeCodeCamp計算プロジェクトのスタックを基にしていないことに気づいたのはここです。

Twitterでのオリエンテーション週間中、エンジニアにはTwitterの仕組みの概要と、それを実現するために各要素がどのように連携するかの詳細が提供されます。

最初は、これは非常に複雑なタイプの感情を呼び起こします。 actually実際に作業を開始した後は、はるかに理にかなっています。突然、プロジェクトに取り組み、オリエンテーションで聞いたことを覚えているものに出くわします。スタックのすべての部分に飛び込む必要性を感じたり、考えたり、求めたり、考慮したりしないようにしてください。

それでも、これらの高レベルの説明は役に立ちます。彼らは、あなたが全体像とあなたのチームが会社の使命にどのように貢献するかを見るのを助けます。だから私は始めたいと思っていたが、落ち着く時間を自分に与えれば、もっとスムーズに成長することができたでしょう!

初心者

まったく新しい業界で新しい会社を始めて、まったく新しい仕事をすることは私にとって大きな変化でした。突然、基本トレーニングを始めたように感じました。始めたとき、私はMacの使い方も知りませんでした。私はずっとPCパーソンでした。新しい雇用者として価値を提供したいので、それはかなり怖い感じです。代わりに、時にはかなり役に立たないと感じることができます。ただ我慢してください。この忍耐がないことは、私が最初に始めたときに対処する最も困難なものの1つでした。

ソース

私が言ったように、あなたはこのエンジンを手に入れる準備ができています。しかし、あなたが世界を引き継ぐ前に、やらなければならない仕事が少しあります!忍耐強くなることで、生産性が向上します。また、学習中に酸素の無駄のように感じることもありません。

ビルドアップ

生産性を上げるために必要なスキルを強化するには、それらを段階的に分割する必要があることを知っていました。私は最初に最も必要なスキル、いくつかの生産性向上スキルなどを学びたかった。

私が最初に抱えていた問題は、これらの段階でどのスキルを最初に学ぶべきかを考え出すことでした。学べることは圧倒的でした。私を取り巻く新しいところがたくさんありました!しかし、私が成し遂げようとしていたものに関係するのはごくわずかな部分だけであることを知っていました。

参考までに、今後6か月間に使用するテクノロジーの大部分を使用したことはありませんでした。 Gitを除いて、わかりました。それ以外は、新しい惑星にいるような気がしました。

最終的には、新しいIDEの使用方法を学ぶことが最初の目標になりました。使用するエディターはIntelliJと呼ばれ、非常に多くのボタンがあります。以前はAtomを使用していました。別の大きなスイッチ!

これは、IntelliJが最初に私に見えた方法です。ソース

やっとコードを書く準備ができたとき、私の最初の本能は、慣れ親しんだ小さなプロジェクトをどうやってやるかを考え出すことでした。基本的に、私の新しいツールを使用して翻訳プロジェクトを行います。そのため、ここでは、コンソールに印刷するために、helloWorld Scalaプログラム(はい、これを小さなプロジェクトと見なします)にアクセスしようとしました。再びFreeCodeCampの初日であるかのように感じました。

そのプロジェクトが機能するようになってから、より大きな練習プロジェクトを受け取りました。唯一の問題は、新しいツールを使用してこのプロジェクトをビルドおよびテストする方法がわからなかったことです。さらに気が狂ったのは、この練習プロジェクトを以前に構築したことです(Bit.lyスタイルのURL短縮)。そのため、ロジックを実装する方法を知っており、データを永続化することさえできました。しかし、Atom、NPM、MongoDB、NodeJSがなければ、私は失われました!少なくとも、私はこの時点でMacをナビゲートするのにまともだった。

新しい言語(Scala)とIDE(IntelliJ)を同時に学習すると、少し遅くなりました。言うまでもなく、生産性を「感じる」のは時間がかかりました。

振り返ってみると、今学習するトピックと、後から掘り下げるトピックを並べ替えて優先順位を付けることが非常に役立つことを学びました。実際には、学ぶ必要のないものをすべて取り除き、残っていることに集中する方が簡単かもしれません。

掘り下げてみると、少なくとも2つまたは3つのことがありました。もし最初からやり直すことができたら、いくつかのIntelliJチュートリアルだけで始めていたでしょう。このようにして、少なくとも単純なプログラムを実行し、環境を試すためにそれらを変更することができました。これは簡単なことのように聞こえるかもしれませんが、聞いたことのない50の事柄で攻撃された場合、それらをふるい分けるのは少し難しいです。

どのルートをとっても、時間とともにすべてが一緒になります。停止しないでください。どれだけ効率的になりたいかだけです! (プリウスまたはヘルキャット?)それを知る前に、私は実際にプロジェクトを構築していました!私が感じた喜びは最高でした。私は、IntelliJを使用してScalaコードを記述し、さらに簡単な機能の使用方法をグーグルせずにMacを使用していました。間違いなく「W」ですが、まだ休む時間ではありません!

詐欺師

このセクションでは、多くの人が経験したかもしれないトピックについて触れます。まだ行っていない場合は、1日行う場合に備えて少し注意してください。このトピックは詐称者症候群です。かなりの数の形式がありますが、それらはすべてあなたが能力があると感じないようになります。奇妙な部分は、物事を成し遂げたり、自分自身に繰り返し自分自身を証明した実績がある一方で、これを体験できることです。

新しいプロジェクトに取り掛かるたびに、それを経験します。どんなに小さなプロジェクトであっても、ほぼすべてのプロジェクトに対応できるようになっています。各プロジェクトの前に私が持っているこの知識のギャップは、私が不十分だと感じさせます。これは自然に「私はここに属しますか?」という精神状態につながります。そして、私はついにその理由を見つけたと信じています!

私が正式なCS教育を受けていない、またはコードブートキャンプのトレーニングさえ受けていないという事実は、その一部です。つまり、私は完全な初心者ではないことを知っていますが、CSのコア知識の断片が欠けていることも知っています。しばらくの間、私のCS知識はスイスチーズのように感じました。しかし、時間が経つにつれて、私はそれらの知識のギャップの多くを埋め、より多くの自信を得ました。

しかし、これが詐欺師のような気持ちの終わりだったと言うことではありません!私が新しいプロジェクトに直面するたびに、インスタター症候群が再浮上するでしょう。 eventuallyやがて、このリサーフェシングは、特定のプロジェクトまたはコードベースに0%〜25%慣れていることに起因することがわかりました。これは「まあまあ」タイプのように聞こえますが、プロジェクトに割り当てられたとき、私の脳はただレースを開始し、どのように取り組むかを理解します。私の脳はフィニッシュラインについて考えていますが、同時にプロジェクトの複雑な部分をすべて理解していないこともわかっています。だから私の脳は「ブロ、私たちはここで何が起こっているのかわからない」と言っています。

コードを掘り下げてドキュメントを読んだ後、「これだ!」に戻ります。みなさんに追いついてください。 私にとって、上記のアナロジーは、私が詐欺師のように感じ、時にはそれを感じることがある理由の大部分です。これをもっと理解できたので、自分の脳で議論し、リラックスして追いつくことができます。詐称者症候群を経験する人は誰でも、私たちが常に「追いつく」ことを知っています!

私のアドバイス

今、私のインターンシップは最高でした!私は多くを学びました。しかし、私が受け取った最も重要なフィードバックを省くために、私は皆を傷つけています。もちろん私は完璧ではありません! 6か月の実習中に受け取った最も一般的なフィードバックのリストを以下に示します。

  1. メモを取ります(良い思い出がありますが、さまざまなことについての会議の後、いくつかのことを忘れることができます)。 Slackでチームメイトと話すのは最高でした。いつでも24時間年中無休でスクロールして詳細を確認できます。会話ごとにそれがあればいいのに。 そうそう、ノートブックまたはGoogleドキュメント。
  2. 質問をするとき、チームメイトにもっとコンテキストを与えます。これは新しいエンジニアにとって共通の問題だと思います。他の人が同じファイルで、同じコード行で作業しているかのように時々質問します。そして、驚くことではありませんが、私の質問に対する間違った答えではないにしても、混乱を招きます。電話で誰かに電話して、「おい!家に道順を教えてもらえますか?」 (もちろん、Googleマップ、GPS、およびそのようなものの前に)しかし、「私はBlahとBlahの交差点にいて、西に向かって家に帰ろうとしている」と言うなら、彼らは間違いなくもっと助けてくれるでしょう!彼らがマップを持っている場合、彼らのより上級のエンジニアリングの頭脳!
  3. 剣闘士にならないでください!ソフトウェア開発はチームスポーツです。しかし、自分を証明しなければならないという気持ちを揺るがすことができませんでした。チームとして働きたくなかったわけではありませんが、自分でプロジェクトを処理できることを示す必要があると感じました。唯一の問題は…..私はこれをする必要がなかった。自分を証明するというこの強迫的な使命は、私が2回目のインターンシップで唯一の主要な負のフィードバックと考えるものを受け取ることになりました。スタートアップを作成しているのでなければ、あなたをサポートするチームが必要です!彼らと一緒に働くと、誰もが利益を得ます!

ボーナス:質問をする際により具体的にすることに加えて、あなたが持っているかもしれないすべての質問をするようにしてください。これは、ここで私たちにコードを教えるための非常に役立つアドバイスです。

あなたの知識が現在のジュニアソフトウェアエンジニアと比較されるかどうかを確認するためのクイズはありません。率直に言って、あなたはあなたが知らないことを知りません。そして、私たちのほとんどがこれを真実だと受け入れているように感じます。

これは、一般的なエンジニアリング知識のように聞こえる何かを聞くまで問題ではありません。他のエンジニアがチャットするのを聞いたことがあり、「私はおそらくそれを知っているべきだ」と思っているなら、これが私が話していることです。

結局のところ、あなたが知らないなら、それは全く問題ありません。実際のところ、上級エンジニアの何人かは、私が考えていた正確な質問をします。次に、すべてのエンジニアがすべてを知っているわけではないことに気付きます。その後、チームの各メンバーが十分な量を知っていることがチームを強力にするものであることがわかります。そして、質問と共有が残りを行います!あなたが知っておくべき基本的なものであるトピックを恐れて座ってはいけません。離れて尋ねる!!

結論

正直に言うと、このインターンシップに向かうとき、私は何を期待すべきか分かりませんでした。ある時点でコードを書くだけです。私は技術で働いたことも、ソフトウェアを開発するチームで働いたこともありませんでした。

全体として、私はそれが完全に行ったと思います。私が受け取った成功と建設的なフィードバックから。軍から来ることは間違いなく面白くなりました!特に、何年にもわたって注文に従うようにトレーニングされた後、日常のワークフローのほとんどを突然決定する必要があります。

いつ出勤するかを尋ねると、マネージャーは「いつ入社したいですか」と言います。

しかし、いつものように、私はそれを理解するだろうと知っていました。私たちがはげかかって混乱し、1.5秒でランダムなものを見つけなければならなかったときの基本的な軍事訓練と同じです。今だけ私はaldげていません。

実際に軍隊から学んだことはたくさんありますが、私は技術の面で大いに役立つと感じています。ただし、別の投稿のために保存します。また、私の旅で私を助けてくれたすべての人と、彼らから離れた時間に対処してくれた家族にも感謝したいと思います。文字通り、小さな村が私を偉大なエンジニアに育てるような気がしました。サポートシステムに感謝し、幸運です。読んでくれてありがとう!