見出し画像

エンジニア修行2ヶ月目終了(計632時間)

こんばんはメンディーです。前回の投稿から約2ヶ月が経ちました。前回の記事でも書きましたが現在は大学を休学しエンジニアスクールのG'Sアカデミーにてエンジニアリングを0から学んでいます。

世の中はコロナの影響で新たな時代、価値観に移行している過渡期ですのでバタバタとしているようです。僕はこの期間に休学を選択し、軸をぶらさずエンジニアリング学習にフォーカスできているので「タイミングが良かった」と感じます。因みに現在はリモートとオンサイトを両立するハイブリッド体勢で学習しています。

そんな事はさておき、G'Sアカデミーに入学しエンジニアリングの基礎を身に着けるbootcampフェーズが終了したため備忘録も兼ねて振り返りをしていきたいと思います。最近では友人から現在の活動について尋ねられることが多くなったのでこの記事を読んでもらえれば良いかなと思います。


G'Sアカデミーについて

まず初めに僕が通っているG'Sアカデミー(以下G'S)について少し説明しておきます。G'Sはデジタルハリウッド大学の傘下にあるエンジニア養成スクールです。ここで強調しておきたいのはG'Sはプログラミングスクールではなくエンジニアリングスクールということです。何が違うかと言うと、基本的にプログラミングスクールは「コード書けるようになりましょう→転職支援します」のコンセプトだと思います。一方G'Sは「あくまでプログラミングはツールで、それを使って新たな価値を創り出しましょう→起業支援します」のコンセプトです。僕は元々エンジニアとして生きていきたいと言う思いはなく、エンジニアリングを武器として何かを創り上げたい思いが強かったためG'Sの説明会に出た時に「これや!!」と思い、即応募、入学試験を受け入学しました。

ここから分かるように、「とりあえずプログラミング学びたい!」みたいな学生はいなく、「既にあるアイディアを実現させたい」と一流企業(外コン、商社、大手メーカーなどが多い印象)、安定した生活から飛び出すような良い意味でクレイジーな学生(ほとんど年上)が集まっているスクールです。ですので、レベルはとても高く1日10時間の学習を求められます。

また、G'Sはコミュニティが大きく現役生、OB関係なく交流できる場でもあります。学習、就職、起業、について第一線からアドバイスしてもらえるのでコミュニティ自体もとても魅力的です。

結論、本腰を入れて学習したい人にとっては授業の質、同期のレベル、コミュニティの大きさなど、全てを考慮してもG'Sはこれ以上の無い環境です。

G'Sアカデミーについて
https://gsacademy.jp/
https://newspicks.com/news/5027403/

1~2週目 HTML/CSS

最初の2週間はHTML/CSSを学びました。授業のレベルが高いとは把握していましたが「2週間でHTML/CSSを使いホームページのレイアウトを作って発表してください」と言われた時は「それはいくらなんでも無理。」と思いました。想像のはるか上のレベルで焦りましたが、逃れられるわけでもなく「そもそもHTMLってなんぞや?paddingとは?」のレベル感だった僕はとにかく時間をかけてHTML/CSSの動きを理解することにしました。ここで大事なのは動きを理解することです。

これは英語、中国語を学習して感じたことですが言語って意味や語源を深く理解してもうまく話せるようにはならないんです。大事なのはある程度の単語力、文法理解、そして何よりアウトプット。それを積み上げれば自然と話せるようになる。

プログラミングにもその理論を適用しました。paddingなどの単語を覚え、文法を理解したら、実際にそれを使って動かしてみる。そしてなんとなく感覚を掴んでいく。これを2週間行いなんとか課題を形にすることができると思いました。

課題は基本的なHTML/CSS/jqueryを用い、農家のホームページのトップページっぽいものを作りました。レスポンシブ などは対応できていませんが、とにかく形になるものを作ることが目標だった僕はなんとか第一関門を突破したと同時に、自分が書いたコードが可視化され動いている事に感動したのでした。

3~6週目 Java Script/python

3週目からはjavascript( 以下js)の学習に突入しました。3週目からJSを学ぶという驚異的なスピードで授業が進むのでとても焦りましたし、JSになるとhtml/cssとは異なりロジックの理解が必要になるので、理解にとても苦しみました。「functionとはなんぞや?ブラウザとはなんぞや?」の状態からjsonでのデータ管理から始まり、firebaseでなんちゃってSNSを作り、googlemap apiを叩いたり、Linebotをherokuでデプロイしてみたりと簡単ではありますがとにかく小さいアウトプットを意識しながら学習してきました。

