コーディングが出来ないSEとコーディングをしないSE

世の中のSE業については昔から色々言われていたけれど、先日以下のツイートが少しバズっていたので言いたいことを言っておこうと思う。

まず、SEという職種は非常に特殊というか、SEという単語がもつ意味の幅が広い。現役のSEに「SEとはどういう仕事をする人のことですか?」と聞いても、正確に答えることが出来る人は少ないだろう。

更に言えば、SEとはエンタープライズ案件でのみ使われる職種で、僕がいるようなベンチャーにはSEという職種は存在しない。ベンチャーでは単にエンジニアであったり、プログラマと名乗ることの方が多い(ちなみに僕は自戒の意味も込めてコーダーと名乗っている)。

ちょっと話が脱線してしまった。本題に戻るが、タイトルにも書いたとおり、SEには大きく2種類のSEが存在する。それは、

  • コーディングが出来ないSE
  • コーディングをしないSE

の2つだ。ツイ主は「ガシガシ設計している」と公言していることから、おそらくは後者に分類されるSEだと推察するが、本エントリではそれぞれのSEがどういうものかを考えていこうと思う。

なお、これはあくまで自分の観測範囲での考えであり、実態とは異なる部分があるかもしれないので、あくまでも1個人の1意見として捉えてもらいたい。

コーディングが出来ないSE

コーディングが出来ないSEとは何か。

文字通り、プログラミングのプの字も知らないけれど、SEとして仕事をしている人たちがいる。何をしているかというと、主にSESや派遣で入ってきているメンバーの管理だ。

エンジニアという名だけを冠した、ただの管理要員である。主に、大手と言われるIT企業にはこういう人材がわんさかといる。

これはこれで成立する職種ではあるが、いくつかの問題点をはらんでいる。

  • 技術的な知識がないのに要件定義から設計までをやった結果、最終的に手戻りが大量にある
  • そもそも無駄を生むだけなので、不要な立ち位置

そして、こういう人たちに限って実際にコーディングをするプログラマーにマウンティングを取りたがるから不思議なものだ。

コーディングをしないSE

一方で、コーディングをしないSEという人たちも存在する。

こちらは、コーディングも出来るけど、コーディングじゃない業務(要件定義や技術選定、アーキテクチャ設計など)に注力しているような人たちだ。一言で言えば、超優秀な層。

コーディング自体はやらないだけで、技術的な知見も理解もある。イメージ的にはチーフエンジニアとかリードエンジニアとかいう方が近い。もちろん人手が足りなければ、自らコーディングすることもあるだろう。

「プログラミングできてもあんま役に立たない」ことはない

どういう理論でこういう発言に至るのかはわからないが、プログラミングに精通していないのにSEとして成立してしまう現実そのものは、非常にマズい。

設計をやるということは、もちろんアーキテクチャ設計も含まれるわけで、そこでは技術選定が必ず行われる。例えば、xxなプロダクトを作りましょう!となったとして、それを実現するのに最適なものを判断しなくてはいけないわけだ。

わかりやすい例を挙げれば「ツイッターのようなもの」を作りましょう!となったとして、何を使って作ろうか、という部分を判断する必要があるということ。言語レベルでPHPなのかRubyなのかPythonなのかElixirなのかもそうだし、フレームワークは何使おうとか、インフラはAWSなのかGCPなのか、DBはNoSQL系も選択肢として考えられるのか、とか。

このあたりの部分を果たして「プログラミング出来なくても設計できる」と言えるのか?

出来たとしても、要件定義がいいところじゃないか。当然人によって得意分野は異なるだろうし、だからこそ組織として課題解決をするわけだけど、プログラミングに精通してるからいい設計が出来るのは普通に考えて当たり前のこと。

料理は一切出来ないけどレシピは完璧に書けるとか言われても、納得できないのと同じことだ。

余談

リプ欄で書かれているこちらに関しては完全に同意。

そもそも僕の考えでは、AIの発達に伴い、エンジニアリングはより少数精鋭で行われるようになっていくので、基礎教養レベルでプログラミングが必要になる未来なんてものは来ないということ。むしろ、本エントリで述べたようなコーディング出来ないSEは速やかに退場させられていくと思う。

コンピューターサイエンスに精通している人材が重宝されるという事実はありますけどね。別に高校数学出来なくても生きていけるっしょって感覚と同じですよ、プログラミングも。