プログラミングの技術力とはなにか(抽象的定義ポエム)
はじめに
素敵な夜ですね。技術力をつけたいと考える事が多いので、技術力の抽象的定義について自分なりのポエムを書くことにしました。
基本定義
人ぞれぞれだとは思いますが、プログラミングの技術力について、自分は、「世界をひっくり返すために、できない事をできるようにする力」だと思っています。
ではそれは何からできているか
使いこなせるチャンクの量と、それを引き出す速度だと思っています。
あるいは、使いこなせるチャンクの量こそが、引き出す速度なのかもしれないです。
製造速度
短期的な速度
基本的にはコーディング速度の事です。
ノーコードツールが実用的なものになればノーコードでの製造速度も含むかもしれませんが、私の観測範囲でコーディングより速いノーコードツールは存在しませんので、今はノーコードツールは含みません。
技術力に直結すると思っています。
長期的な速度
設計をハズすと長期的速度を落とします。長期間の開発に耐える設計力は長期的な速度と言えると思います。
テストに信頼性を持たせ責任持って作っていくのもここに入ります。
二つが掛け合わさると、長期間・多人数でも高速を維持できます。
二つ揃わなければ長期的には必ず敗北します。
知見を理解する力
どんなドキュメントも理解できなければ役に立ちません。
文章を読む体力から、理解力まで含みます。
情報学や数学の基礎知識はここや後述の調べだす力に関わると思っています。
知見を調べだす力
インターネットや英語の文書から知見を探し出す力は別個に存在すると思います。
知見を集め、なんとなく自分のものにする力
リファレンスをまるまる読んで、なんとなく覚えておく力です。
ドキュメントを全部読む等でつくと思います。
中学生の時にWindowsのAPIリファレンスだったかを全部読み通して力をつけた登氏の話があります。
数学の学生向け問題集を買って全部解くとかもここに含むと思います。
ここまでをもっと一言でいうと、チャンクの量と言い換えられるかもしれないです。
チャンクになっていると感じる機会を増やす必要があります。
知見を組み合わせる力
また、知見を持っているだけでは意味がなく、それを組み合わせる必要もあると思います。
昔のクリエイターのインタビューで、「野山を駆け巡った経験がゲームに生かされている」という話がありました。山の中では使える道具が限られるので、あるもので工夫する経験ができ、その経験が生かされたのだとか。
一理あると思い、この力の話だと思っています。
裏技的な力
代案を考える力
少し裏技的ですが、本来やりたかったことを別の手段で完璧orより良く実施する力も技術力に含む事とします。全ての問いに完璧な代案を用意できるならそれはそれですごいからです。
人に聞く力
少し裏技的ですが、技術力に含む事とします。
終わりです
上記は意識してやるような事ではないと思いますが、なんとなくやっていたら身につかない気もしていて、今自分はどこの筋肉使っているのかみたいな感覚は考えておきたいと思いメモしました。そしてそれを公開しました。
こんな力もあるよというお話があったらお聞かせ願えれば嬉しいです。
twitter:@kisihara_c
Discussion