JSは書いたコードの結果が動的に動きますし、視覚的にアウトプットを理解できるのでとても面白かったのですが、元々データに興味のあった僕は、どうしてもPythonの学習がしたいと思い4週目から授業と並行してpythonの学習を始めました。(G'Sは興味のある言語は進んで学習できる環境なので並行学習okです)

Pythonの学習を始めてからはターミナルの理解や環境構築で多少苦しんだものの、pyqで文法を学習しつつアウトプットとしてフレームワークのdjangoを用いて模擬ポートフォリオサイトやブログサイトを作りました。pythonに関しては文法が特段難しくないので「文法簡単やし、めっちゃ楽しいやん!」と初速はうまくいくイメージですが、djangoなどのライブラリ関係をいじるとガクンとレベルが上がる感じました。また、デプロイするためにAWSやnginxなどと繋ぎこみが必要なのでそこでも苦戦。ただ、将来的にデータを活用しビジネスサイドで動きたいとも考えているためデータ解析関係に入る前のトレーニングとしてPythonで視覚的にアウトプットができるdjangoをとにかくいじっていました。

画像1

学習のイメージとしてはこのロードマップがよく表していると思います。ちょうどwebアプリを数個作ったのでこれからデータ分析に突入していきたいと考えています。

7~10週目 PHP/SQL

7週目からはサーバサイドを学びました。と言っても、0からコードを書いて作り上げる訳ではありません。フォーマット的なコードにデータの受け渡しを付け加えたり、redirect場所を考えてみたりと自分なりにコードをいじり、データの扱いとページ間の繋がりを理解することがメインでした。webサイトで登録を行う場合そのデータはSQL上に保管されていることを知ったときは、「SQLってこんな使われ方するんやな!」と衝撃を受けたのを覚えています。

潜在的にデータに強くなりたいと考えているためか、DBやページ移行の設計をするのはとても面白いと思いました。JSと異なり動的には確認できませんが、設計した通りにカチッとデータの受け渡しがうまくいった瞬間は何とも言えない気持ち良さです。この辺りから、フロントよりもバックエンドを集中的に学習するべきかなとなんとなく考えていました。

11~12週目 チーム開発

11週目から2週間はチーム開発でした。4人1チームとなり9チームでランキングを決めるスクール内選手権のようなものです。僕が所属したチームは周りのチームと比べてコーディングの経験値も戦闘力もズバ抜けて高くないとチーム内で認識していたため高度な技術は使わず、基本に忠実にサービスファーストのプロダクトを作り上げる戦略を取りました。ですのでLaravelを使うチームもある中、JS、PHP、HTML、CSSを用いて基礎から応用までを心がけました。

私はチームリーダーではなかったのですが、僕がチームとして意識したことはコードを書ことに時間を費やすことです。なぜなら、2週間という短期戦において技術的にズバ抜けていないチームが意思決定に時間を費やしては勝てるはずがないからです。ですので、目標プロダクトが決まらない事態に備え僕の持っていたアイディア、コンセプト、WHYの部分まで一気通貫したプレゼンを用意しメンバーに共有。そしてありがたいことにそのアイディアに決定し、すぐさまプロダクト設計、DB設計、UI設計に取り掛かり初日に大枠の設計は終わりました。

後は時間をかけて開発するだけです。基本的にはフロント、バックは関係なく場所ごとの担当だったのですが、やはり1からからコードを書くって難しい。ありがたいことに技術面に関してはリーダーに半日つきっきりで沢山教えてもらい、おかげ様でリーダーのコーディング思考回路を知り、「そうやって考えるのか!」と新たな気づきが沢山ありました。そんなこんなでチーム4人でとにかく時間をかけコードを書きました。発表2日前からほとんど寝ない状況でコードを書き、発表直前に何とか完成。

結果は9チーム中4位でしたが、戦略通りサービス面での評価は高かったと思います。せっかくならば3位入賞したかったですが、チーム内では目標プロダクトを完成させ悔なく走り切れた事にとても満足していましたし、技術面をチームの連携でカバーできたことが何よりも嬉しかったです。

チーム開発で学んだことは、共有をどれだけうまくできるかが重要だということです。この共有は、コードの共有ももちろんですが、メンバーの個性、言葉の背景など、広い意味での共有です。これがスムーズにできていないと最終的にミスマッチが生まれますし、何より無駄な時間がかかる。ですので、Gitやその他サービスをうまく使いこなせるのは大きなアドバンテージですし、これらのフローを時間をかけて学ぶ必要はあると感じました。また、技術面に関しては反省することばかりです。とにかく思ったことをコードに落とし込む練習が必要です。

その他講義(アルゴリズム/デザイン)

G'Sはエンジニアリングのスクールですのでプログラミング以外もアルゴリズムやデザイン、また起業家論などの講義があります。もちろんこれらの分野の習得が短時間でできるわけがないので基礎的な学習ですが、それでもプログラミング学習に対しての視点や考えがよりワイドになり、俯瞰的に自分の立ち位置を認識することができるようになりました。

その中でも特にアルゴリズムの授業に興味を持ちました。具体的にはCPU関係やバイナリーツリーなどを学習しましたが、より大きいところで理解したのは世界で戦うにはプログラミングよりも深いコンピューターの部分まで学習する必要性があるということです。

講義中の先生のお言葉で「人が言葉を話せるのが当たり前のように、プログラミングも書けて当たり前。コンピューターを理解し、裏のアルゴリズムまで作ることができれば世界で戦える。GAFAが優秀な博士を引き抜くのもそのため。」というものがありました。なるほどと思いました。英語や中国語に置き換えるならば、いくら言語をうまく話せてもより深い文化や宗教を理解していと相手と対等には話せない事に似ているなと。プログラムも言語なので当たり前ではありますが、抽象化するとより詳細に理解できると思いました。

話が脱線してしまいましたが、僕の性質上一つの分野でスペシャリストになるよりかは多くの分野を掛け算する事で自分の価値を引き上げる方が向いていると自負しています。ですので、将来的にはエンジニア一本で生きていく選択肢はないです。しかし、プログラミングに加えコンピューターを理解することができればマーケティングでも企画でもどの場面でも一つ階層が上がると考えられるので、いずれはコンピューターサイエンスやC++、C言語の学習に手をつけていきたいと思います。

全体の振り返り

振り返るとこの2ヶ月間は本当にあっという間でした。時間の流れは状況によって変わるものだなと改めて思います。コロナ禍で外出しないことや、人に合わないことも要因としてありますが、何よりコードを理解することで精一杯だったので時間感覚がなくなってしまったのだと思います。これは惰性で学習している時は起こらない現象なのでまあまあ頑張れたなと自分を褒めたいと思います。

ただ、まだまだ課題は多いです。この2ヶ月間の学習でようやくスタートラインに立てた状態です。コードが暗号に見える現象はなくなりましたし、コードを書く習慣もできました。また大枠のプログラミングの概念も理解することができましたが、いざ考えたことをコードに書き出せるかというとそうではありません。ですのでここからは、「思考→設計→コードに書き出す」練習を繰り返し行い、感覚的ではなく全てを理解した上でコーディングができることを目標に学習していきたいと思います。

また、生活リズムの崩壊も反省です。長時間PCと向き合っているためかかなり疲労が溜まりますし、以前の毎日のジムワークが週2になってしまったり、就寝時間が3時4時になってしまったりと、精神的にも肉体的にも負担の大きい生活を過ごしてしましました。その結果、体重が4キロ減少し、寝つきも悪くなり、カフェインが無いと目覚めない体になってしまったのでこれを機に全てのバランスを取り心身共に整えていきたいと思います。(人間って頭フル活用するとカロリー消費めちゃくちゃするので体重が減るんですよね。大学受験時もかなりげっそりしました)

今後は次のフェーズに入り、自分の選択した科目を学ぶスタイルになります。僕はバックエンドのPHP,Python,Laravel周辺を学習しつつ傍でデータサイエンスも少しずつ進めていきます。

まとめ

かなり長い文章になってしまいましたが最後まで読んでいただきありがとうございます。目標学習時間は6ヶ月間1日10時間と想定して約1800時間です。残り112日で1168時間の学習が残っているので、1日平均10.4時間という事になります。サボらなければ達成できる範囲なので引き続き頑張りたいと思います。あと就活もボチボチ視野に入れないとです(泣)インターンのおすすめなどあればDMやLineで教えていただけると嬉しいです。

以上で進捗報告を終わります。ありがとうございました。

この記事が気に入ったらサポートをしてみませんか?