技術の学位や仕事の経験がなくても、フルスタックの開発者の仕事に就いた方法

6か月前、私はスタートアップのフルスタックWeb開発者として最初の開発者の仕事に就きました。私には、関連する仕事の経験も、技術の学位も、1年のアクティブなコーディングの経験もありませんでした。それでも私はなんとか夢のオファーを上陸させることができました、そして今日私の人生で初めて私は私の仕事を愛していると言うことができます。これが私がそれをした方法です—長いバージョン。

パート1:クォーターライフ危機を受け入れる

約3年前、私は猛烈なクォーターライフ危機の真っ只中にいました。私はビジネススクールを卒業し、魅力的な投資銀行の仕事に就き、それについてのすべてが嫌いだと気づいた後、わずか数か月で同じ仕事を辞めました。

完全に失われ、かなり決まり文句で、私は「自分自身を見つける」ために数ヶ月間一人旅に出かけました。そして、私はそう思ったが、しなかった。とにかく十分ではありません。しかし、それは実際に私がいくつかのことを理解するのに役立ちました。

まず第一に、私は単に金融のキャリアを追求し続けることができなかったということでした。それが私を幸せにする将来のシナリオを私はただ見ることができませんでした。

2つ目は、バックパッキングとサーフィンは素晴らしいことですが、私が探していた「呼び出し」を見つけるのに役立たないということでした。行うべき唯一の合理的なことは、古典的な試行錯誤の方法のように思われました。

それで、家に帰ったとき、私は私を幸せにすると同時に、ある種のまともな生活を提供するかもしれないと思ったいくつかのことを試してみることにしました。そして試行錯誤でした。

まず、真面目なショットを書いてみようと思いました。それで私はオンラインビジネス雑誌のためにパートタイムで執筆と編集を始めました。しばらくはかなりクールでした。ペースの速い編集局で週3日働き、ビジネス、金融、テクノロジー、持続可能性に関連するあらゆることについて執筆しています。

同時に、旅行中のフリーランサーとしての生活についてもたくさん聞いていたので、やってみようと思いました。それで私は自分の会社を設立し、すぐにいくつかのビジネスアナリストプロジェクトに出くわしました。もちろん、自分の上司であることは最初はとてもエキサイティングで、文字通りどこからでも仕事ができることは私にとってまったく新しいことでした。

私はこのように約8か月間続け、ライター/編集者とフリーランスのビジネスアナリストを兼務しました。しかし、やがて私は雑誌での仕事に興味を失い始めました。

デジタルコンテンツを扱う正気の人なら誰でも知っているように、クリックベイト文化は創造性と品質を犠牲にしてやって来ます。言い換えれば、コンテンツの主なインセンティブがクリックである場合、それらのクリックを追い詰めるために必要なすべての最上級は、そもそもそこにあった創造的な野心をすぐに使い果たしてしまいます。その上、私は作家/編集者として、私が報告している行動から常に遠すぎたという感覚を揺るがすことができませんでした。

だから私はやめました。試行錯誤の末、大丈夫でした。しかし、私が実際に執筆全体に8か月を費やしたので、それはまだくだらないと感じました。しかし、賢い人が言ったかもしれないし、言わなかったかもしれないように:1つのドアが閉じると、別のドアが開きます。

そして、試行錯誤のリストにもう1つチェックすべきことがありました。

パート2:私の人生を変えたランチ

人生は奇妙であり、時にはそれはあなたが最も期待しない場所で最大の、最も人生を変えるインスピレーションを隠すでしょう。コーディングへの最初の「引き」を経験したとき、それは確かに私にとってそのようなものでした。

雑誌での仕事を辞めることは失敗のように感じましたが、結局のところ、経験は完全に無駄ではなかったことがわかります。テック系スタートアップや起業家のエキサイティングな生活について多くのことを書いた後、私はそのライフスタイルにも挑戦することに夢中になりました。

そして、約1か月の調査と就職活動の後、北欧で最も有望なFinTech企業の1つに就職することができました。わずか数年で、ヨーロッパ最大の株式クラウドファンディングプラットフォームの1つに成長しました。

私は実際に特定の求人に応募していませんでした。しかし、私は会社の使命を本当に信じており、彼らの成功に感銘を受けたので、CFOに連絡してそのことを伝えたいと思いました。私たちは何度か会いましたが、突然、かなりあいまいな事業開発の役割でそこで働いていました。

戦略的で分析的なプロジェクトに取り掛かることを望んでいましたが、結局、あいまいなビジネス開発者が通常行うこと、つまり販売を行うことになりました。この仕事も結局うまくいかなかったのもそのためです。

しかし、それだけではありません。

雑誌の最後の仕事の経験のように、この仕事もすべて無駄ではなかったことが証明されるでしょう。実際、それがなければ、私はおそらく今日の開発者ではないでしょう。そこでサンドラに会いました。

彼女は製品チームのフロントエンド開発者であり、当時私たちが窮屈だった小さなコワーキングオフィスの反対側に座っていました。

技術的には私たちは同僚でしたが、機能不全のテクノロジー企業で働いていた人なら誰でも知っているように、営業チームから製品チームまでの距離は銀河のように感じることがよくあります。

経営陣が開発チーム全体をウクライナのリモートチームにアウトソーシングすることを決定したことも役に立ちませんでした。つまり、サンドラと他のすべての開発者は手放され、多かれ少なかれ2か月前に通知を出していました。

この距離にもかかわらず、ある日サンドラと私は一緒に昼食をとることになりました。基本的にはプロの開発者との初めての本当の会話であり、本物の好奇心と加速する実存的危機が混ざり合って、昼食が多かれ少なかれインタビューに変わったと思います。

そして、私たちの昼食は、私にとって完全に人生を変える経験になりました。より具体的には、3つの啓示がそれを実現しました。

  1. 彼女がウェブ開発の「本当の」教育を受けていなかったことを知ってショックを受けました。当時の私にとっては、学位にほかなりません。彼女が知っていることはすべて、freeCodeCampやCodecademyなどのMOOCプラットフォーム(Massive Open Online Courses)から学びました。
  2. 彼女は私と同じように、金融のバックグラウンドを持っていると私に言いました。実際、彼女は数年前からフロントエンドのインターンとして私と同じスタートアップに参加するまで、数年間ビジネスコントローラーとして働いていました。
  3. わずか6か月のコーディング経験で作成したポートフォリオページを見せてくれたとき、信じられませんでした。信じられない事でした。

その昼食は私に可能性の世界を開いた。サンドラの話は私をもっと欲しがらせた。

そこで私は何週間もの間、人々が開発者になるためにたどったさまざまなタイプの道を調査しました。私はあらゆる種類のフォーラムや記事に行き着きましたが、その多くはここMediumで見つけました。

たとえば、Stackoverflowの年次開発者調査(10万人のインタビュー対象者)によると、プロの開発者の半分だけが学士号を取得しており、この半分のうち、3分の1はコンピューターサイエンスやソフトウェアエンジニアリングとはまったく関係のないことを専攻していました。

読めば読むほど、自分の教育の定義がいかに狭かったかがわかりました。あなたがソフトウェア工学のような複雑な何かに侵入するコンピュータサイエンスの学位を必要としなかった場合は、何でしたあなたはのための学位が必要?当時は見えなかったかもしれませんが、今では学術制度がいかに壊れているかがはっきりとわかります。

それはあなたが1つの工芸品を専門とし、それからあなたの人生の残りの間それらの同じスキルを使うであろう労働者の産業時代のために設計されました。それは確かに今日の知識社会のために設計されたものではありません。世界の歴史のすべての情報が数回クリックするだけで、物事が急速に変化するため、教育は実際には生涯にわたるプロセスであり、学習ではありません。 -一度使用-永遠に1回限りの経験。

しかし、それだけでも記事としては十分な大きさのトピックです。サンドラとのその昼食についての重要なことは、それが私の中で何かに火をつけ、そして私が現在の半ばのビジネスキャリアであると思った破壊的なループから抜け出すように私を動機づけたということでした。

私はいつも周りのプログラマーをうらやましく思っていましたが、数年前にPython 101サマーコースを受講したとしても、それが私にとって実行可能なキャリアパスだとは思っていませんでした。少なくとも3〜5年間大学に戻らなければなりません。

だから、このサンドラを読んでいるなら、ありがとう!この記事で私があなたが私にインスピレーションを与えた方法でたった一人の人にインスピレーションを与えることができるなら、私はそれを書く努力が千回返済されると思います。

パート3:私に6,000ドルかかるテキスト

次の数か月間、CodecademyやfreeCodeCampなどのオンラインプラットフォームで数百時間を費やしました。有料プラットフォームのCodeSchoolのサブスクリプションも購入しました。

自分の目標が何であるかを本当に知っているかどうかはわかりません。私が始めたのは、私の繰り返しのキャリアの失望の絶望でした。しかし、私を動かし続けたのは、コーディングの演習がいかに途方もなく楽しくてやりがいがあるかということでした。

コーディングがカジュアルなサイドプロジェクトから真面目な「私はプロの開発者になる」に変わったのはいつのことか、私にはわかりませんでした。しかし、それはおそらくこのあたりのどこかにありました。次の人生を変えるイベントが発生したとき、freeCodeCampからフロントエンド証明書を受け取るところだった。

ビジネス開発者としての仕事を辞めた後、私はスウェーデンの冬である凍てつくような危機から脱出し、中央アメリカに旅行に行くことにしました。コーディングを自分で学んで何百時間も一人で過ごすつもりなら、どこか暖かくて安くて気のめいることのない場所でやったほうがいいと思いました。

友人のマリーからテキストメッセージを受け取ったとき、私はエルサルバドルのホステルでラップトップでコーディングしていました。

"職を得た!" と言いました。

マリーはコーディングの仕方も学んでいました。数ヶ月前、彼女が通ったこのコードスクールについて彼女がどのように私に話していたかを思い出しました。「コーディングブートキャンプ」。

当時、私は基本的に彼女をあざけっていました—そうです。12週間のコースに5,000ドル支払うつもりですか?そして、あなたはそれに対して単一の大学の単位を受け取っていませんか?そして、あなたはこれを行うためにあなたのトップティアのMBAを中退しましたか?合法的に聞こえます。

それでも彼女はそこにいました。4か月後、マリーはアクセンチュアのデジタルエージェンシーの1つにジュニアバックエンド開発者として正式に採用されました。私は彼女に本当に幸せでしたが、もちろん非常に嫉妬していました。

私は自分がしていることをやめ、いくつかの計算をしました。現在のペースを維持でき、平均して1日あたり約6時間、週に約5日コーディングできれば、週に30時間実行できます。したがって、freeCodeCampの完全な1,200時間のプログラムを完了するには、少なくともあと8か月かかります。そして、それは私がペースを維持することができればです。お金がなくなって、すぐにスウェーデンに戻って新しい仕事に就かなければならなかったので、私は間違いなくできませんでした。

