🐺

すでにあるものを使える力と、作れる力について

2020/11/29に公開

はじめに

エンジニアとしてもう少し、技術的な知見のブログを書きたいのですが、最近忙しいので、なかなか、書けないですね。もっと気軽に発見したことを書けばいいんだろうなと思うんですが、なにぶん新規性とか正確さとか読みやすく読者の前提とか考えてしまうので、なかなか書けずにいます。

今回、ちょっと予定したことが無くなったので、隙間時間になにか書いてみようかとふと思い立って筆をとりました。そうすると最近抱えてる悩み、というほどでもないですが、ふと考えてしまうことについて、個人的にすっきりさせていこうと思っています。

原理原則を考える性分

最近は、仕事としてコードも書いたり技術調査等もしている傍ら、プログラミング教育に関することをやっていて、まぁ忙しいのですが、その教育をやっていて学習について考えることがあります。

というのも、やはり教育を考えるに、自身の過去の学習経験を元にしたり(あまり自分の経験を参考にしすぎるのはよくないと考えますが)していて、そうすると自分自身の過去なにやっていたか考えてしまうものです。

とすると比較的に私は、原理原則、ある技術の中身がどうなってるのか、自動車のボンネットを覗きたがり、そうして内部の動きがこうなっているから自動車が動くみたいなことを考えてしまう性分のようです。また、中身がわかってしまうと途端に自分でそれをつくりたくなってしまうものです。

で、つくってしまう。作るとまた想像したこと考えたことと違うことが出てきてまたそれが楽しいのです。よく思ったのと違うと不機嫌になる人もいるとは思うのですが、私としてはむしろ楽しみが増えたようなものでした。謎が増えるのが楽しいのでしょうね。

そんなこんなをやっていくと、例えば車や電車やパソコンやゲームっていったある見方では魔法のようなものはシンプルな仕組みをくみ上げて複雑化していくというのがとても理解できるようになります。一つ一つはとても単純なものだけど、それを組み合わせてみるととても面白いものができるんだと、子どものころにやっていた「遊び」からよく理解することができたように思います。

そして、新しい基本的な基礎技術が発見されるとワクワクするものです。一を聞いて十を知るという言葉がありますが、私にとっては一つの可能性があればそれこそ百以上の可能性を考えることができる、そういうワクワクを持っていました。

なので、そうするとそれができない人も当然で残念ながらいて、その人にとってはとてもつまらないことなんですが、私にとってはとても面白い熱中できるものが出てきてしまいます。

よく技術者(ほんとは技術者といってもいろんな人がいるのですが)がコミュニケーションが下手だとか言われますが、そういう理由の一旦にこれがあると思います。つまり、技術者にとっては「シンプルでもすごく新しい機能を紹介する」それだけで、いろんな可能性を考えることができる人間なので、すごくシンプルなことだけしゃべって満足するのです。でも他人はよくわからないそういうことがよく起こりがちな気がします。

既存のツールを探して使う気がおこらない

さてそんな私ですが、なんでもかんでも作ってしまう性分なので、なんでも間でも自分でつくってしまうので、なかなか既存のツールを探して使う気がおこらないのですよね。

既存のフレームワークやライブラリ、ツールなど、既にある出来合いのツールを沢山探し出してそれらを組み合わせて、問題をとりあえず解決する人がいますが、なかなか私はそうならないのは、自分でつくった方が早いという認識が根強いんですよね。

おそらく「自分でつくると大変」と「自分でつくった方が早い」その分岐点が問題だと思うのですが、その分岐点は私は自作の方に傾きすぎちゃってるんだろうなと思います。だから車輪の再開発みたいなことをやりがちなのでそのへんは反省しないとあかんなーって思います。

既存のツールが使えるひとは「すでにこの問題は誰かが解いているんだろうな」という推測能力があって、そして調べてそれをすぐに使えるみたいなものがあると思います。しかしながら、私はまず自分で解いてみて、そしてそのあとに他の人の解答例を見てしまうので、ちょっと他のツールを使おうと意識が他の人と比べて遅いのだろうなって感じています。

問題が隠蔽されるのがとても嫌なんでしょうね。私は。既に通ったことがある道をショートカットされても私は特に気にならないのですが、私が通ったことがない道をショートカットするのはなかなか気が乗らないのです。

新しいツールを使おうにも、コンセプトや機能を見て回ったあとに、実現されるためのアルゴリズムや設計、実装、設計哲学がどうなっているかそのようなことを確認してやっと私は使いたいと思うのですよね。もちろん、業務でやるときはとりあえず、そのような作業は省略してまずは問題を解決してから、そのあと業務の隙間時間や、プライベートな時間をつかって確認するみたいなことが多かったのですが。

プログラマはどうあるべきか

とまぁ、そんなことを書きながらもう少しで別のことをしないといけないので、ここらへんで書くのをやめようと思いますが、数分程度でいろいろ書けるものだなーって思いながら、最後にじゃあプログラマはどうあるべきなんだろうかっていうのを書いて終わりにしようかなと。

結論として、まぁ、作れる力も、既存のものを使う力も必要なんだろなってことですが、じゃあどのようにそれをバランスさせていくかってことなんでしょうね。個人的には、やっぱり最初に根源的に「自分で作る」ってのがあるべきで、そちらを優先すべきだと思いますが(じゃないとそもそもプログラミングしないよね)、他人の力もできるだけ使って素早く解決するべきなんだろうなって思います。

まぁ難しいのは「調査コスト」と「実装コスト」のバランスでしょうね。まぁ、実装力のない人間はとにかく調べまくるんだろうなと思いますが、実装する筋力をもつものは似たような悩み?を抱えると思いますがどうでしょうかね。

Discussion