Baby steps to migratory bird

元半導体系エンジニア、今Webエンジニアの雑記

プログラマーになりたいと思った人がやるべき7つのこと、を読んで自分の勉強体験を思い返す

自分がIT業界で転職活動する上でとても参考にしたAXIAの社長ブログがある。

そのブログで最近下記のような記事が書かれていて、このところ自分の経験の棚卸中だったので記事の流れに沿って勢いで書いてみる。

axia.co.jp

1. とりあえずプログラミングしてみる

まだ前職にいた頃、転職を視野にいれてプログラミングを勉強しようと考えていた。

元々メーカーで開発職だったこともあり、個人的に関心がある分析系のライブラリが多く初心者がとっつきやすいと聞いたPythonで勉強すること決め, 色々と本も買ってみた。

しかし元々プログラミングに抵抗がある(大学でC言語で挫折した)初心者が最初から本で勉強するのはハードルが高く悶々していたところ、 たまたま見かけたSchooというサービスでPython入門の授業があると知り藁にもすがる思いで受講してみた。

schoo.jp

大げさかもしれないけど、この授業が今自分がWebエンジニアになる大きなきっかけとなる。

下記の理由で、Schooを利用した勉強が初心者の自分にとっては本で独学するよりも合っていた。

  • 動画は情報量が多く本より飽きにくい
  • 現役のエンジニアが何を考えながらプログラミングしているかを話してくれる
  • Schooの特徴でもある対話型のスタイルだと、詰まりやすいところの補足説明が多い

のちのち存在を知ったProgateも素晴らしいサービスで自分も大変お世話になったが、自分にとっての原点はSchooだった。

最初のプログラミングへの心理的ハードルを乗り越え、これならよりガッツリ勉強に取り組んでも大丈夫だなと考えIT留学を決めた。

そんなこんなでプログラミングの最初のハードルを越えた自分だったが、すぐに次のハードルにぶつかった。

授業や本のコードをなめるだけではプログラミングに手慣れるまではいかない

そこで何か問題をひたすら解いて、コードを書くという感覚を手に馴染ませたいと思った。

ググってみると下記のようなサイトに問題がたくさん置いてあるのを知る。

paiza.jp

AIZU ONLINE JUDGE: Programming Challenge

手始めとしてPaizaで初級ランク(C, D)の問題を全部解くことにした。C, Dランクだけでも合わせて100問以上あり、修行のごとく解きまくった。

Dランクは単純計算が多いのだけど、Cランクはちょっとしたストーリーに乗せて出題されるため楽しみながら続けられた。

毎度反省点を見直しながらCランクを解くうちに、コードを書き始める前にどんなロジックで書くかプランを組み立てるべきということが分かってきた。

Bランクの問題も解けるようになった段階で留学期間が始まり、Paizaでの学習には一区切りつけた。

2.何をやりたいのかを明確にする

これに関してはかなりふわっとしてたが、自分の生き方の選択肢を増やしたいなと考えていた。

前職がメーカーで、製品があるところに自分がいなければならないという縛りにつらみを感じていた経験がベースにあり、 住む場所や働く時間を人生のフェーズに合わせて変化させていけるようにしたかった。

他にも理由はあるけど、ここではさらっと流す。

3.自分が目指す業界のことを知る

この点については、主に2方向から調べた。

  • 現役のエンジニア
  • 積極的に発信してる方のブログ
  • テック系Podcast

1つ目のに関しては、留学先のメンターさんが経験豊富なエンジニアだったため、授業に限らず休憩やご飯の時間に色々お話を聞いた。 あとはよく遊びに行っていたシェアオフィスで現地のエンジニアやマネージャーと出会う機会があり、積極的に情報収集をしていた。

2つ目はブログで、IT業界は他と比べて個人で情報発信してる人が多いため調べようと思えばいくらでも出てくる。厳しい話と夢のある話、バランスよい感じでリンクを貼っておく。

axia.co.jp

kuranuki.sonicgarden.jp

www.hassy-blog.com

最後はテック系Podcast。最近Webエンジニアを中心にテック系Podcastが増えている。自分は留学仲間からRebuild.fmの存在を教えてもらったのがきっかけで、今でも色々なチャンネルを発掘しては聴いている。

ぶっちゃけるとRebuild.fmは前提知識がないときついので、しがないラジオが聴きやすくておススメ

rebuild.fm

shiganai.org

4.本格的にスキルを習得する

ここはスクールに通う人はそのカリキュラムにも寄ると思う。 自分の場合はHTML/CSSからJavaScript(jQuery)/PHP(Laravelのさわり)までを一通りやった。

個人的に良かったのは下記の点

  • 初日から「わからないことはまずググれるようになれ」スタイルで教わった
  • フレームワークを触る前に生PHPでMVCモデルを採用したアプリを作った
  • Vagrantを用いた環境構築も体験した
  • Gitを使って小チームで開発をした

教わったメンターさんがフリーランス経験者だったこともあり、実践投入を意識した形で勉強できたように思う。

実は案件を受注してみるカリキュラムもあったが、欲しいスキルが得られなさそうだったので自分はやらなかった。 (自分はサーバサイドを目指したが、クラウドソーシング案件はフロント寄りが多かったため)

5.何でも良いので何か一つ作ってみる

2-3人でチームを組んでいくつか作った。作品と機能はこんな感じ↓

  • ECサイト:商品一覧/詳細表示、おススメ商品表示、カテゴリ分け機能、カートに保存、購入
  • Twitterもどき:ログイン/ログアウト、タイムライン、プロフィール画面、フォロー/アンフォロー

あと上述した受託案件をやらない時間で、Raspberry Piを触っていた。

OSのインストールからちょっとした環境構築まで自分でやるため、正直ハゲそうになりながら下記のようなことをやっていた。(Raspberry Piは初心者が独学でやるのは危険なのでArduinoから始めるのがおススメ)

  • Juliusというエンジンを使った音声認識
  • Siriに話しかけたら8x8のLED上をインベーダーゲームのキャラが走る

2つ目の構成イメージ↓

f:id:roo_oregon:20180408153329p:plain

実は自分のやったことを発表するためにIoTイベントを企画したのだけど、それはまた別の機会に。

6.ソースコードはGitHubで公開する

しょぼくて恥ずかしいと思いつつも、先述のTwitterもどきのソースコードを載せていた。フレームワークも使えていない頃のやつなのでそろそろ隠したい。

7.取り組んだことはブログで公開する

これは転職後にやり始めたので、これから継続しておきたい項目。

最近は勉強会の参加メモばかりなので、もうちょっと自分のことをアウトプットしていきたい。

まとめ

今回書いたことはだいたい8か月間でやった内容

IT業界に入ったら入ったでこの100倍くらいやることが見え、やっていかねばと思う今日この頃。。