foolish::log

@takochuu のブログです。

エンジニアリングが難しすぎて自分にはわからないという幻想

note.com

この記事は素晴らしいなー、と思ったので深夜のテンションで記事を書いてみようと思う。

まえおき

自分もエンジニアという職業に就いてからもうだいたい10年ぐらい経ったので、上記の記事に対して敬意を払いつつ、持論を展開してみようと思う。

プロジェクトが頓挫するために十分な思い込み

20代の時はそれほどソフトウェアエンジニアの市場価値が高くなかったこともあり「俺と一緒にプロジェクトやろうよ!」と声を掛けてもらうことも多かった。無償で。
twitterも今ほど一般的ではなく、アーリーアダプター層が使っている時代だったし、自分も面白がって色々な人と会っていたのだけれど、大体サービスの相談を貰った人(会社ではない)は一人でプロジェクトを完遂まで持って行っている事がなかった。

それは相談者がもちろんエンジニアではないことを差し引いても、ほぼゼロなのではないかと思っている。
そして自分が他の人達と一緒にやったプロジェクトも大体頓挫した。まぁこれは自分のせいである。
※ もちろんしっかりやれている人も周りにはいるので、揶揄しているわけではないです

何がやれるかやれないかの違いなのかを見ていると「エンジニアリングが難しすぎて自分には無理」と初っ端から決めつけているかどうか、かなと思っている。

なぜ「難しい」と思われるのか

たしかに昨今のプロダクト開発は難しくなったと言い切っていいと思う。
10年前ぐらいのWebを使用するプロダクト開発はサーバーでHTMLをレンダリングしてとりあえず返却しておいてキャッシュだけあればいいですよね。ということだったが、じゃあ今どうするかというとRESTなのか、gRPCなのか、GraphQLなのか、はたまたRubyなのか、Pythonなのか、Goなのか。MySQLなのか、Firebaseなのか、AWSなのか、GCPなのか。etc...といったような選択肢が存在しており、プロダクト開発はLAMPでドーンという世界線だけでないことはたしかだ。

そして、これはエンジニアリングをしっかりやろうとしている未経験の人には難しすぎるんだと思う。
ただ、確実に技術は以前よりコモディティ化していて、じゃあログイン作りましょう。という話をすると色々意見はあると思うがRailsならdeviceをinstallすればいいだけだ。
ぶっちゃけ全ての事に言えるが「知っているか知らないか」しか存在しない世界線だと思っている。法律などと一緒だと自分は思う。

初期プロダクト開発はどうしたらいいのか

そもそも論、何も成立しているプロダクトというのは必ずしも中身が同じように素晴らしいわけではないし素晴らしく有り続ける必要もないと思っている。金を稼いでくれないプロダクトの中身がピッカピカだったとしても、それはエンジニアとしては意味があるが事業的にはさっぱり意味がないことだ。まずはエンジニアリングが自分には無理だという幻想を捨てるべきだと思う。
クソなコードだろうが動いて価値を発揮していることは素晴らしいことなのだ。そしてプロダクト開発はコモディティ化をある程度しているので「とりあえず動かす」ことは以前よりも確実に簡単になっていると自分は思う。

特にプロダクト開発というものは、プロダクトを着想して1日で開発完了できるわけではないためプロダクト単体のP/L的に言うと必ず赤字を掘りながら開発することになる。勿論差はあるがこのフェーズのプロダクト開発をしていて「イヤ、ちゃんと動いてはいるんですがコードの質が悪くて、1週間遅れます」なんて言おうもんなら俺が経営者ならグーパンである。
実際、自分が運用していたソーシャルゲームなんかはプロダクト開発開始当初のコードが5年ほど使われており、その部分を改修することは現実的には不可能な状態になってしまっていたが、ハチャメチャに稼いでいた。それはもうハチャメチャに。そのタイトルだけでマザーズ上場できるぐらいには。

ただし、勿論例外もある。
例えば情報セキュリティなんかは一度事故を起こすと昨今の時流から見ると大変な事になる。下手をしたら会社が潰れることもあるし、一度引き起こしたインシデントに対して対応するコスト自体もバカにならない。もしくは、ソフトウェアそのものが商品の場合などもある。

クラウドインフラやMySQLといったレイヤはアプリケーションと比較すると交換しずらい部分もあるため、下のレイヤになるほど固く作っておいた方がいい、というような傾向もあるかもしれないし、取り外しが大変なコードはなるべくなら書かれるべきではない。

ここで考えるべきは「技術的負債」と呼ばれる「トレードオフの犠牲になったコード達」をどのようにどんな時期に回収するかという計画なんだと思う。

じゃあどうするのか

ちょっと話がそれてしまった。
じゃあ結論どうしたらいいのか、で言うと元記事にハチャメチャに同意していて「自分で書いてみる」しかない。
弊社の取締役は4人ともコードが書けるし、CEOもP-Rをブン投げてきてくれるのでめちゃ仕事がやりやすいオブ・ザ・イヤーである。

やはり「理解しよう」と思ってもらっていることはエンジニアから見ても非常に嬉しいことなのだ。

まとめ

  • 食わず嫌いせずにコードを書いてみてください
  • 書いていればエンジニアは「ええやつやん」ってなるはず

さいごに宣伝

現職で投資信託を開発しているのですが、SREエンジニアとネイティブアプリエンジニアがバチクソに足りないので...ぜひ...お話させてください...
SO含めた制度説明を取締役含めて行うことができます...よろしくお願いします...
susten.jp