「エンジニアに必要なスキルは」に関するもう一つの解釈について
コーラレシピでそれ「美味しいの?」と思わせるレシピを書かれたり、エンジニアについて書かれていたりするまなめ様におかれましては、いかがお過ごしでしょうか。
お腹が出ないことも大事だけれど、エンジニアに一番大切なスキルは料理のスキルです。
自分でできるソリューションを作り、それで顧客を胃袋、違う、課題であるペインを取り除く。そのためには技術=料理のレシピを持っていることが必要だし、状況に動じないアレンジ力=リソースによる成果の辻褄合わせという推進力が必要なのです。
さて、同じキーワードから人が違えば捉え方も違う、価値観も違う、そうした違いを受け入れられるのが大人エンジニアですから、その辺の違いをご賞味いただければ幸いです。
可読性の高さ
可読性の高さは、ソースコードはもちろん、仕様書、文書においてエンジニアに求められるスキルです。
可読性が高いという意味の解釈は、コードや文章で表現することで伝えようとしている情報を伝えての意図を情報の劣化をすることなく、受け手に伝える技術です。
前提として、情報を発信する側と受信する側は、それぞれが持っているディクショナリー、つまり、経験知が違いますから発信側が伝えようとしていることが100%完全な形で情報伝達すると思っていたら勘違いもいいところです。
基本的に、
「あなたが思っているようには伝わらない」
と前提を改めた上で意思伝達を取ることを考えた方が良いです。なぜかは、個人が持っている言葉の知が違うから。
そこで可読性の高さのスキルの出番です。意思伝達は双方の知に依存するということは、伝えたいことが1回で伝わらない、ということです。であれば、発信側の意図する内容で伝えるために受信側とのプロトコルを合わせる行為の一つが可読性の高い情報を発信するということなのです。
丁寧であること
丁寧であること。仕事の上で、丁寧であることで問題になることはありません。どちらかといえば、問題を起こさない、面倒ごとを増やさないために丁寧という手段を選択するのです。
では、エンジニアの仕事に特化した場合の、それも先の問題ごとを増やさないという面以外ではどうかといえば、これも可読性の高い仕事をする上での補助ツールの位置付けである、と捉えることができます。
プロトコルの違う受信者に対して、最小限の手間で意思伝達を完了させたければ、受信者に伝えようとしている情報を考えさせることなく理解できる状態で情報を受け渡すことが必要になります。
そのために、誤解を招かない言葉の選択、理解を助ける図表、概要とキーポイント、前提条件と制約条件の明示。これらの、伝える側にある、情報の優位性を利用し、先回りしてお膳立てしておくこと振る舞いが「丁寧である」と思うのです。
形にするまでのスピード
これは全くそのとおりで、
「いいから書け」
です。書いてみなければ、今持っている情報が何で、必要な情報が何で、作りたいアウトプットの要求品質が曖昧で、インプットからアウトプットを作るプロセスの推敲が足らないことがわかりません。
頭の中で書ける情報を持っていると思っても、書いてみると実はそれほど情報を持っていないことがよくあります。
つまり、
「書くことは自分が持っている情報を可視化する」
行為です。この不確かでタイムスパンの短い開発スケジュールの時間軸の上で、仕事の成果を出すためには、今の時点で保有している情報が何であるかを可視化することが求められています。
タスクを着手した時点で最初に行うのは、持っている情報が何で、アウトプットをするために必要な情報や制約条件がなんであるかを明確にすることです。
それを並べてどう料理するかを考えればいいのです。そのためにも、今持っている情報を明らかにすることを今やるというスピードが求められていますし、そうした考えでアウトプットをしているエンジニアはできるエンジニアです。