「現場に入る前に学べばよかった」と後悔したRailsやプログラミング関連のスキル

 

当ブログは完全未経験からプログラマーを目指す人のためのブログです

 

f:id:yoshitokamizato:20180718141013p:image

どうも、遅咲プログラマー(@yoshito410kam)の神里です。

現在、プログラミングの勉強でアップアップしまくりです。ここ最近上司が2人いなくなり、さらにアップアップしております。片方は育児休暇、片方は転職、、、寂しい。そして、心細い。

 

と暗いことばかり呟いてもいられないのでそろそろ本題に入ります。僕は現在ベンチャーでプログラマーとして働いていますが、独学の時には触れたことがなかったスキルにばかり出会います。「俺何勉強してたんだろ?」と疑問になるレベル。笑

 

未経験者のあなたには同じ目にあって欲しくないので、「現場に入る前に学べばよかった」と僕が100回くらい後悔したことを書きますね。ちなみに、これから書くことはスクールでもなかなか教えてくれるところは少ないですよ。なので、今後プログラマーに転職するために、軽くこちらの記事を確認してみてください。

 

1. Gitでのバージョン管理

Gitはソースコードの更新履歴を管理するもので、現場では本当によく使います。優先順位はプログラミング同じ位だと考えてもいいのではないでしょうか?これが使えないと他の人にも大迷惑をかけちゃうので、一生懸命学んだ方がいいですよ。

 

ちなみに、具体的な用途としてGitをどのように使うのかというと、複数人での共同開発に使います。現場では、1人でサービスを立ち上げて、1人でリリースするなんて状況はほとんどありません。必ず、複数人での開発をすることになります。

 

そんな時、みんなで同じファイルを同時に編集してたらトラブル頻発するし効率も悪いですよね。Aさんがコード書くの待って、その次はBさんで、その次はCさんでみたいなことやってたら日が暮れちゃうわけです。複数人で同時に編集できるようファイルを共有すると、それはそれで無駄に重くなるという問題も発生します。それに、複数人で同じファイルを編集すると、「あっ、そこ俺が編集したとこ!上書きしないでくれ〜!」みたいなことが起こります。

 

上記のような事態を防いでくれるのがバージョン管理ツールであるGit。これは現場に入る前にしっかりと学んでおくべき。特に、コミットの取り消しや履歴の編集、リモートリポジトリへのプッシュ、ブランチ操作、マージ、欲を言えばコンフリクトの解消まで。ここら辺は本当にやっておいて損はないですよ。現場では間違いなく使う技術です。

 

2. テスト

サービスの質を担保するため、現場ではコードを書いたら必ずテストを行います。その時に使用するのはrspecというgemなのですが、とりあえずそういうマニアックなことは置いといて、テストが重要なんだということを頭に入れて置いてください。

 

僕自身、現場でコードを書くときはとにかくきちんとテストをすることを心がけています。「思い通りの機能が実装できた」というだけで満足せず、自分の書いたコードが他の機能に余計な影響を与えていないか?様々なユースケースでもきちんと動作するか?もっと効率よく処理を行えないか?ということを入念に調べるようにしています。

 

このテストに関しても、地味でめんどくさい上に1人で勉強している分にはサボっても誰にも迷惑かけないので、独学をしている未経験者は適当にやりがちです。もちろん僕も適当にやってました。だから後悔しました。

 

動作確認するのは最低限。それプラス、rspecを扱えるようになれば最高です。rspecに関しては基礎だけでもいいので、ぜひ学んでみてください。

 

3. データの大量投入

サービスの規模が大きくなると、大量のデータをCSVファイルにまとめ、それをデータベースに登録するということがあります。その時によくactiverecord-importというgemを使ってデータをインポートします。

 

これに関しては、Railsの機能がわかっている人ならそれほど扱いは難しくないと思うのでぜひ勉強してみてください。面接で自分のポートフォリオを見せる時でも、「CSVでデータをインポートしました」というと「渋いねぇ〜」と言われるかと思います。きっと玄人受けはいいはず。

 

まとめ

今回紹介したこと以外にも、SassやBootstrap、AWSなど「勉強しとけばよかった」と後悔するものはいくつかあります。ですが、まずは上記の3つを抑えてみてはいかがでしょうか?記事を読んでいて気づいたかもしれませんが、現場でよく使うのはどれも地味なスキルばかりです。基本を大切にするとはこういうことですね。

 

そして、これらの技術は他の未経験者は意識して学ぼうとしない分、面接ではかなり有効な差別化になります。玄人受けするスキルを身につけたほうが、転職の確率も大きくアップすると思うので、薄っぺらい知識ではなく、本当に必要とされるスキルを身につけましょう。

 

個人的には、ウェブ上にアップするスキル(デプロイ)はそこまで求められてないように感じます。それよりもまず先に、しっかりとサーバーサイドやバージョン管理のスキルを身につけましょう。