見出し画像

いろんなFWやいろんな言語を触ってきて思うこと

こんにちは!HITO-LinkCRM開発チームに参画して3日目のHidakaです!3日目なので右も左も全くわかっておらず、HITO-LinkCRMの皆さんに優しく助けられながら日々をすごしております。いち早く戦力になれるように尽力していきたい所存です!

さて、そんな僕ですが、今年で社会人歴が8年目になりました。これまでの社会人経験の中で、様々な開発PJに参画させていただき、そして、いろいろな言語やFWに触れてきました。

また、新しい技術が出てきて「良さそう」と思えば、プライベートでもどんどん触っていく趣味を持っているので、その際にもいろいろな言語やFWに触ってきました。

なので、今回は「いろんなFWやいろんな言語を触ってきて思うこと」について、少し語らせていただければと思います!

これまで触れてきた言語とかFW

とりあえず、こんな感じです。

[学生時代]
C++(基本構文程度)
Ruby(コンソールプログラミング)
C#(Windows From)
Java(オブジェクト指向程度)

[社会人 1社目]
C#(Web From)[業務]
Ruby(Rails4)[趣味]
JS(React)[趣味]
JS(React-Native)[趣味]

[社会人 2社目]
JS&TS(Vue)[趣味]
Go[趣味]
docker[趣味]
AWSでサーバレス[趣味]
Firebase[趣味]

[社会人 3社目]
TS(Vue)[業務]
Java(SpringFW)[業務]
PHP(Laravel)[業務]
[New]Scala(Play or Akka)[趣味]
[New]Dart(Flutter)[趣味]

数か月ぐらいしか触っていないものもありますが、随分といろいろ触ってきました。(触って数日で飽きたものとかは含めてません。)

いろんな言語を触ることのメリット

多角的な視野を確保できるというのが一番のメリットかなと思います。1つの技術を専門性高くやり続けるというのも良いことだとは思うのですが、どうしてもそのコミュニティで一般的な設計や書き方に思考がとらわれがちになってしまう気がします。

いろんな言語やFWを触ることで、各々のコミュニティで育った設計やベストプラクティスな解法を得ることができるため、いざ実装していて悩む点が出てきた際に、別のコミュニティの考え方などが応用できたりします。

例えばVueのVuexを利用した状態管理の設計について、ベストプラクティスは公式でも公開されていなかったり?します。しかしそういった際でも、「FlutterだとProviderを利用して画面毎に状態管理を行うのが一般的だから、じゃあVuexでどう設計するのがベストか?」といった思考ができたりします。(Vuexのベストプラクティスは未だに検討中だったりしますが。。。

また、エンジニアとしての伸び悩みというのも、別の言語やFWを触ってみることで解決できるかもしれません。私の場合ですが、学生の頃にC#のWindowsFormを利用し開発していたのですが、その際は「設計」というものを何も知らず書いていたので、MVCでいうところのCにロジックやらなんやら詰め込んで開発していました。

ちょっとしたツールを作る程度であればCになんでも詰め込んだ設計でもなんとかなりますが、徐々にアプリが大きくなっていくと、どうしてもコードを書くのが辛くなっていくことに気づき、どうすれば良いのかひたすら悩んでいた記憶があります。

長い間悩んでいましたが、社会人になってRailsに触れた際、設計におけるMVCというものがあるのをはじめて知りました。(Railsは規約命なのでMVCを知るところからはじまります。)MVCを知って、「何故あの時、コードを書くのが辛くなったのか」を知った時は、急速にエンジニア能力が向上したと実感しました。

まだまだいろいろありますが、エンジニアリング能力を向上させるためには、たくさんの言語、FWをどんどん触ることは必要不可欠なんだと思っています。

いろんな言語を触るということのモチベーション

とは言っても、新しい言語やFWを触るというのは、精神的なコストがものすごく高く、僕も叶うのであれば挑戦はしたくないです。(新しい言語やFWを触りだすと数か月の間、休日は潰れちゃいますからね。)

しかし、少なからず現状の設計やコーディングに対して、問題点や疑問点というものを抱えている方は多いのではないでしょうか。

「今の抱えている問題点や疑問点をこの言語やFWに触れることで、改善できるかもしれない」

その探求心。そして、その探求の上に発見する答えを手に入れた時の快感。この快感を味わうために。。。というのが、私の中で新しい言語やFWに挑戦するモチベーションだったりします。

あとは新しい言語やFWというのは、過去の言語やFWの課題を改善するために作られたものである可能性があるため、新しい技術セットで実装すればもっと楽ができるんじゃないか?といったところもモチベーションにつながっていたりします。

エンジニア is 怠惰であれ!

締め

私自身、いろいろ触ってきたと思っていますが、プログラミングの世界は広大すぎるかつ、広がり続けているため、日々「まだまだだなぁ」と痛感していたりします。

「もっともっと楽に実装ができるように。」また、「いろいろな課題が解決されるように。」世界では新しい言語やFWが生まれてくることでしょう。

そのたびに、新しいことにがんがん挑戦する。そんなエンジニアであり続けよう!と私は考えています。

P.S.

HITO-LinkCRM開発チームは、そんな新しいことにガンガン挑戦したい!そんな野心的なエンジニアを募集しています!気になった方は下記のリンクからお待ちしています!

▽HITO-Link CRMについて

▽弊社コミュニティのエントリーフォームです


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