なんとなく日々徒然と

エンジニアにおける知識と経験について

ポエム

2月はお休みいただいていましたが、3月から働けそうです。
お仕事募集中です。

ruby案件なら週5稼働で80〜90で、go案件もやってみたいんですが、経験不足が否めないのでお仕事あればそれよりも低い単価で働きたいです。 受託案件だとさらに嬉しいです。

子どものお迎えがあるため基本フルリモートで探しています。
出社は相談とさせてください。

もし興味ある方がいらっしゃったら。twitterなどで気軽にDMしていただけますと嬉しいです。

そして今日の記事はポエムです。

自分を振り返る

お仕事お休み中なので子どもの公文の足し算問題をみたりしながら生活しています。
そんな生活の中で自分のエンジニア人生の振り返りをしてみました。

ゴッドタンという番組で劇団ひとりがCPAPを絶賛していて、「俺の人生を分けるとしたらCPAP以前とCPAP以後だね」と言っていたのを笑いながらみた記憶があります。

自分のエンジニア人生においてはソフトウェアアーキテクチャをちゃんと学び始めた以前と以後に分かれると思います。

昔自分は誰よりも早く良いコードを書く人間でした。
今は昔ほど早くはかけません。
それはなぜでしょうか。

知識と経験とは

1
3 + 2 = 5

という計算式があります。 3+2の答えを出す時2つのアプローチが存在します。

  1. 指で3を作って、そこに1、2と足して計算して回答を算出する方法
  2. 3 + 2は5だと暗記してしまっていて、計算を飛ばして回答を導き出す方法

1は回答を導き出すためには方法を知っていなければいけません。
これは知識と呼ばれます。

2は回答を導き出すためにはあらかじめ答えを知っていなければいけません。
これは経験と呼ばれます。

どちらが早く問題を解けるかというと圧倒的に2です。
回答を求めるプロセスが飛ばされているからです。

なぜ早くかけなくなったか

最初に戻ります。

なぜ自分は昔は誰よりも早く質の良いコードを書けていたのか?
それは経験をベースに書いていたからです。
経験とは暗記と同じ性質で、反射でアウトプットを出すことができます。
つまり質の良いコードに触れた経験をそのままコードにもってこればいいだけです。
反射的に吐き出されたコードは過去の経験と等価です。

経験ベースの問題点

経験ベースでは吐き出されたコード以外の書き方が存在しないのか、もっと良い書き方があるのか考えないことです。
過去成功したから、今度のコードも問題ないだろうという思惑も働きます。
それ以上の答えの選択肢がない、あるいは考えないことが多いです。

さらに踏み込みたい

経験ベースをさらに例えてみましょう。

以下の問題があり。

過去同様の問題を解いた経験から答えを以下のように出しました。

経験ベースだとここまでです。

3/6だって立派な答えだし間違っていません。
これを実現したいこととして実装した場合、3/6という答えでも問題なく要件は達成するでしょう。
機能としても問題ないです。

しかし知識があるとさらに約分ができます。

知識があると、なぜそうなるのかを考えられるので今まで経験していなかった答えを創造できるし、その先に行けたりもします。

ソフトウェア開発における知識とはソフトウェアアーキテクチャです。

つまり

まず最初の一手を経験で出し、それに知識を加えて考える様になりました。
知識によって最初の経験で出した一手を全く別のものに変えることもあります。
答えの出し方を知識によって知っているからです。

今までは経験ベース開発だったのに対し、今は知識+経験ベース開発になっています。

より良いものを書けるようになった反面、脳内でやることが増えたので書くのが遅くなっています。

変わらないモノ

JavaScript Fatigueなんて言葉もありましたが、技術のトレンドは一日で大きく様相を変えます。
そんな中ソフトウェアアーキテクチャは変わりにくく本質的であるがゆえに価値を落としにくいです。

そして生成AIでも今はまだ踏み込みにくい領域ではないでしょうか?

最後に

お仕事募集中です。

Tags: ポエム

Rspecでseedデータを使うこと

comments powered by Disqus