プログラミング未経験からカナダで就活を始めるまでにしたこと。

こんにちは。毎度更新が滞ってしまったことへの懺悔から始まるブログも今回で終わりにしたいと思っているmiaです。

本日はカナダ・デー、このあと友達と飲みにいくのですがカフェで友達を待ちながらブログを更新していきたいと思います!(全然書き終わりませんでした!)

今日のブログは、カナダ・バンクーバーでプログラミング未経験から就活を始めるまでにしたことというトピックです。

私は就活をしていないので就職活動系のブログは書けないのですが…少しでも参考になれば嬉しいです。

 

0. 略歴

日本でマルチメディア系の学部(映像専攻)を出て、自動車関係の会社で4年OLをし、その後コロナの関係で約1年くらいコワーキングスペースのアルバイトをしてからカナダへ渡航。プログラミングの勉強はアルバイト時代に独学していたのと、バンクーバーに来てからカレッジと独学を続けてなんとか仕事ができるところまできました。

日本にいるときからカレッジ入学後数ヶ月目まで、独学で勉強していたときに使っていたサイトや本はこの記事で触れているので興味のある方はぜひの記事もチェックしてくださいね。

現在はカナダの会社でweb developerとして働きはじめ、4ヶ月が経ちました。今は転職したい…と毎日思っています

1. バンクーバーにあるカレッジ(Web developmentコース)に行く

バンクーバーにあるカレッジ、CICCCのweb developmentコースに入りました!

よくこのカレッジ(のこのコース)について授業は役に立たない。独学で勉強しないといけない、というようなことを言われている気がしますが、個人的には少し古い情報かな?と思います。独学で勉強をしていかなくてはいけないことは事実です。しかし、これは授業外でも自分で勉強する時間をつくって勉強しないといけない、という意味だと捉える方が正しいと思われます。授業を受けなくていい、授業は自分にとってためにならない、ということはなかったです(デベロッパーとしての経験がある方は別ですが)。

もちろんインストラクターによって授業の質が違うということはあり得ますが、私のインストラクターは最高の先生でしたよ(いつも帽子かぶっている先生)!

コロナの影響もあってリモートでも対面でもどちらでも授業は受けられたのですが、私は毎日ほぼ欠かさず学校に行って、先生に顔を覚えてもらって、何をしていけばよいのか、次にどんなサイトを作ろうか、何を使って作ればスキルが上がっていくか、など相談をするようにしていました。

未経験からデベロッパーになろうという人は先生定期的にアドバイスをもらいながら勉強を進めつつ、カナダでの生活に慣れていくのがおすすめです。