私は最初からマリーと同じ道を進んでいなかったので自分を蹴り、4か月間バックパッキングする代わりにブートキャンプにお金を費やしました。さて、やったことはやった、と思いました。私はまだ、ブートキャンプが十分に早く雇用可能なレベルに到達するための最良の選択肢であったという事実を受け入れる必要があります。

古き良きGoogleの調査に戻ります。

ある意味、サンドラとの昼食後、始めたところに戻ったような気がしました。今回だけ、ブートキャンプの現象全体を新鮮な目で見ました。マリーの話を知っていたので、それらのすべてがあまりにも良すぎる詐欺ではなく、実際に業界に参入するためのもっともらしい方法であることを私は知っていました。

その後、Stackoverflowの年次開発者調査は、コーディングブートキャンプの卒業生の88.1%がブートキャンプを終えてから1年以内に採用されたという統計で再び私を安心させました。

SwitchupとCoursereportのおかげで、フランスのコーディングブートキャンプスタートアップのサクセスストーリーであるLe Wagonを発見するまで、それほど時間はかかりませんでした。世界中に15以上の場所があり、両方のランキングで上位5位にランクされています(執筆時点では、実際には#両方に1つ、27か所あります!)。

Hack Reactor、Ironhack、General Assembly、NYCDAなどの代替品と比較した後、いくつかの主な理由により、他のものよりも好まれました。

  • 比較的低価格(当時は6,000ドル)。
  • 起業家精神と製品開発に焦点を当てています。
  • グローバルな存在感とコミュニティ。

それにもかかわらず、私はまだプログラムについていくつかの疑問を持っていました。

  1. バックエンド言語RubyとMVCフレームワークRailsの選択。これは他の認められたブートキャンプの間ではかなり一般的であるように見えましたが、このテーマについて私が読んだほとんどすべての記事は、Javascriptが本当に熱く、雇用主が探していたものを示唆していました。たとえば、私の友人のマリーのブートキャンプは、Node.jsとExpress.jsに基づいたバックエンドスタックを教えていました。両方のJavascriptベースのテクノロジー。いくつかの一般的な議論は、Rubyは学習に最適な言語であるように思われましたが、NodeとExpressは、雇用主がはるかに高く評価するスキルでした。Rubyは本当に賭けるべき馬でしたか?
  2. コースの9週間の期間は少し短いようでした。ほとんどの競合するプログラムは少なくとも12週間であるように見えましたが、それはすでに短すぎて雇用可能なWeb開発者になることができないようでした。
  3. Le Wagonは、ブートキャンプの完了後、実際の就職活動の支援を提供しませんでした。多くの競合他社は、雇用保証または一見堅実なキャリアサービス機能のいずれかを提供しました。

次のセクションの最後にあるブートキャンプ後の結論で、これら3つの疑問のそれぞれに1つずつ対処します。

しかし、私の懸念にもかかわらず、それが私の最善の選択肢であると考えたので、バルセロナの彼らの学校に応募することにしました。数日後、地元の学校のマネージャーであるガスがSkypeの面接のために私に連絡を取りました。

怠惰なサーフタウンのエルトゥンコにあるカフェで安っぽいWi-Fiに接続し、簡単なチャットをしました。しかし、それは私が予想していたよりもはるかに非公式でした。繋がっていると感じたので、もっと入学したくなりました。そして、24時間も経たないうちに、待ちに待ったメールが届きました。ガスは私に次のバッチで私を迎えて喜んでいると私に言いました、そして私が次にしなければならなかった唯一のことは私の場所を予約するために$ 1,200の保証金を支払うことでした。

それは基本的に私がその時に残したすべてのお金であり、それはエルサルバドルでの私の最後の週のために支払うことになっていた-最終的な家への旅行を含む。しかし、より厳しい予算に固執し、予想よりも早く帰国する飛行機を予約することができれば、私はそれを達成できると確信していました。

それで、少しためらった後、そして私がまだル・ワゴンに対して抱いていた懸念を思い出して、私は直感に基づいて行動し、ガスに預金を移しました。その後、少しぎこちなく感じたのを覚えています。9週間のコーディングコースに約6,000ドルを支払うことを本当に約束したのでしょうか。教育に一セントも払ったことがないスウェーデン人として、状況は非常に奇妙に感じました。

しかし、その奇妙な気持ちが興奮に変わるまで、それほど時間はかかりませんでした。少なくとも今は、近い将来、財務、販売、またはオンラインメディアでの仕事に戻る必要がないことを知っていました。同日、ブートキャンプまでの準備を始めました。

残りの3か月で、私はどういうわけか残りの$ 4,800の料金を稼がなければなりませんでした。プラス家賃と生活費。まあsh * t。

以前に相談した会社の1つに連絡したところ、幸いなことに、彼らは完璧なビジネスアナリストプロジェクトを立ち上げていました。彼らは当初4ヶ月未満の契約を受け入れなかったので、私は彼らに私が2人で仕事をすることができると説得しなければなりませんでした。どういうわけか、それはうまくいきました。

ふぅ!ちょうど一週間前、私は家に帰ることを考えずに家出旅行者でした。さて、2週間足らずでストックホルムで2ヶ月の新しいギグを始めて、それからバルセロナに移りました。確かに先のエキサイティングなもの。

パート4:バルセロナのブートキャンプ

早送り3か月.. 2017年5月1日で、教室で最初のLeWagon講義に参加しています。

私の周りには、世界中から約25人がいます。ドイツのキリアン、ベネズエラのダニエル、フランスのフランチェスカ、イタリアのアルビ、アメリカのコートニーなど。コーディングの経験がまったくない人もいれば、コンピュータサイエンスの学位を取得するまでの途中の人もいます。

地元の学校のマネージャーであるGusとRubyの教師であるRubenが、今後のプログラムの構造について説明しているのを聞いています。

私たち全員が学ぶようになると、スケジュールは非常に体系的でした。今後9週間で、6つの異なるモジュールにほぼ同じ時間を費やし、それぞれが独自のトピックを扱い、最後に独自のWebアプリの計画と開発に2週間を費やしました。

最初の1週間は、コースの内容にかなり自信を持っていたのを覚えています。freeCodeCampで何百時間も過ごした後、毎日のコーディングの課題の難易度は少し低いように見えました。

Rubyはまだ私にとってはかなり新しいものでしたが、基本はJavascriptやPythonとほとんど同じように見えました。講義を聞いたり、変数、配列、ハッシュ、基本関数、反復について学ぶための演習を行ったりすることは、非常に反復的であると感じました。それで私は生意気になり、このブートキャンプのことから実際に何かを得るのだろうかと思いました。しかし、1週間後でも、すべてが変わるでしょう。私はクラスのトップのような気分から、実際に追いつくのに苦労していました。

それを知る前に、私たちは基本からオブジェクト指向プログラミング、MVCアーキテクチャ、データベースに移行していました。前日の概念すら理解していないと感じ、すでに期待されていた日がたくさんありました。次のトピックに進みます。

だから私は次のギアを入れなければなりませんでした。教室で1日10時間は、私にとってそれをカットしませんでした。私は毎晩数時間余分に時間を費やし、週末のほとんどを先週の最もトリッキーなことを繰り返すことを日常的にしました。最初の数週間ほどバルセロナを楽しむことができなかったのは少し残念でしたが、貯金をすべてブートキャンプに投資したという事実は大きな動機でした。

欲求不満のもう一つの原因は、私たちが学んでいたことの散在する性質でした。100個のパズルのピースが与えられたように感じましたが、それらをすべて組み合わせる方法の説明はありませんでした。基本的なRuby、HTML、CSS、Javascript、SQLの書き方を知ることは本当に力になりましたが、その知識は実際のアプリをまとめるのにどのように役立ちますか?

そして、私の大きなAHAの瞬間が訪れました。

それは6週目で、ついにRuby onRailsモジュールに到達しました。それを知る前に、私はChromeブラウザウィンドウを見て、「Yay!あなたはレールに乗っています!」それが私の最初のウェブアプリだったと先生は言った。

何?私がしたことは、ターミナルでいくつかの簡単なコマンドを実行し、ブラウザーで// localhost:3000 /にアクセスすることだけでした。私も何を見ていましたか?

テキストエディタでアプリディレクトリを開くまで、その大きな甘い理解はうまくいきませんでした。Railsはそれをとても美しくシンプルに表示しました。

HTML用に1つ、CSSとJavascript用に1つ、コントローラー用に1つ、モデル用に1つ。ルート用の1つのファイル。そして、その甘くて甘いスキーマの1つのファイルは、食料品の買い物リストほど複雑ではないようにデータベース全体をマッピングします。

これらすべての要素がRailsのようなMVCフレームワークに実際にどのように適合するかについて最終的に全体像を把握した後、私の夜と週末のコーディングに費やすのはもはやそれほど苦労ではありませんでした。まったく逆に、私はラップトップを降りて夜寝るのに苦労することがよくありました。

私は順調に進んでおり、毎日大規模な新しい洞察を得ていました。そして、それはまだ言葉で言い表すのが難しいこの酔わせる効果を与えました。

  • では、実際にerbファイルにHTMLとRubyを混在させることができますか?
  • 関連するhtml.erbファイルのコントローラーからインスタンス変数にアクセスできますか?
  • 他の人がGemsと呼ばれるものを使って書いたコードをインポートできますか?
  • アセット/ javascriptディレクトリに必要なだけバニラJavaScriptを書くことができますか?
  • ターミナルのRailsコンソールを使用して、基本的にデータベース全体でやりたいことを何でもできますか?

それは、信じられないほど満足のいくアハの瞬間の終わりのない流れでした。あなたがちょうどあなたに力が実際に強いことに気づいたように、そしてあなたは新しい知識のそれぞれの部分で完全なジェダイに行くために一歩近づいた。9ヶ月経った今でも、同じ高さを維持しているような気がして、実は恒久的なものかもしれないと思い始めています。それはなんて素敵でしょう。

とにかく、ブートキャンプの列車は減速していませんでした、そして私たちが私たち自身のアプリを構築することになっていた最後の2週間にすぐに到達しました。2週間は大きなデモデーで終わり、各グループはカメラと大勢の聴衆の前でアプリを売り込み、デモを行いました。

圧力。

驚いたことに、計画はこれまでで最も時間のかかる部分であることが判明しました。過去数週間で、アプリのアイデアの提案、グループの形成、Sketchでの機能の設計など、多くの準備をしましたが、コーディングを数日行った後、野心的すぎることに気づきました。

このアプリの最初のアイデアは、一種の「プロフェッショナルなつながりのための出来事」でした。具体的には、他のユーザーが参加してチェックインできるネットワーキングイベントのページをユーザーが作成できるようにします。「でもそれはMeetupです」とあなたは考えているかもしれません。しかし、私たちのアイデアにはひねりがありました。イベントの場所に物理的にいる場合にのみ、イベントにチェックインできました。したがって、「専門家とのつながりのための出来事」。

イベントにチェックインすると、ユーザーはLinkedInのAPIを介して収集されたデータを使用して、他のチェックインしたユーザーのプロのプロファイルを確認し、興味に一致したユーザーと接続してチャットできるため、潜在的に優れた接続を見逃すことはありません。 。

これは私たちの最初のMVP(最小実行可能製品)であり、Unifyと呼ぶことにしました。スーパーコーニーとシリコンバレー志望、私は知っています。しかし、私たちの弁護では、私たちはより良い名前を考えるよりも、私たちの時間とより良いことをしました。

実際の機能についてブレインストーミングするようなものです。しかし、実際には少しブレインストーミングを行いすぎて、機能が追加および削除されて、完全に異なるアプリになりました。

  1. 残りの10日以内にデモ対応になることはありません。
  2. 私たちの最初のアイデアが思っていたほど破壊的ではありませんでした。

そのため、機能をMVPに絞り込む必要があり、実際には、ルワゴンのマネージャーであるガスが最初から推奨していたものとほぼ同じ製品になりました。

時間の大きな無駄は、私たちが当時考えていたものでした。しかし、このプロセスは少なくとも、製品開発に関していくつかの本当に重要なことを教えてくれました。

  • 正しく行われた場合、それは実際のコーディングよりも計画に関するものであるはずです。
  • 古いコードの間違いをクリーンアップする必要があるのは、徹底的に計画して最初から物事を行うよりもはるかに時間がかかります。
  • MVPは、最初から思っているよりも常に小さいです。

約10日後、コーディング、設計、議論、テスト、データベースの移行、データベースのロールバックを100時間以上行った後、なんとか奇跡的にデモデーに到達し、実際にアプリについてかなり満足しました。確かに、それは完璧にはほど遠いものでしたが、すべての主要な機能は実際には私たちが望んでいたように機能していました。

しかし、デモのほんの数時間前には、私たち全員が心臓発作を起こしそうになりました。

GoogleのgeolocationAPIがリクエストに適切に応答しなかったため、デモに使用するイベントにチェックインできませんでした。私たちはすべてを試しました。コンピューターとユーザーの切り替え。新しいイベントの削除と作成。イベントの番地を変更します。何も機能しませんでした。

私たち3人は、パニックにならないように落ち着いて行動しようとしました。ジオロケーション機能の責任者が簡単に解決する方法を知っているのは、おそらく単なるバグでした。

しかし、彼は遅れていたので、私たちは彼に電話してみました。

答えはありません。

もう一度電話してみました。

答えはありません。

そして、私たちはパニックになりました。

ギリギリまで、素晴らしいティーチングアシスタントの1人であるアントワーヌのおかげで、なんとかバグを見つけることができました。誤って距離範囲を低く設定しすぎたことが判明したため、アプリは実際にイベントの場所にいることを確認できませんでした。半径を数キロメートル増やしてコミットし、変更を本番サーバーにプッシュしました。

そしてvoilà—アプリは完璧に機能しました。そして、デモもそうだった。

全体として私のルワゴンの経験は驚くべきものでした。こんなに短い時間でそんなに多くを学んだことはないでしょう。後から考えると、私たちのほとんどが基本的にわずか9週間の開発経験でフル機能のWebアプリを開発できたとは信じがたいです。

しかし、だまされてはいけません。ブートキャンプはあなたのために仕事をしません。それから何かを得るために、あなたはそれにあなたの完全なコミットメントを与えなければならないでしょう。私自身、たくさんの人が遅れたり、脱落したりするのを見ました。

  • 難易度の正しい期待がありませんでした、
  • 十分な準備ができていなかった、または
  • 他のことに忙しくてついていけませんでした。

最後に、多くの新人が犯す間違いは、コンピューターサイエンスの学位を、ウェブやモバイルの開発者になる手段として、自己学習やブートキャンプの代わりと見なすことです。私の経験によると、これは正確ではありません。

コンピュータサイエンスの学位を取得しようとしている場合でも、生産性を高めるには、実践的な知識のギャップを埋める必要があります。私は実際に、ブートキャンプのクラスメートに2〜3年のCS研究を行って、これを直接目にしました。繰り返しになりますが、それはアカデミックモデルが壊れていて時代遅れであり、したがって実際のソフトウェア開発が変化している極端なペースに追いつくことができないためです。

私の見解では、目標が開発者になることである場合、いずれにせよ、自己学習またはブートキャンプがいずれかの時点で必要になります。したがって、コンピュータサイエンスの学位は、代替ではなく補完として認識されるべきです。

そして、(良い)ブートキャンプがあなたを自己学習よりも早く開発者に変えることができる理由は、以下の組み合わせです:

  • 徹底的で簡潔なカリキュラム、
  • チュートリアルと演習を備えたシームレスなオンラインプラットフォーム、そして最も重要なこと。
  • 壁にぶつかったときの人間のオンコールサポート。

このセクションを締めくくるために、ブートキャンプに参加する前に私が持っていた3つの懸念に、それ以来得た洞察で対処したいと思います。

1.JavaScriptベースのスタックの代わりにRubyonRailsを学ぶ

Railsブートキャンプに参加する前の立場にいて、インターネットに溢れるJavaScriptの誇大宣伝に圧倒されている場合は、Rubyが古い言語であるかどうか、Railsが古いフレームワークであるかどうかを自問するかもしれません。この場合、私の短い答えはノーです。

しかし、長い答えはこれでしょう。

私が現在働いている会社には、バックエンドにRailsを使用して構築されたトラフィックの多いウェブアプリがあり、フロントにEmber.jsフロントエンドフレームワークがあります。このアプリを約6か月間フルタイムで使用してきたため、JavascriptでRubyと同じくらい多くのコーディングが必要になりました。これにより、テクノロジー間の相違点と類似点についての洞察が得られました。

そして確かに、クライアント側のHTML / CSSレンダリング(または「ビュー」)に関しては、Railsのユーザーエクスペリエンスは大きなJavaScriptフレームワークにさえ匹敵しません。Railsに嫌悪感を与えなければならないこと。

たとえば、記事やブログ投稿の基本的なコメントセクションを取り上げます。ユーザーとして、送信したコメントが画面にすぐに表示されることを期待します。

最新のJavaScriptフレームワークでは、これは単に新しいデータ(コメント)をクライアント側のデータストアにプッシュし、コメントリストの状態を更新して新しいコメントを表示することを確認するだけです。このように、新しいレコードがバックエンドに送信され、データベースに保存されてから、クライアントから再度要求されるのを待つ必要はありません。代わりに、新しいコメントが画面にすぐに表示されます。

Rails HTMLコードの上にJavaScriptがないと、ユーザーはページを更新して記事への新しいコメントを表示する必要があります。これはひどいUXです。これを回避するために、いくつかの異なるパスを取ることができます。

JSフレームワークの時代以前の主な解決策は、HTMLの上に非常に構造化されていないAJAXロジックを散在させることでした。これは、アプリが大きくなるにつれて、長期的には維持するのが非常に困難になることがよくありました。ごく最近、Railsで利用できるようになったもう1つのオプションは、アクションケーブルなどを使用したpubsub(パブリッシュ/サブスクライブ)WebSocketソリューションです。たとえば、これは、ブートキャンプで作成したアプリのチャットに使用したものです。問題は、JavaScriptフレームワークをラップしないと、WebSocketロジックが不必要に複雑になりやすく、保守も困難になる可能性があることです。

しかし、幸いなことに、今日では、これらのタイプの問題にJavaScriptフレームワークを使用するためのはるかに優れたオプションがあります。そして、私の意見ではクライアント側がRailsの最も弱い点であるため、これは、たとえばLaravelやMERNスタックのオプションとしてRailsを破棄してはならない理由でもあります。ReactやEmberのような鮮明なJavaScriptフレームワークを上に叩くだけで、準備は完了です。

RailsとEmberの統合と、それらが互いに補完し合う方法が個人的に大好きです。彼らの意見の性質、確かな実績、先見の明のあるリーダーシップ、そして巨大な貢献者コミュニティは、彼らを安定させ、信頼でき、私たちのようなジュニア開発者に適しています。

それでも、私の最善の努力にもかかわらず、最初のバックエンド言語としてRubyに賭けることに躊躇している場合は、6か月前にJavaScriptについてほとんど何も知らなかったことを思い出してください(いくつかの基本的なバニラJS、React、およびjQuery構文)、そして今日、私はこれらの言語とフレームワークの両方を日常的にシームレスに操作し、それらの間を移行しています。そして、それを毎分愛します(比喩的に言えば)。

ですから、第一言語として何に賭けても心配しないでください。仕事でいつでも第二言語を学ぶことができますか?

2. 9週間は短すぎて何も学ぶことができませんか?

ブートキャンプの期間(わずか9週間)が短すぎて実際に価値のあることを学ぶことができないかもしれないという私の懸念について、ルワゴンは私がその神話を打ち破るのを助けてくれました。後から考えると、他のほとんどのブートキャンプが提供する12週間よりも9週間を好むことは実際には明らかです。

その理由は、ブートキャンプ自体が実際にあなたを雇用可能なレベルに連れて行っていないからです。少なくとも私にとってはそうではありません。むしろ、生産性のレベルに到達するために必要なすべてのツールと、それらをすべて組み合わせる方法をしっかりと紹介してくれました。したがって、彼らが私にさらに3週間与えたとしても、それはさらに12のツールの紹介を意味するでしょう。後で実際に使用方法を深く学ぶ必要があるツール。そして、そのリストはすでに十分な長さでした。

ツールが実際にどのように機能するかを理解したのは、ブートキャンプの後、数週間にわたって独自のポートフォリオアプリを構築した後のことでした。したがって、ブートキャンプのことを実行したいと決めたが、数週間の違いに基づいてオプションを比較している場合、私のアドバイスは、方程式からその変数を削除することです。あなたが私のようなものなら、あなたはまだあなた自身ですべてのツールを再学習しなければならないでしょう。

振り返ってみると、LeWagonのツールセットがどれほど正確であったかは実際には非常に注目に値します。現在の仕事では、これらのツールのほとんどを毎日使用しています。例としては、Postgres、Git、GitHub、Sidekiq、Pundit、Heroku、Cloudinaryなどがあります。先生にもっと時間をかけてもらいたかったのは、ReactのようなJavaScriptフレームワークの使い方と、Rspecのようなテクノロジーを使ったテストの書き方だけです。後で、これら2つを自分で学ぶことが、私の最初の開発者の仕事に着手するために重要であることがわかったからです。

3.仕事の保証やキャリアサービスは私を助けてくれましたか?

先に述べたように、多くのブートキャンプには「雇用されるか、お金を取り戻す」という方針があります。さらに多くの人がキャリアサービス機関を持っており、潜在的な雇用主と連絡を取り、応募や面接のためにあなたを指導するのに役立ちます。

そして、これはおそらく多くの人にとって甘い取引のように聞こえますが、実際にはそれが私にとって違いを生んだとは思いません。しかし、またしても、ブートキャンプ後の2か月間で約500時間のコーディングに費やす時間、履歴書にエリートスクールの学位を取得する特権、そして仕事への応募と面接の豊富な経験がありました。これらのことが当てはまらない場合は、ブートキャンプから選択する際に考慮すべき要素かもしれません。知りません。

パート5:ポートフォリオの構築

去年の夏の7月の終わりに、ブートキャンプは終わりました。しかし、私はまだ始めたばかりでした。

ブートキャンプでUnifyアプリを開発し、それをフィニッシュラインに持ち込むことで、私は大きな勢いを得ることができました。その勢いを最大限に活用することを決意しました。

私はまだ銀行にいくらかのお金が残っていて、バルセロナのアパートの転貸に数週間残っていました。基本的に私が街で知っていた誰もが去っていました。だから私は、コードを食べたり、寝たり、夢を見たりし続けるだけでは理由がまったくありませんでした。意識的に半分だけ私は自分のためにいくつかの新しいルーチンと習慣を設定しました:

  • 私は目標に到達するまで毎日コーディングしていました。目標はもちろん、最初の開発者の仕事を得ることでした。月曜日から日曜日、昼と夜を意味します。
  • 私が書いたすべてのコードをGithubプッシュします。これは、潜在的な雇用主がコードのスキルと野心のレベルを検査するための第1の場所です。コミットする価値のあるものを作成したとは思わなかったとしても、世界中の人々が見ることができるように、その甘い緑のコミット履歴を構築するためだけにそれを行います。
  • そして、私は可能な限り多くのソフトウェアコンテンツに完全に没頭します。つまり、私が用事をしたり、走ったり、料理をしたりしているときはいつでも、Software EngineeringDailyやSERadioなどのポッドキャストを聞くことを意味しました。それは、コーディングテック、トラバーシーメディア、CS50などのYouTubeチャンネルからのコードトーク、チュートリアル、講義を見ることを意味しました。それは、Hacker Noon、freeCodeCamp、CodeburstなどのMediumの出版物や、TechcrunchやThe NextWebなどの雑誌を読むことを意味しました。そして、それは私のラップトップにDashをインストールすることを意味し、いつでも苦労していた構文の問題に関する適切なドキュメントをいつでも簡単に検索できるようにしました(私にとっては、ほとんどの場合、MDN Webドキュメント、api.rubyonrails.org、RubyDocs) 。

言い換えれば、開発者になるという私のモチベーションはこれまでになく強くなり、学問的または専門的なメリットがないことを知っていたので、キックアスポートフォリオがなければ就職の面接に呼ばれることさえないでしょう。それが私が次にやろうと決心したことです。

デモデーの翌日、その後の夜の外出からかろうじて冷静になり、私は最初の独自のRailsアプリの構築を開始しました(それは勢いが非常に強かったです!)。私がそうであったように、私は最初のアプリが完了するのに数週間かかるだろうと思っていました。今では、Unifyアプリで一度すべてを試しました。繰り返しますが、私は間違っていました。

それを終えるのに私はほぼ2ヶ月かかるでしょう。ブートキャンプの最後の2週間には、私が完全に理解することなく、非常に速く経過した非常に多くのプロセスがありました。恥ずかしいほど単純なものからやや高度なものまで、あらゆる種類のもので数日間立ち往生しました。日時ピッカーを設定するだけで、Stackoverflowに数日を費やす必要がありました。チャット機能は言うまでもなく、Action CableでWebSocketを使用しましたが、うまくいくまでに約2週間かかりました。

しかし、投資した時間はそれだけの価値がありました。このアプリは実際にはかなり素晴らしいものでした。実際、それは私が人々のためにデモして誇りに思うことができるものでした。そして、絶望の瞬間がたくさんありましたが、私はたくさんのことを学びました。そして実際、そのような喧騒をすべて経験することは、ブートキャンプがおそらく良い選択だったという点で私に多くの慰めを与えました。

私がすべてに精通しているときにこのようなものをコーディングするのがこれほど難しいとしたら、初めてそれを行うときにティーチングアシスタント、プラットフォーム、カリキュラムがなかったら、どれほど大変だったでしょうか?

それで、8月下旬のいつか私はアプリを完成させました。私はストックホルムの家に帰り、父のアパートに住んでいて、壊れてとても哀れな気持ちになりました。私はその自己憐憫を利用して、コーディングの取り組みを強化し続けるために最善を尽くしました。そして、それはかなりうまく機能していました。

すぐに、実際のポートフォリオWebサイトをコーディングする時が来ました。そして、一度、私はそれをシンプルに保つことに決めました。それで、私は自分がやったことを集めることができる非常にミニマルな静的なウェブページをまとめました。それを終えた後、私の計画は仕事に応募し始めることでした。しかし、私を悩ませたことがありました。Le Wagonに参加する前は、Ruby on Railsに少し躊躇していたと言ったことを覚えていますか?さて、私は実際にRubyのミニマリズムとRailsの使いやすさを気に入ったのですが、それでもどこかで近道をしたような気がしました。

ポートフォリオページの「スキル」セクションの下に、Ruby、Rails、SQL、Postgres、HTML / CSS、jQuery、Bootstrap、Sketch、Git、Herokuがあります。そしてJavaScript。

それが私を悩ませた最後のものでした。嘘のように感じました。

今から仕事に応募し始めたら、Rails開発者としてまともな何かを上陸させることができるでしょう。しかし、すべての嫌悪者が正しく、Railsが実際に時代遅れで死にかけているとしたらどうでしょうか。そして、夢の仕事を見つけて、彼らが高度なJSテクノロジーを使用していることに気付いた場合はどうなりますか?freeCodeCampでの200時間と、ブートキャンプでの2 — 3jQuery日+ 1React.js日ではチャンスがありません。

私の脳の傲慢な部分が再び私に話しかけました-「ここにアイデアがあります:もし私がMEANスタックも学ぶとしたら?」MongoDB、Express.js、Angular.js、Node.jsのように意味します。これは、RailsがRubyに相当するJavaScriptに似ています。LinkedInとGlassdoorの検索結果によると、それは私が資格を持っていた開発者の仕事の量を多かれ少なかれ2倍にすることを意味します。

ブートキャンプのマネージャーであるガスが、それを学ぶのにもう1か月かかると言っていたことを思い出しました。それはどれほど難しいでしょうか?たぶん2週間でできると思いました。

そして、それが私がチュートリアル沼と呼びたいものにたどり着いた方法です。

そこでもう一度、私は旧友のGoogleに学習戦略の調査を依頼しました。しかし、数時間経っても、MEANスタック101のニーズに適したオンラインコースを見つけることができなかったようです。それらはすべて一度に1つの部分に焦点を合わせているように見えました。これは、フレームワークを深く理解したい場合に間違いなく正しい方法です。しかし、2週間以内にできるだけ多くのことを学びたいと思っていたので、ポートフォリオに新しいプロジェクトを追加するのに十分でした。そのための時間がありませんでした。

そのとき、開発教育のまったく新しい次元であるYouTubeチュートリアルを発見しました。そこにはたくさんありました。私が考えることができるすべてのテクノロジーまたはスタックについて、少なくとも5つのまともなチュートリアルを見つけました。

最終的に、Traversy Mediaチャネル、およびチュートリアルシリーズMEAN Stack Front ToBackへの道を見つけました。ユーザー登録とサインイン認証の両方を備えた基本的なRESTfulWebアプリを構築する方法を示す、それぞれ20分で10本のビデオ。完璧です。

私はすぐに始めて、ラップトップの各ビデオに沿ってコーディングしました。そして、十分にクレイジーで、ほんの数日後に私は終わりました。私は実際に、完全に外国のテクノロジーを使用して、完全に機能するWebアプリをコーディングしました。バックエンド用のノード、データベースを管理するためのMongo、フロントエンド用のAngular、およびデータベースをすべてまとめるためのExpress。

本当にこんなに簡単でしょうか?私は今このことを知っていましたか?思ったよりずっと楽だったのは嬉しかったのですが、背筋が冷たく震えました。

さて、予定より進んでいたので、もう少しアプリを構築してみませんか?私のアイデアは、Railsを使用したブートキャンプのプロジェクトで行ったように、基本的なブログ投稿のCRUDアクション(作成、読み取り、更新、削除)を有効にするだけで、中程度のクローンに変えることでした。

しかし、私はそれほど遠くまでは行きませんでした。新しいルート、モデル、コントローラー、ビューをいくつか追加するだけでよいと思いました。それだけです。問題は、「設定より規約」によってこのような機能を非常に簡単かつ迅速に構築できる「設定より規約」をまだ考えていたということでした。

私が何度も読んだり聞いたりしたように、MEANスタックは反対のマントラ「設定より規約」に従います。つまり、「魔法の」自動化の一部を放棄することで、はるかに柔軟なフレームワークを取得できます。箱から出してすぐに、同じ名前のビューに接続された特定の名前のコントローラーアクションを取得するようなものです。これは、初心者のときに手に入れることができる本当に甘い魔法です。

そのため、「設定より規約」に従ってコーディングするのがどれほど難しいかを初めて認識したのは、大きな平手打ちでした。チュートリアルプロセス全体があまりにも良すぎて真実ではなかったという私の予感が正しかったことが証明されたからです。しかし、Brad Traversyからの慰めの指示なしに、オフスクリプトのコーディングを開始するまで、私はそれを実現しませんでした。

それで、私は、その時私にとってMEANスタックであった泥の大きなプールの奥深くにひざまずきました。このアプリは、私のポートフォリオページに追加する準備ができていませんでした。文字通り機能はありませんでした。ユーザーが登録してログインし、静的なBootstrapデザインを確認する以外に何もしない可能性があります。

もう1つの選択肢は、試行錯誤を繰り返し続けることでした。ブートキャンプとは異なり、補助輪の取り外しが早すぎたため、計画どおりにアプリを完成させるには、Stackoverflowに数週間を費やす必要がありました。何週間もありませんでした。私は昨日仕事に応募することになっていた。

皮肉なことに、私が自分自身を入れたチュートリアルの沼から抜け出す唯一の方法は、さらに多くのチュートリアルに従うことによって、それを歩き続けることでした。幸いなことに、私は同じYoutubeチャンネルでかなり良いものを見つけ、それを私のライフラインとして使用することにしました。

これが、最終的にMediumクローンであるはずだったWebアプリが、Spotify SearchAPIを使用して音楽発見アプリになった理由です。

すべての喧騒にもかかわらず、MEANスタックを試して学ぶことを決定してから2週間後、私は実際にまともなWebアプリをデプロイしました。それが私の目標でした。確かに、それは浮気のようなものでしたが、それをデモして就職の面接ですべての部分を説明できる限り、チュートリアルに従ったかどうかは誰も気にしないだろうと思いました。

ブーム。突然、ポートフォリオに3つのアプリが追加され、スキルレパートリーに多数の新しいテクノロジーを追加できるようになりました。最後に、私の開発者の旅の次の段階である就職活動に入る時が来ました。そして、それはすぐに一日ではありませんでした。

パート6。仕事に応募する

全体として、完璧に合うものを見つけるには、約4週間、30回の応募、10回の面接、3回のオファーが必要です。そして皮肉なことに、それは私が参加する最初の会社になるでしょう。もちろん偶然と言ってもいいのですが、応募を始める前の徹底した審査の効果だと思います。

私の速い就職活動の成功にはかなりの幸運が働いたと思うことを認めなければなりません。しかし、その価値については、私が従ったプロセスについて説明します。これは、最初の開発ジョブでどのジョブと企業に焦点を当てるべきかについていくつかのことを教えてくれたと思います。

私が最初にしたことは、興味深い仕事の候補リストのスプレッドシートを設定することでした(私はもともと退屈な経済学者です、覚えていますか?)。次に、LinkedIn、Glassdoor、Stackoverflowのジョブボードで、Web、開発、ソフトウェア、フロントエンド、バックエンド、Ruby、Rails、Javascript、Angular、Node、Postgresなどのキーワードに基づいたジョブを数日間調べました。

当然のことながら、検索ではストックホルム地域だけで何百もの仕事が返されました。その背後にある企業は、新興企業からデジタルエージェンシー、メディア企業、クラウドサービスプロバイダー、ゲーム開発者、そしてその間のあらゆるものにまで及びました。

過去数ヶ月間、私は次の雇用主に何を求めているかという非常に狭い基準をまとめることができました。

希望する仕事を選ぶことができれば、私の優先順位は多かれ少なかれ次のようになりました。

  1. スタック全体でコーディングします。つまり、UX / UIと同じくらい多くのデータベースとアーキテクチャを、主にJavaScriptで実行できるようになります。Reactをめぐるすべての誇大宣伝は、おそらく後者と関係がありました。前に言ったように、この時点で私が知っていたのは、Railsは基本的に死にかけていました、そしてJavaScriptは未来でした。
  2. 私の学習曲線は非常に急で、それに追いつくために昼と夜をコーディングしなければならないほどです。最短の時間で可能な限り良くなるためにすべて。
  3. 私の同僚は、賢く、野心的で、面白くて、非公式で、できればすべて同時に賢くなります。
  4. 同社は、意味のある使命とブロックチェーン、AI、および/または持続可能性に関連する製品を備えた高成長のスタートアップ、またはそのようなプロジェクトを行う一流のデジタルエージェンシーになるでしょう。
  5. 私は公平に支払われるでしょう。

それについてでした。ルーキーに対するかなり高い需要があると思うかもしれません。ただし、高給は基準の一部ではなかったことに注意してください(6か月の専門的経験を持つ今日もそうではありません)。当たり前のことを言っているかもしれませんが、まったく異なるものから純粋な開発の役割に移行する場合は、以前に何を支払ったかは問題ではないことを知っておくことが重要だと思います。

たとえば、私は金融業界での私の市場価値が月額約5,000ドルであることを知っていました。しかし、ソフトウェア開発は根本的に異なる技術であることに気づき、私は目標を約3,700ドルに設定しましたが、最低$ 3,000(スウェーデンの平均給与約$ 4,000よりも大幅に低い)で解決しました。

上記のすべての基準を念頭に置いて、私は求人広告を1つずつ確認し、好きなものを候補リストに追加し、好きではなかったものを放棄しました。しばらくして、私はいくつかのパターンに気づきました。

まず、紙のほとんどの企業は、私が提供できるよりもはるかに多くの技術スキルと経験を必要としていました。これは当然のことでした。私自身の調査とブートキャンプの両方から、「ジュニア開発者」の立場が死にかけていることを知りました。

その多くの企業は、新人の指導に上級開発者の貴重な時間を費やすには費用がかかりすぎると考えていました。そのため、需要は非常に高いが供給が非常に少ない上級開発者を採用することを好みました。

ここでの大きなパラドックスは、もちろん、ジュニア開発者を育成して教えるために誰も自分でそれを引き受けない場合、市場のシニア開発者の不足をどのように修正できるかということです。それでも、これが今日の業界の仕組みであることに気づき、資格のないポジションに応募する必要があることにも気づきました。

第二に、会社が熱くて大きくなればなるほど、コンピュータサイエンス関連の学位と専門能力開発の経験の要件が含まれる可能性が高くなることがわかりました。確かに、まともなポートフォリオとカバーレターは、私のような初心者ではなく、「Rails忍者」または「Reactスーパースター」を必要とする会社へのインタビューを得ることができると思いました。

しかし、求人広告で3年以上のJavaScriptの専門的な経験と、コンピューターサイエンス関連の分野の修士号が明示的に必要な場合、面接を受ける機会はおそらく非常に少ないでしょう。

第三に、ほぼすべての求人広告がReactに言及していることです。オンラインでのすべての誇大宣伝にもかかわらず、私はまだそのクレイジーな高い需要に驚いていました。

とても驚いたので、実際に1日に数時間を費やして小さなReact Webアプリを作成し、前面にReact.jsを使用し、背面にRailsを使用して、ポートフォリオに追加して再開できるようにしました。

このために、私は実際にLe Wagonのブートキャンプでの1つのReact講義からのメモを主に使用しましたが、それを学ぶことに興味があるなら、無料のガイド、特にfreeCodeCampからのガイドを見つけるのに苦労することはありません。

Reactを履歴書に載せることができたという事実を除いて、この経験からの最大の利点は、コンポーネントを使用してWebアプリを構築し(Railsの方法のようにコントローラーやビューではなく)、小道具や状態を操作できるようになることでした。 。

遅かれ早かれ、ある種のJavaScriptフレームワークと友達になる必要があるかもしれません。そうすれば、React、Angular、Vue、Ember、その他の膨大な数のJavaScriptフレームワークなど、どちらの方法でもこれらの概念が役に立ちます。

上記のような新しい洞察により、特定の仕事を候補リストに追加する必要があるかどうかを判断するためにすでに必要だった基準を開発および改善することができました。すぐに私は約50の求人のリストを手に入れました、そしてそれは実際にアプリケーションを送り始める時でした。何百もの企業に応募して面接した経歴から、これまでで最も簡単な部分のように感じました。

これは、私がすべての人に送信する1つの一般的なカバーレターを書くような人であることに関係している可能性があります。私はあなたが何を考えているか知っています:あなたが今まで話したすべてのメンター/教師/リクルーターはこれに反対するようにアドバイスしました。しかし、さあ。求人応募です。あなたの親友の結婚式のためのスピーチではありません。

とにかく、採用担当者が1分以上費やすことはないでしょう。したがって、同社が受賞した賞、昨年のYoYの成長に感銘を受けた、または彼らの文化が競合他社のXよりもはるかに優れている理由についての完全に推測的な意見を述べても問題ありません。

重要なのは、説得力があり、データ駆動型で、文法的に完璧な方法で、1時間かけて会議に参加する価値がある理由をテキストで表現できることです。あなたが私のものを見たいのなら、私に書いてください、そして私はあなたにそれを送ります!ただ言って、それについてかなりお世辞のフィードバックを得ました…

次に行ったのは、履歴書とLinkedInのプロフィールを更新することでした。そしてここで私はキーワードの重要性を十分に強調することはできません。知っている(または知っているふりをしたい)すべてのテクノロジーの名前が両方に含まれていることを確認してください。このようにすると、検索結果に表示される可能性が高くなります(ここでも同じです。質問してください。履歴書をお送りします)。

すべての申請書を送った後、どの会社からも何も聞かずに一週間ほど経ちました。それは実際、私にとって必要な休息の期間であることがわかりました。私は、新しい執着に追いついて、過去数ヶ月間無視していた友人や家族と再会するのに少し時間がかかりました。

それから私は返事を受け取り始めました。

パート7:インタビューを行う

最初の返事は本当に若いスタートアップから来ました。基本的には、元銀行のCEOと上級開発者のCTOの2人で構成されていました。メールはCTOからのもので、彼は私の最初の開発者インタビューに私を招待してくれました。

肯定的な反応は常に拒絶の前に来ることを認識して、私は冷静な頭を保ち、あまり興奮しないように努めました。

しかし、それでも、10年以上の経験を持つシニア開発者であるこの男が、私のLinkedInプロファイル、カバーレター、CV、そして最も重要なことに、私のポートフォリオとその背後にあるコードをGithubプロファイルで調べ、それでも考えていたという事実だけです。私は彼らのために良いコードを書くことができるかもしれません、私は自分自身をかなり誇りに思っていました。

会社が実際に私のすべての基準を満たしているとは思いませんでしたが(主にチームが小さく、給与の見通しが悪いため)、私はすぐに応答して招待を受け入れました。

これまでの努力にもかかわらず、実際に技術面接の準備に時間を費やすことはありませんでした。しかし、私が聞いて読んだことから、それはそれ自体が芸術であるはずであり、多くの場合、人々は準備に何ヶ月も費やすでしょう。

多くの場合、ブートキャンプの卒業生やより実践的な経験を持つ独学のコーダーは、基本的なコンピューターサイエンス理論の知識が不足しているため、技術面接に失敗します。CSの卒業生が、最新のテクノロジーを使用してアプリを構築した経験がないために失敗することがよくあるように。

でも時間もお金も足りなくなっていたので、これもやらなくてはいけないことだと思いました。面接の段階を延期することはできませんでした。経済的な面接の仕方を学んだときに何度もやけどを負ったように、最終的に面接に勝つ方法を見つけるには、それらのやけどが非常に重要であることがわかりまし。なぜ技術面接は違うのでしょうか?

それで私は招待を受け入れ、数日後私は彼らのオフィスのロビーに入った。彼らは受付で私を待っていた。

場所はゴミ捨て場でした。The Officeを見たことがあれば、Dunder Mifflin PaperCompanyのオフィスに足を踏み入れたような気がします。彼らは、それが大規模な監査会社のオフィスであり、計画された改修までの残りの時間の間、安価な暫定コワーキングスペースに作り直されたと私に言いました。私たちは会議室に足を踏み入れ、大きな木製のテーブルのそばに座った。

彼らは私に彼ら自身と会社についてたくさん話すことから始めました。彼らは、著名なライフスタイルライター向けの新しいミディアムっぽいアプリのベータ版をリリースしたばかりで、シードラウンドで友人や家族から少しのお金を集めていました。しかし、それらはまだ発売前であり、最も確実に収益前でした。

面接よりも売り込みのように感じた約1時間後、CEOが辞任し、CTOと私は面接の技術的な部分を続けると言われました。私の心は鼓動を飛ばした。技術面接について読んだすべてのことから、私はあらゆる種類の頭の体操、コーディングの課題、および複雑なデータ構造に関する質問を私に投げかけることを期待していました。

しかし、誰も来ませんでした。代わりに、CTOはこれらすべての非常に自由な質問を私に尋ね始めました。

私が好きなテクノロジーやフレームワークのように。次に学ぶために新しいテクノロジーを選ぶことができたら、それは何でしょう。ES6によって導入された新しい構文について私が考えたこと(2015 Javascriptの更新、矢印関数、promise、定数などの多くの新しいクールなものが導入されました)。

私たちはおそらくさらに30分続く素敵な会話をしました。しかし、CTOがすべてのカードをテーブルに置くことを決定したとき、大きな反発が起こりました。

彼らの厳しい財政状況のために、彼は私に言った、彼らは私に今のところ象徴的な賃金(実質的に無給を意味する)で6ヶ月のインターンシップの役割しか提供できなかった。しかし、インターンシップがうまくいった場合、彼らは公平性とまともな賃金の両方を提供することに非常にオープンでした。

「それまでに会社がまだ存在しているのなら」と私はほとんど付け加えた。

その場で申し出てくれて嬉しかったのですが、探していた会社でも商品でもないことがすぐにわかりました。それにもかかわらず、私はすぐに彼らを断りませんでした。申し出はまだ申し出であり、後で他の会社と交渉するときにいつでも重宝すると思いました。

両方の仕事に失望し、技術面接が私に新しいことを何も教えてくれなかったという事実にもかかわらず、私はまだオファーを受け取りました。それは私に面接が来ることへの大きな自信を与えました。

私が得た2番目の応答は、Teamtailorと呼ばれる少し大きなスタートアップからのものでした。彼らはストックホルムを拠点とする企業であり、採用および雇用者のブランディング業界をデジタル化することを使命としており、現在はまったく技術に詳しくない採用コンサルタントと人事マネージャーによって統治されています。

悪くないアイデア。「採用」や「人事」などの言葉で始まる求人広告は、10日のうち9日で怖かったのですが、この会社には興味をそそられたことがありました。

私のかなり徹底的な調査から、彼らは約4年間存在し、約30人の従業員がいて、4か5か国に存在し、600の顧客(企業)、100%以上の収益成長率、そして損益分岐点があることがわかりました。上にいくらかのマージン。悪くない、全く。

それに加えて、彼らのインスタグラムのアカウントは彼らのオフィスを明らかにしました:ストックホルムが提供しなければならない最高のエリアであるゼーデルマルムの真ん中にあるブルックリン風の古い赤レンガのビール工場。

MMうーん。

すべてが、彼らが会社のライフサイクルのスイートスポットにいるという事実を示していました。非公式な文化とイニシアチブと成長の余地がたくさんある、一緒に旅をしているような気分にさせることができるほど若い。しかし、まだいくつかの構造を確立するのに十分古いので、何か新しいことを学んでいるときに頼るのはいいことです。

とにかく。繰り返しになりますが、私に手紙を書いたのはCTOでした。何度かメッセージをやり取りした後、数日後に彼らのオフィスでの最初のインタビューに落ち着きました。彼と別の共同創設者の両方が私と会うだろうと私は言われました。

会う前から、全体的にとてもいい感じでした。どちらが悪かった。少なくとも私の頭の中では。今は面接に入るので、おそらく彼らが私よりも欲しがっていたのではないかと思いました。古いビール工場の階段を上った後、私はついに彼らのオフィスのドアに着き、かなり特別なシーンに足を踏み入れました。

まず、私の顔に大きなピンクのポスターがあり、大胆な白い文字が私に向かって叫んでいます。「Teamtailorは、ヨーロッパで最も人気のある100のスタートアップの1つであるWiredMagazineです。」私の左側には、20代の若者が大画面でFIFAをプレイしているリビングルームのように見えました。私の前にある大きな部屋では、私に最も近いテーブルが開発者でいっぱいで、大きく鮮明な画面をさりげなくハッキングしていました。そして、私の周りでは、Sonosスピーカーから脈動するソフトヒップホップビートがあります。

その瞬間、人事会社であるという私が彼らに対して抱いていた悪い偏見は消えました。この場所は最高でした。くそー。

あなたは典型的なシリコンバレー志望のオフィスについて多くの悪いことを言うことができます。しかし、私の意見では、この種の最悪のオフィスでさえ、典型的な企業のオフィスよりも1000倍優れています。だから私にとっては天国でした。これは、面接のために試みたクールさにとって本当に悪いことでした。

野球帽をかぶった背の高いやせっぽちの男が私に微笑んで、椅子から起き上がって私に挨拶した。それはCTOでした。ガラスの壁と緑の偽の草が床を覆っている会議室に足を踏み入れました。もう一人の共同創設者が私たちに加わり、私たちはインタビューを開始しました。

前回のインタビューとは異なり、彼らは私が行っていたプロセスについて私に話すことから始めました。この最初の会議の目的は、主に私をよりよく知ることでした。先に進むと、2番目のステップは技術面接になります。それを聞いてとても安心しました。インポスター症候群は本物でした。

最初の質問は、多かれ少なかれ古典的な「なぜあなたは開発者になりたいのですか?」でした。彼らは何よりも、私のカバーレターと履歴書が彼らの目を引いたと私に言った。ビジネス志向の開発者を見つけることはまれであり、ビジネスの学位とビジネス開発と財務の両方の経験を持つ開発者を見つけることはさらにまれでした。では、なぜ私はこのまったく異なる道を追求するために自分の道を飛び降りることに決めたのですか?

面接の経験から、これらの場合には正直がほとんどの場合最善の方法であることがわかりました。ですから、私は基本的に、この記事の冒頭であなたに言ったことを彼らに話しました。私は販売が嫌いで、テクノロジーが大好きで、物事の創造的な側面に移行したいと思っていました。

この時点から、会話は一種の独自の生命を手に入れました。ある時、私が今知っていることを知っていたら、おそらくビジネスではなくコンピュータサイエンスを勉強することを選んだだろうと彼らに話しました。驚いたことに、CTOはこの発言に驚いていました。彼は笑って、なぜ私に尋ねました。

躊躇しました。彼らが聞きたかったことだと思ったので、それが私が言ったことの1つであることに気づきました。彼は私をフックから外し、独学の開発者でもあると私に言いました。彼が大学で取った唯一の主題は映画研究でした。少しショックを受けました。しかし、それだけではありませんでした。

実際のところ、会社の10人の開発者の誰も本当のCSの学位を持っていませんでした。それらのいくつかは、いくつかのプライベートWeb開発プログラムの1〜2年を要しましたが、ほとんどは実際には独学でした。

この男からそれを聞いてとても幸せになりました。彼は、私の前の同僚であるサンドラが1年前に私に言ったことを確認したばかりです。つまり、優れた開発者になるために学位は必要ありません。良いもの。

会話はとてもスムーズに進んだので、彼らが私のポートフォリオについて私に尋ねたのは最後の数分まででした。実際にそれを見たのはそのうちの1人だけで、彼は文字通り「一瞥した」と言った。インタビューがどれだけうまくいったかにすべてが追いついたので、私は自分のアプリの1つをデモして喜んでいると彼らに言いました。

すぐに、彼らの顔は明るくなり、彼らは椅子でまっすぐになり、私をうなずきました。大きな間違いを犯したばかりだと気づきました。

これらの人に見せるためにほぼ十分に良かった唯一のアプリは、ブートキャンプの直後の1か月間に作成したアプリでした。そして、私は少なくとも一ヶ月はそれに触れていませんでした。MacBookを目の前の大画面に接続し、ブラウザにURLを入力しました。

最初の恥ずかしさは、ホームページをロードするのに文字通り20秒かかったことでした。喉が乾いた状態で、無料バージョンのHerokuを使用していることを説明しようとしました。つまり、ドメインに関連付けられたサーバーが1時間以上リクエストを受信しなかった場合、サーバーはこの「スリープモード」になります。そこから目覚めるのに長い時間がかかりました。私が最後に欲しかったのは、私のアプリが遅いと彼らに思わせることでした。

それが実際にロードされたとき、私は製品の背後にある考えを説明するのに少し時間がかかりました。これは基本的に仮想回線を作成するためのサービスであり、航空会社、銀行、病院などの組織が物理的な場所ではなくオンラインでキューを設定できるようにしました。

それから2番目の恥ずかしさが来ました。Facebook認証を使用して自分のアカウントにログインしようとすると、失敗しました。遅すぎることに気付くと思いますが、その理由は、新しいSSL証明書を取得した後、FacebookAPI設定のURLを更新していなかったためです。したがって、Facebookは//ドメインからのリクエストを期待していましたが、私のものは//ドメインからのものでした。ルーキーの間違い。

私はついに代わりに手動でログインすることに成功し、問題なく主な機能のいくつかをデモしました。しかし、それから彼ら全員の最大の恥ずかしさが来ました。アプリの最高峰であるチャットを機能させることができなかったようです。チャットリンクをクリックすると、チャットページが表示されましたが、チャットする偽のユーザーが見つかりませんでした。

それから私は基本的にあきらめました。私が本当に持ってはいけないもの。ほんの数時間後、チャットが完全にうまく機能したことに気付くでしょう。私のユーザーアカウントは、参加する回線にサインアップしていなかったため、チャットするユーザーも表示されませんでした。

さよならを言ったところ、連絡があると言われました。私は怒りと失望を感じてインタビューを去りました。なぜ私はデモのためにもっとよく準備しなかったのですか?その最後の部分まで、それはすべてとてもスムーズに進んでいました。

それにもかかわらず、ダビデが私に再び手紙を書くまで、1時間も経っていませんでした。彼は私がプロセスの次のステップに進んだと私に言った。私はそれを信じることができなかったし、私はもっと幸せだったはずがない。しかしもちろん、私の最初の実際の技術面接を受けることについても少し怖いです。

しかし、結局、この2回目のインタビューも、私がオンラインで読んだすべてのホラーストーリーとはまったく異なるものになるでしょう。すでに招待メールで、CTOは、私が2人の上級開発者と会う予定であり、その背後にあるコードとともに、1つのアプリをもっと徹底的に見せてほしいと言っていました。

主な目的は、私が彼らのバックエンドフレームワーク(Rails)をどれだけよく知っているか、そして彼らのフロントエンドフレームワークEmber.js(この時点では聞いたことさえなかった)をどれだけ早く学ぶことができるかを把握することです。

デモアプリは、RailsとReact.jsを使用して作成したものでなければならないことがすぐにわかりました。それは2つの理由で完璧でした:

  1. これは、JavaScriptフレームワークと統合されたRails(スタックと同じように)上に構築されており、
  2. 私は2週間以内に使用したすべてのReactのものを学びました。それは、私がEmberをどれだけ速く学ぶことができるかについての良い感覚を彼らに与えるでしょう。

このケースは、ポートフォリオを構築するときにすべての卵を1つのバスケットに入れずに、実際にいくつかの異なるスタックを試してみることが実際に報われる理由の完璧な例です。

すぐに大きな日が来て、私は彼らのオフィスの別の偽の草の床の会議室に戻った。アプリのUIフローを表示することから始めました。

Webアプリにアクセスすると、すぐに仮題「AppHunt」が大きな太字の紫色の文字で画面に点灯しました。それはProductHuntのようなものでしたが、厳密にはアプリのマーケットプレイスのようなものでした。そのため、どのユーザーもホームページを閲覧して、販売用および購入用のアプリを探すことができます。また、アカウントを作成してログインすると、アプリアイテムの検索とフィルタリング、評価、コメントフィールドへの書き込みも可能になります。基本的にはそれだけでした。

しかし、幸いなことに、それで十分でした。2人の上級開発者は、私が見せたものがとても気に入ったので、CTOに親指を立てました。彼らは後で私に彼らが特に好きないくつかのことを話しました:

  • コメント、検索結果、評価の変更などのリアルタイム機能が即座に表示されることから、JavaScriptフレームワークで重要な状態と小道具の使用方法を知っていることがわかりました。
  • JBuilderを使用して、フロントエンドとバックエンドの間でJSONリクエストをシリアル化しました。
  • 検索機能にElasticsearchを使用したこと。
  • 彼らがデザインを気に入ってくれたこと、そして私がコーディングを始める前に自分でスケッチをスケッチしたこと。
  • CSSコードは、コンテキストに応じたスタイルやネストがあまり行われていませんでした。代わりに、アプリ全体でその多くが再利用可能であることがわかりました。これは良かったです。しかし、彼らをさらに感動させたであろう1つのことは、私がいわゆるBEMCSS命名規則にも従ったかどうかということでした。

2回目の面接から数週間後、CTOから再度申し出がありました。何度か話し合った後、6か月の試用期間に落ち着き、月給は3,300ドルで、生産的なレベルに達したときに目標の3,700ドルに引き上げられました。

私はその場で受け入れ、翌週新しい仕事を始めました。✌️

Teamtailorプロセス全体と並行して、他の4社にもインタビューを行いました。最も注目に値するのは、スウェーデンのフィンテック現象iZettleでした。これは、いくつかの異なる金融商品の傘のようなものですが、ワイヤレスカード端末がおそらく最もよく知られている端末です。

この成功したスタートアップはユニコーンの評価に近づいていたので、経験とスキルレベルに対する彼らの要求は、これまでにインタビューした小規模なスタートアップよりも大幅に高かったことがわかりました。彼らが行ったはるかに徹底的な採用プロセス(5回の面接!)と面接の質問の難易度の両方でそれを見ました。

私のような新人がそもそも面接を受けた主な理由は、主に友人からの推薦と卒業したビジネススクールの名前によるものだと思います。だから私は自分の道をだましました、と私は言います。しかし、私は明らかに彼らのために準備ができていませんでした。

他社と同じように、最初の面接はすべて綿毛とソフトスキルでした。しかし、今回はさらに多くの「HR」。なぜあなたは開発者として働きたいのですか?どのテクノロジーを使用するのが好きですか?あなたの長所/短所は何ですか?等々。簡単なもの。

しかし、2回目の面接は、非常にトラウマ的な経験になるでしょう。それはすべて、私が2人のWeb開発者と一緒に会議室に座っているところから始まりました。「お互いを知る」という会話全体を繰り返し、とても快適で自信が持てるようになりました。そして、私は私の人生で最大の吸盤パンチを手に入れました。

どこからともなく、テーブルの向こう側の男が私に巨大な白いA3紙とペンを手渡した。彼は、次のシナリオに関連するデータフローとプロセスのスケッチを描いてほしいと言っていました。

「中小企業の所有者はiZettleのアカウントを持っており、カード端末を使用しています。自分の顧客の1人が端末を使用して購入した後、その顧客はWebアプリやモバイルアプリにログオンしてトランザクションを確認したいと考えています。」

これは本当に私を不意を突かれたが、私は躊躇してうなずき、挑戦を受け入れた。すると男はこう言いました。「コーヒーを飲みに行って、5分ほどで戻ってきてあなたの考えを説明しましょう。」

5分!それは冗談でしたか?本当に分からなかった。彼らが去ったとき、私はこれが何らかのトリックの質問であるかどうかを真剣に考えました。そこでは、このタスクが大きすぎて、このような短時間できちんと実行できないことに気付くはずでした。しかし、時間はすでに不足していて、リスクが大きすぎました。それで私はそれを試してみることにしました。

後から考えると、これはシステム設計の質問でした。つまり、基本的に、ウェブアプリとモバイルアプリがサーバーとデータベースに接続しているAPIにリクエストを送信した方法の全体像をマッピングするだけでよいということです。 (システム設計スキルを向上させたい場合は、このYoutubeチャンネルをお勧めします)。

しかし、私はそれをしませんでした。私のパニック状態では、いくつかの手順をスキップして、テーブル、列、および外部キーを使用して、ユーザーアカウントのデータベースモデルをスケッチしようとし始めました(リレーショナルデータベースを使用していると想定しました)。それが終わったとき、アーキテクチャの他のコンポーネントをマップするために残り約30秒がありました。私は非常にストレスを感じていたので、すべての哲学を理解し、APIとサーバーの実際の役割が何であるかを疑問視し始めました。良い兆候ではありません。

5分が経過し、2人の開発者は5歳にほとんど値しないスケッチに戻りました。基本的には3つの円を描いただけです。1つはデータベースを表し、右側はWebおよびモバイルアプリクライアントを表します。

もちろん、私は無残に面接に失敗しました。それは私が3番目のものに移らなかった理由でもありました。しかし、彼らは私を簡単に失望させ、彼らは私を好きで、私があと1、2年の経験を積んだときにもう一度応募するべきだと言った。

自分の実践的なスキルを彼らに示す機会が得られたとは思わなかったので、経験全体が私を困惑させました。システムアーキテクチャを一枚の紙で説明できることにはある種の価値があることはわかりますが、コーディングなどの実践的な演習でスキルを示すことができることには、1000倍の価値があると思います。チャレンジまたはアプリのデモ。しかしねえ、すべての失敗で学ぶべき教訓がありますよね?

全体として、4週間の就職活動の間に、6社の11の面接に出席することになり、そのうち3つが私に申し出をしました。ですから、何度か火傷を負ったにもかかわらず、それは本当に素晴らしい経験でした。 (夢のオファーを受け取ることを除いて)1つの最大の報酬を挙げてもらうように頼まれた場合、ソフトウェアについて開発者と話すことに慣れたことでしょう。あなたが私のように詐欺師症候群に苦しんでいるなら(それを調べてください、それは問題です)、それを治療するためのより良い方法はありません。

もう1つの重要なポイントは、11回のインタビューのうち、実際の理論計算機科学の知識が必要なのは1回だけであることが判明したことです。複雑なデータ構造に関する質問や、悪意のあるブレインティーザーはありません。システムアーキテクチャに関する1つの質問。残りは100%実践的またはソフトスキルを中心としていました。したがって、GoogleやFacebookで派手なソフトウェアエンジニアリングの仕事に応募するのでない限り、実用的なものに焦点を当て、後で理論的なものを学ぶことを強くお勧めします。

最後に、私が採用された会社の関係者を誰も知らなかったという事実を強調したいと思います。強力なパーソナルネットワークが最初の開発の仕事に着手するための唯一の最も重要な要素であると主張するコンテンツがたくさんあることを私は知っています。それは統計的には正しいかもしれませんが、リファラーなしでコールドアプリケーションを適用することは間違いなく時間の無駄ではありません。

パート8:今日私がしていること

この記事を書いている時点で、私はTeamtailorで6か月間働いています。そして、時間は私が想像したよりも速く飛んでいました。私は、ここストックホルムで通常耐えるのに苦労している長くて暗くて凍えるような冬にほとんど気づいていません。

私は12人のチームの一員であり、1人のデザイナーを除く全員がフルスタックのRailsとJavaScriptの開発者です。10年以上の経験を持つ人もいれば、ほんの数年しかいない人もいますが、実際の学術技術の学位を取得しているのは2人だけです。私たちの残りの部分は多かれ少なかれ独学です。

私はRails / Emberプラットフォームをハッキングして日々を過ごし、毎日、同じ朝に見つけたよりも少しだけアプリを離れようとしています。製品自体は、企業がコーディングスキルを必要とせずに、簡単かつ完全に独自のキャリアサイトを構築および管理できるようにする求人Webアプリです。

次に、このキャリアサイトの背後にあるアプリには、2つの主要な側面があります。

  1. これにより、ユーザーは、求人情報、ソーシャルメディアコンテンツ、ブログ、画像、動画、GIFなどの手段を使用して、才能を引き付けることを目的とした雇用主のブランディングを処理できます。
  2. トラフィックと応募者を処理するための膨大なツールセットを提供します。たとえば、候補者の追跡、チャット、メール送信、テキストメッセージの送信、テストによる評価、候補者があるステージから別のステージに移動したときに何らかのアクションを実行する自動トリガーの設定などです。いくつか例を挙げると、すべての主要な求人掲示板で求人広告を宣伝しています。

仕組み

私たちの製品チームでは、スクラム、かんばん、ペアプログラミングのアジャイル原則に従うように最善を尽くしています。実際には、これは私たちがサイクルで作業を実行することを意味します。そこでは、新しい機能の実装を一度に6週間実行されるプロジェクトに分割します。次に、各プロジェクトには2人と2人の開発者がペアになっており、6週間以内に新機能を出荷する責任があります。ペアは、計画された各機能内の小さなタスクの事前定義されたTrelloボードに基づいて、作業を継続的に展開します。

もちろん、私たちは新しいものを作るだけではありません。アプリのメンテナンスも行っております。そして、このメンテナンスの中核には、かなり珍しいルーチンであると私が信じているものがあります。それは「tech-on-call」義務です。これは、各開発者が1週間を費やして、インターコムのユーザーとサポートスタッフを支援する週ごとのローテーションポジションを意味します。

これが煩わしくて苛立たしい仕事のように聞こえると思うなら、それはそうでした。各tech-on-callが、サポート業務中に他のすべてのプロジェクトを一時停止することを決定するまで。それから突然、インターコムに費やす毎分が私のプロジェクトと締め切りから盗まれた分だと感じなくなったとき、私は実際にそれを楽しみ始めました。

考えてみてください。時間をかけて耳を傾けると、基本的にはボランティアの品質保証テスターの軍隊が自由に使えることに気付き、製品の実際のUXとユーザーの問題点について即座にフィードバックを提供する準備ができています。これを考慮すると、私が取り組んできた他のプロジェクトやバグと同じくらい、テックオンコールの週から多くを学んだと言えば十分です。

最後に、各6週間のサイクルの間に、Trelloバグボードに並んでいるすべてのバグを潰すための共通の努力をするために2週間かかります。また、この2週間を使用して、アプリに表示したい新機能の提案を作成します。その後、すべての開発者は、8週間ごとに開催される共有ピッチ会議でこれらのアイデアを提案する機会を得ます。これは、難しいコードの問題だけでなく、既存の製品への新しいクールな追加を通じてビジネスの問題も解決しようとしている人にとって本当に力になります。 。

私がこれまでにしたこと

このアプリには非常に多くの機能とテクノロジーが含まれているため、最初はまったく異質でしたが、2週目ですでにアクションの真っ只中に投げ込まれました。オンボーディングプロセス(つまり、上級開発者にロープを見せてもらった)は、わずか5日間しか続きませんでした。その最初の週の後、理論的には、私は多かれ少なかれ自律的であるはずでした。

つまり、プラットフォームのアーキテクチャ、開発ツールキット、チームのワークフロー、スタイルガイド、ユーザーや同僚にテクニカルサポートを提供する方法、およびコードの開発、テスト、デバッグ、レビュー、展開のための他の内部ルーチンを理解することが期待されていました。 。言い換えれば、ブートキャンプから出てきたばかりの人のためのたくさんの新しいものです。

私が実際に1週間ですべてを学んだと思うので、今パニックになっている場合は、リラックスしてください。私は絶対にしませんでした。私がそのようなもののほとんどに慣れ始めたのは、数ヶ月後のことでした。そして時間が経つにつれて、他の人は気づき、私はますます責任を持って信頼されるでしょう。それ以来、私はこれまで取り組んできた中で最もエキサイティングでやりがいのあるプロジェクトのいくつかに参加するようになりました。

最初の深刻な問題は、アプリにサインアップしたユーザーに関する情報をメールで取得するために使用した方法を更新することでした。このためにサードパーティのAPIとすでに統合されており、フルネームやソーシャルメディアプロファイルやアバターの写真へのURLなどのデータを取得するようにリクエストしました。

ただし、フェッチされたデータが正しくないことが多いことがわかったため、製品チームは別のプロバイダーに切り替えることにしました。それは私をアプリのいくつかの重要な領域とデータフローにさらすことになるので、それは私にとって完璧な次のステップでした。

それを実装するには、クライアントレイヤーの最前部にあるユーザー入力からメールを取得することから、データがEmberフロントエンドからアダプターやシリアライザーを経由してRailsバックエンドにどのように移動するかを理解するまで、すべてをナビゲートする必要があります。最終的にはデータベースに保存されます。

私の2つ目の機能は、「行動を促すフレーズのボタン」と呼ばれるものを開発することでした。つまり、ユーザーがエディターツールで自分のキャリアサイトにカスタムボタンを追加できるようにすることです。

たとえば、特定の求人、特定の部門、または完全に外部のURLのページにリダイレクトできるようにしたいと考えました。これは実際、私が予想していたよりもはるかに簡単であることがわかりました。バックエンドアーキテクチャのほとんどはすでに配置されているので、基本的にいくつかの新しいEmberコンポーネントを作成し、キャリアサイトエディタの他のオプションに追加するだけでした。

私が取り組んだ3番目の機能は、ユーザーが外部の評価プロバイダーと統合できるようにすることでした。つまり、Hackerrankのようなテストプラットフォームに候補者を送ることができます。テストが終了すると、結果はGoogleとプロバイダーのAPIの統合を通じて自動的に送信されます。これは大きなものだったので、私は主にプロジェクトを担当するシニア開発者(別名、私たちのチームのEmberグランドマスター)のアシスタントを務めました。それでも、API統合を適切に設定し、トリガーを使用してワークフローを自動化する方法について多くのことを学びました。

私の4番目のプロジェクトはこれまでで最大のものでしたが、良い面悪い面も、多かれ少なかれ自分でやることになりました。アプリ全体は元々Railsで構築されており、ほとんどのビューはJavaScriptとEmberで1つずつ書き直されていました。アプリのメインセクションの1つだけが、まだRailsビューしかありませんでした。これはいわゆる「従業員」セクションであり、基本的にユーザーアカウントの作成、編集、および削除の主な宛先でした。ですから、Emberへの私の翻訳が完璧であることが重要でした。

それは私を狂ったようにストレスを感じさせた。この時点で私は約3か月間チームに所属していたので、迷惑なインターンのように振る舞うのをやめて、より独立して働き始める時が来たと思いました。意味私はできるだけ少ない質問で他の人を悩ませようとしました。これの良いところは、実際のソフトウェアの問題を完全に自分で解決する能力に大きな自信を持ったことです。しかし、悪い点は、それが私を非常に遅くし、2,000を超える新しいコード行の完全な書き直しを出荷するのに6週間かかったことです。

結局、これが、CTOと合意した昇給が得られなかった主な理由であることが実際に証明されました。これは、交渉の終わりを達成できなかったためです。生産的なレベルに達していませんでした。チームの他のメンバーと一致します。

当時はひどいことでしたが、彼の立場は完全に公平であることに気づき、重要な教訓を得ることができました。アジャイルソフトウェア開発の世界では、孤独な狼狽は選択肢ではありません。チームワークは、生産的なワークフローを見つけるための主要な部分です。

5番目のプロジェクトはこれまでで最後であり、実際に出荷したばかりです。これは、新しいヨーロッパのデータプライバシー法(GDPR)を処理するための新しい機能でした。お客様の候補者がデータベースから個人データを簡単に削除できるようにする構築ツールに変換された私たちにとって、また、お客様が候補者にデータを保存および保存し続ける許可を求めることもできました。

かなり簡単に聞こえますか?まあ、そうではありませんでした。まったく。

主な理由は、アプリの単一の宛先に焦点を合わせることができなかったためだと思います。代わりに、この機能では、あらゆる場所にコンテンツを追加する必要がありました。ある場所での通知、別の場所での警告フラグ、3番目の場所での検索フィルターと一括アクション、およびあらゆる場所での数十の新しい電子メール送信アクション。

私が始めて以来初めて、私は私を乗せた上級開発者および共同創設者とペアになりました。ですから、半年前の最初の週からどれだけ学んだかを彼に示すことが本当に重要だと感じました。私の試用期間はもうすぐ終わり、私がチームを維持するのに十分かどうか、彼らはすぐに決定を下さなければなりませんでした。そして、この「単純な」プロジェクトで、私は最初にそれが簡単なことであることを証明することを考えました。

奇妙なことに、複雑さがペアプログラミングセッションをさらに良くしたと思います。アーキテクチャの各部分を設計する際に考慮すべきユーザーシナリオが非常に多かったため、すべての新しいコードブロックについて話し合い、ねじり、方向転換する必要がありました。初めて、UI / UXの側面だけでなく、法的な考慮事項も考慮する必要がありました。これは、正しく実装しないと、ユーザーに多くの問題を引き起こす可能性があります。

だから私たちはたくさんのペアプログラミングをしました、そしてそれは本当に素晴らしかったです。私がコーディングしたとき、彼はたくさんの良いフィードバックをくれて、私のコードをずっときれいにしてくれました。しかし、その最初のオンボーディングウィークとは異なり、私は実際に彼のコードについてフィードバックを提供し、提案を行ったり質問をしたりして、彼のコードを本当に改善することもできました。

私が過去1年間行ってきたように、あなたが激しい発達の状態にあるとき、あなたのスキルがいつでもどれだけ向上したかを定量化するのは難しいと思います。ですから、彼のベルトの下で15年以上のコーディングを行って、この男に建設的なフィードバックを与えることができたことは、私にとって本当に壁に書いたものです。

ちなみに、最近気付いた6ヶ月の試用雇用契約の延長もそうだった。これからは正社員になりますが、半年前に最初に給料を請求したのですか??

パート9:開発者になることが私が今までにした中で最高のことである理由

ご存知かもしれませんが、私はコーディングが大好きです。

量的な問題解決を通じて知的限界を押し上げ続けているのが大好きです。

UIからシステムアーキテクチャまで何でもデザインするときに、クリエイティブな表現の出口を提供してくれるのが大好きです。

私はそれがすべての現実世界の問題に対して千の異なる解決策を私に提供することを愛しています。

私はそれが私の内なる完璧主義者を容認するだけでなく、実際にその完璧主義者が存在することを要求し、そしてその不在を罰することを愛しています。

小さな話や礼儀正しさよりも真正性と透明性を重視する人々に囲まれているのが大好きです。

内向的な日には、ヘッドフォンを装着し、袖をまくり上げて、しばらくの間、別の次元に深く潜ることができるのが大好きです。

他の多くの停滞した職業とは異なり、それは私が学ぶために常に新しい何かを保持し、それは私が生涯学習者である必要があることを愛しています。

しかし、何よりも、コーディングによって未来は本当に無限であるという感覚が得られたことが大好きです。

数週間で27歳になりますが、将来がどうなるかわかりません。3年間で、私が知っている限り、私は今と同じ立場にあり、同じ会社のコードを書いているかもしれません。私は主任開発者かもしれません。私は製品の所有者または管理者である可能性があります。または私はどこか完全に違うかもしれません。

日当たりの良い楽園から離れた場所でフリーランス。破壊的なブロックチェーン上で分散型アプリを開発する。地球温暖化と戦うための機械学習モデルの設計。火星への遠征のための宇宙船アルゴリズムの作成。または私自身の製品を構築します。

上記のシナリオはすべて、コーディングを開始する前はまったくおかしなことに思えたでしょう。

せいぜい、私の以前の財務の仕事は、上向きに傾斜したKPI曲線で満たされた厚いパワーポイントのプレゼンテーションをまとめたというスリムな満足感を私に与えました。そして、私が考えることができる最善の将来のシナリオは、私の人生の10年を投資銀行、プライベートエクイティファーム、または経営コンサルタントで100時間の労働週に捧げた後、上場企業でCFOまたはCEOの地位に就くことでした。人生で意味のあることをしようとするよりも、お金と名声を気にする人々の周りで私の日々を過ごしました。そしてそれは私を怖がらせた。

今日、私を怖がらせるような将来のシナリオはありそうにありません。そしてそれだけで、過去3年間の私の曲がった旅に目的があったことを確信できます。

行き止まりになってしまったキャリアパスに多くの時間と労力を費やしたのは少し悲しいことですが、23歳のときにそれを実感できて本当に幸運だったと思います。立ち止まって、周りを見回して、私がもっと情熱的に感じた何かを追求してください。

とても良いか悪いか、それは私を今日の場所に連れて行ったすべての私の経験の合計だったと思います。どういうわけかこれまでに数人しかやらないこと、つまり私が大好きな仕事を見つけることができた場所。そしてそのために私は言葉が言うことができるよりも感謝しています。

おめでとうございます!あなたはこの非常に長い記事を最後までやり遂げたので、あなたは私と同じように夢中になっているに違いありません。私は当初、このテキストで2つの意図を持っていました。それは、過去3年間の私の失敗と成功を処理することと、私のような道で他の人を鼓舞することです。私は最初のものが完成したと思います。したがって、質問やフィードバックがある場合は、ぜひご連絡ください。以下のコメントまたは[email protected]のいずれか。