がじぇ

お金と家電とプログラミングのブログ

技術の選択を何だと思ってるのだろうか?と思う記事やツイートが多すぎて気持ちが悪い問題

こんにちわ

がじぇったー (@hackmylife7) | Twitter


です。


最近パッパラパーだなぁと思う記事が多くあるのでポエムを書こうと思います。



TL;DR(要約)

  • 使ってる技術を理解している(理解しようとしている)のだろうか?と思うことが多い。

背景

Qiitaのトレンドに上がっていたので見ちゃったのですが、こういう考えって自分はおかしいと思し、もし同僚になったら、、、と思うのです。
紹介してるQiitaの記事もセットアップの記事だし
そろそろこの辺の人たちがKubernetesとかIstio!!!って言い始めるんじゃないかとソワソワしてます。

Dockerは初学者には大きなハードルとなりますが、現在の開発現場ではスタンダードになっているとの情報を得ましたので必ず手をつけることをお勧めします。
前職場の先輩がベテランプログラマーの知人に私のことを話した際「Dockerを使用してポートフォリオを開発しAWSへデプロイした」と伝えたところ「それは就活成功するやつだね」と言われたそうです。
そのくらい「Dockerを扱える」というのは初学者への評価をするにあたって一つの指標となるのかなと思いました。

qiita.com


あとこういうのもね、だから何?って思うんです。


自分の意見

上ではった記事のようなDocker使ってますドヤァ、CircleCI使ってますドヤァみたいなツイートや記事を見ることが多いのですが、そもそも技術の中身を理解してる(理解しようと)しているのでしょうか?


例えばコンテナ技術を使ってクラウドで動かすだけならGCPのCloud Run使えば一瞬です。ドメインと証明書を別でとってDNSの設定すればそれだけでサービスが動きます。
googleもクイックスタートのドキュメントを書いています。
cloud.google.com


技術を使える、というだけでは現場で全く使えないし、もし障害が起こったらこういう人たちはどうするんでしょうか。
トラブルシューティングできないと思います。
動かないからOS再起動させて他のコンテナも昇天させそうですよね



そんな理由でDocker使ってる人よりも、EC2の上でモノシリックな三層アプリケーション使っているが、自分が使ってる技術要素を理解し説明をできる人の方が現場では重宝されると思います


例えばDockerという技術であればあくまでもLinuxカーネルの機能を用いて(複数のシステムコールを組み合わせて)プロセスを分離しています。
この辺を理解していなければ「VirtualboxとDockerって何が違うの?」とか「Windowsのコンテナは立ち上げられないノォ?」というアホな質問をすることになってしまいますよね。

ついでにDockerについて書いているとても良い資料貼っておきます。
speakerdeck.com


自分は6年近くエンジニアをやってきて「技術の中身を理解して使っているか?」ということがいかに重要かということを身を以て経験してきています。

そして文系と理系出身者の思考過程で一番違うところが技術探求の姿勢であるなと思います。

新しい技術が使えること、よりも和田さんがおっしゃっているような根幹となる技術を勉強した方が後々ためになると思います。

変わらないもの。UNIX、REST/Web、RDBMS/SQL
まずは変わらないものからお話をしたいと思います。

変わらず、長生きをして、使われ続けてる現役の技術で思い浮かぶものを3つ持ってきました。

OSとしてのUNIXと、Webの仕組み、RESTのアーキテクチャスタイルやそのうえで動いているWorld Wide Webの仕組み。

www.publickey1.jp


一方で以下のしょうもない意見を耳にしましたが、不要になるのはただ「技術をただ使える人」であって、本質的なことを理解し、技術探求を続けている人は新しい技術の吸収も早いし、何を主戦場にしてるかってあまり関係ないと思うんですよね。



しょうもないアウトプットを吸収している暇があったら本質的な技術を勉強していきたいものです。。。。。


Docker実践ガイド 第2版 impress top gearシリーズ

Docker実践ガイド 第2版 impress top gearシリーズ