カレッジで学んだこと(覚えている範囲で)
  1. プレクラス(2021/4)
    1. コンピュータ概論的なもの
    2. HTML
    3. CSS
    4. Javascript(少し)
    5. デザインのモックアップを作る(Sketchとか)
    6. 毎週プロジェクト有り(LP1つ、ポートフォリオサイト1つ、モックアップ1つ(グループワーク))
      1. https://sad-boyd-86de8e.netlify.app/(ポートフォリオサイト、フロントだけ。ここまで作れるようになる)
  2. 本クラス(2021/5-)
    1. コンピュータ概論的なもの
    2. HTML
    3. CSS(Bootstrapの授業も1日くらいあった)
    4. figma(2時間くらいだけど)
    5. Sass(この辺まで楽勝 6-7月くらいまで)
      1. LP作った(https://app.netlify.com/sites/eager-knuth-847dfa/overview
    6. アルゴリズム(Leetcodeとかはやらず、先生が用意した問題を解く。)
    7. Git(未だにちょっと使うの怖い)
    8. Java+Spring(初めてのフルスタック、白目、嫌な思い出しかない)
      1. Spring、PostgresSQL(ぞうさんのやつ)でTodoListつくった。
      2. オブジェクト指向を嫌というほど説明された
    9. MySQL(Windowsのユーザーの生徒がインストールできないとかなんどかで授業が潰れた記憶…)
    10. Javascript
    11. Python+django / PHP (かなりさくっと)
    12. React(めっちゃがっつりやった気がする、JSの授業でおいていかれた人はそのまま継続しておいていかれる)11-12月
      1. ブログ記事検索チャット作った(https://vigorous-hoover-828c01.netlify.app/
      2. お天気アプリ作った(自分でしたデザインくそかっこいいと思ってるhttps://happy-hawking-f6969d.netlify.app/
    13. Redux(redux-thunk / redux-toolkitとか)
      1. Redux-toolkit使ってYoutubeの勉強動画だけしか検索できないサイト作った(https://focustube.vercel.app/)
    14. Typescript(Javaのときに1回死んでリボーンした経験が生きた)
    15. Firebaseとかやったかも
    16. Node.js(結構やる、Javaのときに必死にバックエンドやったから話がわかるようになっていた。)1-2月
    17. Express
    18. MongoDB, Mongooseとか(ここでNodeとExpress、MongoDBでブログサイトを作った気がするけど、URLが探せなかった)
    19. MERNスタック(もくもく会のアプリ作れた)
      1. もくもく会のアプリ作った。みんな使ってくれたり、デベロッパーの先輩方がフィードバックをくれていろいろ改善させたりもできた。(https://mokumoku-miacan2021.vercel.app/)
    20. Auth0?JWTログインのやつやった気が(目の前にもやがかかり始める)
    21. テストとか(もう泡吹いてて覚えてない)

 

HTML・CSSのあたり

独学で学んでいたこともあり、このあたりの授業の理解はかなり余裕でした。自慢になりませんがCSSは自分の英語よりも流暢に書けたと思います。

PositionやGridなど、少し初心者にはトリッキーな呪文も難なく唱えることができる感じでした。SassもUdemyの講座で勉強していたので、大丈夫でした。

この辺は授業から学んだことはなく、授業は復習的な位置づけでした。

アルゴリズム

毎日苦戦に苦戦で、理解しようと頑張っていました。今でも全然得意ではないですが、先生のおかげでLeetCodeを開いてもアレルギー反応は出ません。

こんな感じで授業で習ったアルゴリズムをNotionにまとめていました。

 

このときはアルゴリズムの考え方を日本語で整理しながら文字に起こすと、頭の中も整理でき、理解が深まる気がしたのでそうていました。

Java

いらないんじゃないかという声も大きい単元ではあるのですが、個人的には序盤にJavaの単元があり、一回打ちのめされたのは良い経験だったなと思います。のちにTypescriptやNodeでバックエンドを学ぶときの軸になってくれたような気がします。

Python、PHPとかのあたり

先生に真剣にやらなくて良いと言われていたので(カリキュラムに入っているのでスキップはできないらしい)、さらっと聞きながらReactの勉強をしていました。結果的に今の会社でPHPで1サイト作ることがあったので、授業で少しやっておくことができてよかったです。

React

Reactの授業が始めるのがコースの後半に入ってからなので、前半のうちに独学で勉強を始めていました。

Youtubeのトラハックさんの動画で基礎を覚えたら、あとは手を動かしてなにかを作っていき詰まったら調べるという流れで勉強していました。

ですがいざ授業でReactを習ってみると、授業のスピートが早いので独学でちょっとつけた知識はすぐに授業内で扱い終わってしまい、新しいことを毎日習って復習をしていくというサイクルでした。Reactの導入部分で結構詰まっている人が多かった印象なので、JSの基礎-中級レベルくらいの知識はしっかり定着させておくと良いと思います。私は渡航前に一回Reactに手を出して全くわからないと思ってJSをに戻って勉強しなおした人なので・・・

勉強しなおしたときの話はここにまとめています(英語ですが気になる方がいたらチェックしてみてくださいね)。Why did I fail to study React once? Things to keep in mind before a coding beginner learns to React.

Node

バックエンドも結構楽しいやん〜。

MERNスタック

三途の川がちらつく。Youtubeのチュートリアル動画に何度も助けられました。

テスト

記憶なし。

 

リンクが貼ってあるサイトは、すべてスクールプロジェクトとして作ったもので、約5−6日くらい?で完成させたものです。

Node、テストの授業が終わると、その後10週間くらいポートフォリオを作ったり、ポートフォリオに乗せる作品づくりの期間(プロジェクトのターム)になります。その間は授業はないのですが、先生に質問したりして自分のポートフォリオを充実させる期間になっています。その10週間が終わるとCo-opが始まります。

この期間に作品作りに時間を割いてもよし、就活を初めてもよし、バイトをしていても、旅行にいってもよしです。

実際には、この期間の少し前にはポートフォリオも作品もいくつか作り終えて、就活を始めていた人が現在就職できている印象です。

私はこのプロジェクト期間に働きはじめました(5月からCo-opだったので、この期間はバイト兼インターンとして働いていました)。1年後には就職していないといけないということを頭において、逆算して行動していった結果良い方に向かったかなと思います。

本当に!!貯金が尽きる!!!手前でした!!!!!よかった!!!!!

 

5月から授業が始まった私は、12月には個人プロジェクトのhttps://work-friendly-cafe-van.vercel.app/(Next.js, GraphQL, WordPress,MapBoxとか)

ポートフォリオhttps://shiho-kazama.com/(React,Typescript,Styled−component, Framer−motion,DEV.API とか)を作っていました。

両方とも、何を使って作るかを先生に相談して、デザインから自分で作っています。

このポートフォリオを見せたとき、先生がよくここまで1年できたねと言ってくれたのが一番うれしかったかもしれません…!

このプロジェクト期間に作ったサイトは、学校の座学最終日のプレゼンで発表します。

私は最後にNext.js, Typescript, AWS amplify, GraphQL, TailwindでちょっとしたSNSっぽいwebアプリを作り(これも作りたいものを伝えて、どんな技術を使うのか先生に相談しました)、ポートフォリオや過去の作品と一緒にプレゼンしました。

 

私のポートフォリオは更新しなきゃと思ってしていないページがたくさんあるのですが、私が就職までにやってきたことが見てわかると思うので良ければ参考までにリンクを貼っておきます。

https://shiho-kazama.com/

 

2. 自習をする

 

私が自習をするときにどうやって勉強してきたかをシェアしていきたいと思います。

 

アルゴリズム

10月頃からLeetcodeをやり始めました。EasyレベルのAcceptanceの割合が高い問題から解くようにしていました。

初心者の場合はそうしないと、全く解けない問題、どうやって考えるか検討もつかない問題からやり始めることになってしまうので、継続することが難しくなってしまうと思います。

簡単な問題から解いていって少しずつ自信をつけていきました。

Reactとか

Reactの勉強ってどうやってやりました?という質問が多いのでお答えしたいと思います。

まず、以前にも書いたと思いますが、完全に初心者から勉強している人は「Javascriptは実務でそんなに使わないからそんなに勉強しなくていいよ。Reactの勉強した方が良い。」という経験者からのアドバイスを鵜呑みにしてはいけません。絶対にだめです。本当にだめです。

初心者のそんなに勉強しなくていい→for文とかDom操作とかが分かったらもういいかな〜?

経験者のそんなに勉強しなくていい→非同期処理、クラスくらいまでさらっと分かっていたらいいんじゃない〜?

ここの幅が結構広いなと思っています。なので、Javascriptはちゃんと勉強しましょう、スキップしてReactにいくとまたJavascriptの勉強に戻ることになります(私だ…)。

私は、Javascriptがある程度わかるようになってからReactの勉強を再開しました。

まずはfreecode campのReactを全部やって、Youtubeのトラハックさんhttps://www.youtube.com/user/1492tiger

のReactの動画を見ました。うまく理解できなかったら、その都度検索して確認するようにしていました。

また、動画を見ていく上で、自分の作りたいサイトがこの習ったことを使って作れないかと考えるようにしていました。

トラハックさんのReactの講座は、チャットボットを作りながら学んでいきます。

私は自分のブログ記事をサジェストしてくれるチャットボットが作りたかったので、チュートリアルで勉強したことにAPIのフェッチなど色々なところから得た知識を使って混ぜ合わせて、自分なりにアレンジを加えてサイトを作り勉強を進めていました。

個人的にはこの方法が一番定着が早いなと思っています。あとは毎日なにかしらのコードを書くことで、覚えていけたこともあると思います。

MERNスタックのもくもく会のアプリも、授業でやった内容プラスhttps://www.youtube.com/watch?v=ngc9gnGgUdA&t=1861sこの動画を見ながら、自分でも調べながら作っていきました。

これはReactの学習に限ったことではないですが、ただチュートリアルを見たり、その通りにコードを写経するよりも、自分が作りたいサイトに置き換えて、このコードを使ってどんなことができるのか、を考えながら何かを作っていけるといいのではないかな〜と思います。

 

3. 日本の会社で働いてみる

日本の会社でほんの少しリモートで働きました(今年の2−3月)。

カナダからWantedlyを使って求人を探しアプライ、(20社くらい送りましたが、就労経験がない海外在住者だとなかなかいい返事が貰えなかったりします)、2社のzoom面接を受けて、そのうち1社から良い返事をいただくことができました。

Next.jsとGraphQLを使ってShopifyアプリの開発をしていました。

ここで働き始めて数週間後にカナダで仕事が決まった+色々合わなかったので、1ヶ月半くらいで辞めました…。

なんで日本の会社でこのタイミングで働くの?!と思われるかもしれませんが、カナダで就職するための一種の戦略てきなところがありました。

未経験からいくら勉強をして、完成度の高い個人プロジェクトやグループプロジェクト、ボランティア(ボランティアは内容にもよる)などをやっても、企業側からしたら、「この人をお金を払って雇って、本当に働ける?プロジェクトを進めていける?」というところのギャップを埋める十分な証明にならないんですよね。現地のCS専攻の学生のようにインターン経験もない、何も働ける証明ができない未経験から1年だけ勉強をしましたという私を雇うことは、企業にとっては博打をするようなリスクがあるという自覚がありました。なので正直、私が企業側なら私のことはいらないなと思ったんです。

特に、カナダには日本のような新卒文化がないので、経歴やスキルが重視される傾向があります。

そして、残念ながら鐘楼経験があることに勝る個人プロジェクトは私みたいな凡人にはなく…。

ポートフォリオに載せられるある程度の個人プロジェクトはもう完成していたので、ここからまた更に個人プロジェクトでチャレンジングなウェブアプリを作っていくよりも、どこかで働いていた証明ができた方が就活する上で優位に働く可能性が高いと判断したので、まずは言語的な壁のない日本の会社で働いてみることにしました。

カナダでデベロッパー経験がある(カナダの会社でもやっていける(言語や会社の文化への適応)、デベロッパーの仕事もできるという証明がある人)>>その人のスキルによるが、壁はある>>>日本でデベロッパー経験がある(国は違えど、デベロッパーの仕事がしていけるという証明を持った人)>>>>とっても超えられない壁>>>>>>>未経験からカナダで1年勉強した”だけ”の人(お金をもらって開発した経験がなく、信用に値するかわかりかねる)

という図が成り立つと思っています(個人的な見解です)。

クラスメイトの中にも、チームで働いていけることを証明できるようにチームプロジェクトを自主的にやっている人もいました。本気で就職したい人はみんなそれぞれ、戦略を考えて計画をしていたと思います。

4. まとめ

 

これが私がカナダで就活を始めるまでにしたことです。

よくどうやって就職したんですか?と聞かれるのでざっくりですがまとめてみました。

一般的に就職した方法を聞くと、スカウトだったり、indeedで求人を見つけて、出された課題をやって、面接をして、という話になると思うのですが、私のような未経験から勉強していく人にはもうさっぱり、自分には無理、不確定要素多すぎ、な世界だと思います。

実際に運ゲーなところも否めないです…。

おすすめとしては、まずは未経験からカナダの会社に就職した人のポートフォリオを見たりして、このレベルにもっていけば就職できる可能性があるんだな、今の自分にはこれはできないな、というように自分の今のスキルとすり合わせをしてどんどんインプット・アウトプットをしていくとよいと思います。

私はスカウトで今の会社に拾ってもらったので、結果的にカナダで就活はまだしたことがないのですが、これから転職しようと思っているので、またシェアできることがあれば記事にしていきたいと思います。

 

それでは、また。