プログラミング初心者の主婦がGAFAの問題解けるようになりました!
すごい!自画自賛!
最近の私は、Recursionというプログラミング学習サービスで、プログラミングを勉強しています。
一応理系の大学出てますけどね。
数学英語から離れてだいぶ、いやかなり経ちます。
専業主婦で、プログラミングの知識なんてまったくありません。
そんな私でもたった4か月で、GAFAのコーディング試験で出されるような問題が解けるようになったんです。
今回は、初心者の私が4か月間、Recursionでプログラミングをガチってみたら、どれだけ成長できたのか、見ていただきたいと思います。
プログラミング興味ある方、Recursionおすすめですよ~!
- Recursionにハマる人続出中
- Recursionにハマったその理由は?
- Recursionで身につく知識とは?
- 初心者主婦が4か月で急成長?!私の書いたコード見て!
- 初心者がGAFAの問題を解けるようになった!
- YouTubeで問題の解説してくれるのがわかりやすい
- Recursionでちょっと気になる点
- まとめ
Recursionにハマる人続出中
最近の私、プログラミングにハマっています。
きっかけは、プログラミング学習サービスのRecursionでテストユーザーになったこと。
まったく初心者だったのですが、2週間参加させていただきました。
その感想はこちらの記事にあるので、ぜひ読んでくださいね!
テストユーザーに応募したのは、ブログのためでした。
このブログを書くときにも、ちょっとしたHTMLやCSSの知識が必要です。
文を書くのはHTML、文字を大きくしたり、線をひいたりするのはCSS。
その知識を深めたいと思っていたんですよ。
だけど、全然違った!
もちろん、HTMLとCSSもしっかり学べるんですけど、それはRecursionのうちのほんの一部。
それよりもっと奥深いおもしろさが待っていた~!!!
実際私のようにRecursionにハマっちゃった人結構います。
#今日の積み上げ
— Koichi (@Koichi0091) August 27, 2020
✅ #RecursionCS 中級の再帰 途中まで
わりと難しくなってきたけど楽しい!
再帰は明日終わらせたいな#プログラミング初学者 #駆け出しエンジニアとつながりたい
やっとCS初級クリアすることができました! 始めたばかりの頃よりはコードも理解できて自分の力で少しずつ解けるようになってきたと思う!めちゃくちゃ楽しいからどんどん問題解きたい! https://t.co/ORIkOQPG52 #RecursionCS
— Ren Tachioka (@tachi1144) May 15, 2020
ぜひTwitterで#RecursionCSを検索してみてください。
問題が解けた!とか、どこまで進んだ!といったTweetがあふれてますよ。
みんなが頑張っているのを見ると、自分もやる気出てくるんですよね~
Recursionにハマったその理由は?
試行錯誤の結果、問題が解けた時の爽快感と達成感!
これが、Recursionにハマった理由!
Recursionをやってみて思ったのは、他のプログラミング学習サービスとは一線を画す存在だなということ。
Recursionは今までベータ版だったので、スタート準備のために何度か使えなくなる期間がありました。(※8月7日から正式にスタートしました)
その間、ちょっとだけProgateを試してみたんです。
ちょっとと言いつつ、課金して一通り終わらせましたけどね。
Progateは、初心者がプログラミング言語の文法を学ぶにはとてもいいんですよ。
例えばPythonなら
print ("Hello World")
と書くと、「Hello World」と表示されます。
Progateではこういう書き方のルールを学べます。
簡単だし、わかりやすいし、初歩のルールを学ぶにはちょうどいいと思います。
だけど、言語は何かをするためのツールでしかありません。
例えるなら英語で「This is a pen」を学ぶのがProgateなら、英語でディスカッションするのがRecursionって感じでしょうか。
学んだ言語を使って、あるいは組み合わせて、頭を使って考える。
一生懸命考えるから、解けた時も嬉しい!
そこが、Recursionの魅力かなと思います。
あまり大きな声では言えませんが、Progateの有料ほとんどがRecursionの無料部分でまかなえる気がする…
Recursionで身につく知識とは?
私の今の状況は、例えてみると漢字ドリルを続けているような状態。
コーディングを練習して基礎力を付けています。
ただのツールでしかないプログラミング言語を駆使して、問題を解決する能力を磨いてるんですね。
上級コースまでいったら次はプロジェクトに入ります。
プロジェクトでは、実際に手を動かしながらソフトウェアを開発するらしい。
画像は、ブラックジャック。
開発者のShinyaさんが、こんな感じで作りますよ!と教えてくれました。
- クラス、オブジェクトを使って先にブラックジャックの構造を開発
- フロントエンドに最後につなげてゲーム完成
という流れで、自分一人でソフトウェアを開発できる力を、身につけることができるそうです。
これ私作れるようになるんかな!?めっちゃ楽しみ!
コーディングに終わらせない深い知識を身につける
Recursionで学べるのは、コンピューターサイエンスという現代社会ではなくてはならない技術の元になる知識です。
パソコンやゲームといったものだけでなく、気象予報とか顧客管理とか、あなたにおすすめの商品を提示したり、どこに出店したらいいかを予測したり。
日本で、コンピューターサイエンスという分野はあまり広まっていないのですけど、日常生活では、どこかしらお世話になっているはず。
コンピューターサイエンスについては、こちらのnoteをどうぞ!
開発者のShinyaさんと、ソフトウェアエンジニアのJeffryさんのお二人の共著で、コンピューターサイエンスがどういった分野で使われているのか、詳しく書かれています。
初心者主婦が4か月で急成長?!私の書いたコード見て!
5月に2回目のテストユーザーになって、それからほぼ毎日、ベータ版のRecursionにログイン。
わからないことは、コミュニティーでどんどん質問しながら進めました。
5月から8月までで、私がどれくらい成長できたのか、ぜひ見て欲しい!
自分で言うのもなんだけど、かなりできるようになりました。
もちろん、まだ上級コースの途中なんで、できることは限られてますけどね。
Recursionを初めたばかりのコード
(year)のところに入力した年が、うるう年だったら「true」違ったら「false」と教えてくれる関数です。
うるう年って、4年ごとだと思ってたけど違うんですよ!
100で割り切れたらfalseだけど、400で割り切れたらtrueなんです。しらなんだ。
この条件分けを、if文で分けています。
最初は「関数ってなんですか??」状態だったので、この問題を解くのもすごく時間かかりました。
今はこのくらいのレベルの問題ならすらすら解けます!成長(*´▽`*)
そして、この問題文がおもしろいんですよ。
Stephanieの家では残念ながら毎年サンタクロースは家にプレゼントを運んできません。毎年プレゼントを待ちながら、日付を観察するとサンタクロースが家に来るのは閏年だとわかりました。ある年yearが与えられるので、閏年かどうかを判定する、isLeapYearという関数を作成してください。
サンタさん4年に1度しか来ないって、どんだけ?
他の問題もシチュエーションがなかなか笑えるwww
1回だけ、営業成績を改ざんしてもいい会社とか。いや、あかんやろ。
実際に使うシチュエーションをイメージしやすくしつつ、ちょっと笑えるのがおもしろい!
最近私が書いたコード
これは上級コースの中にある問題。
(1+3)×4-1=15
という計算を解くための計算機を作りました。
小学生でも解ける簡単な算数だけど、カッコや×は、先に計算するというルールがあるので大変。
スタックというデータ構造を使って、演算子+-×÷()の優先順位を付けて、計算結果を表示するシステムです。
全部で89行のコードになりました。
もちろん見る人が見たら、まだまだ残念なところもあると思うんですけどね。
(1+3)×4-1÷3+211×(20+1)=4446.666666666667
こんな複雑な計算も、ポチっと実行ボタンを押せば計算できるんですよ。
実行ボタンを押して、正解が出たときはめっちゃ嬉しかったです😊
初心者がGAFAの問題を解けるようになった!
GAFAというのは、Google、Amazon、Facebook、Appleの頭文字。
私はあまりよくわかってないんですけど、とにかくすごい企業ですよね。(語彙力)
社員の年収は平均2500万円という、飛んでもない世界。
ソフトウェアエンジニアの採用試験では、コーディング面接というのが行われるそうです。
↑で紹介した問題みたいなのを、対面で回答。
聞いただけで大変そう(;´Д`)
Recursionのコミュニティーでは、そのGAFAの問題が週に1回出題されます。
カリキュラムの中級までを終わらせた人が解ける問題を厳選しているそうです。
これはFacebookのコーディング問題。
Q5. Facebook
1からnまでの番号が付けられたn人の生徒それぞれが本を持っています。彼らは自分の本を他の生徒に渡してサインをもらいたいと思っています。n個の整数のリストには被りが存在せず、ランダムな順番で並んでいます。生徒たちは以下の2ステップを1分ごとに繰り返します。
①各学生iはまず自分が現在持っている本(自分の本、または他の生徒の本)にサインをし、それを学生arr[i]に渡します。arr[i]が自分だった場合は、本を自分自身に渡します。
②自分の本を受け取った場合は、その本を保管し、その後渡すプロセスには参加しません。各学生は最終的に自分の本を受け取り、一度に複数の本を持つことはありません。学生を表すarrが与えられるので、学生iの本に存在する署名の数を表す配列を返す、findSignatureCountsという関数を作成してください。
引用:シリコンバレーのテック企業で課された問題|Recursion
たぶん4か月前に見たら、さっぱりわからなかっと思うけど、Recursionのカリキュラムをしっかりやってきた今の私は解ける!
できた~(*´▽`*)
解けるとめっちゃ嬉しいんです。
なんだろうこの達成感!
YouTubeで問題の解説してくれるのがわかりやすい
Jeffryさん登場!
ちょっとロジックが難しい問題を、YouTubeで解説してくれてます。
一つ一つ丁寧に説明してくださってるのでわかりやすかった。
フィボナッチ数列の問題も、イメージするのがなかなか難しいんですよ!
これ結構ありがたいです。
Recursionでちょっと気になる点
以前私がRecursionを紹介した記事にコメントが来てました。
登録しないと内容が見れないのはハードルが高い!
私は、すぐに有料登録しちゃったので気づいてませんでしたが、登録しないと中身がいっさい見れないんです。
最初は無料なので、内容を確かめてから続けるか決めたらいいのですけど、個人情報を知られるのは不安ですよね。
月額料金や、解約方法について事前にわからないのは気になるかも。
それについては、こちらの記事で詳しく紹介しています。
まとめ
Recursionにハマった初心者主婦の成長っぷりを見ていただきました。
たった4か月でここまでできるって、我ながらすごい!
すごいよね?!
旦那転勤族だから就職は難しいんですけど、フリーランスで案件取れるように、これからもがんばろ~
Recursionはこちら↓
シンプルライフなブログがたくさん
応援クリックいただけると泣いて喜びます