インソースマーケティングデザイン
2015.10.05 システム
プログラムをスムーズに書けるか否かはIQじゃない
どうも、バックエンドエンジニアの飯岡です。
突然ですが、下記のルパン風に文字を出すプログラムを書いてください。
タイプライターの音が聞こえてきそうですね!
ちなみにこのスクリプト、余計な部分を除けば10行くらいです。
みなさんはプログラムを書き始める時に何からやるでしょうか?
当然仕様設計というものがありますが、今回は要件定義などは除き
仕様がすでにできている前提で話します。
まず私の場合、文字列を1文字ずつ出すという所から
”文字列を変数に入れて1文字ずつ切り出す”
と言った答えに瞬間的にたどり着きます。
その上で、変数に入れて指定数分だけ出すのだから
ループ処理をすればいいと一瞬思います、
しかし、ループだと1文字ずつというより、最終結果だけしか出ないことになります。
(なぜ出ないかは難しいと思うのでここでは省略)
なので、1文字出したら指定秒数待つ必要があります。
ただし、JSは処理を待たせるということはしてはいけません
(JSは複数の処理を同時にするため、処理を止めると次の処理が動かなくなってしまいます)
そこで、指定秒数待って処理を繰り返すというJSがもともと持っている機能を使います。
その機能の中で、カウンターを+1ずつしていき文字列の最後にきたら機能を止めて
全体の文字を出す、と書けば終わりです。
あくまで私流なので、参考にはしないほうがいいかもしれません。
それで、何が言いたいの?って感じですよね。
重要なのはこのコードを書くのにどれくらい時間がかかったかです。
ちなみに私は1分くらい?(遅い!)でした。
インターネットが一般的じゃなかったころは、素早くコーディングするためには下記が重要でした。
・アルゴリズムの理解
・プログラム言語仕様の理解
・センス
今となっては色々変わってきましたし、実際業務でやるともっと大切なことがあります。
今回みたいな小さいプログラムだとあまり変わらないんですが
私も含めておそらくほとんどのひとは、プログラムの仕様なんて思ったより頭に入っていません。
アルゴリズムの概念だって、なんとなくしか考えてません。
ただ作ったらうまく動いたっていうのを繰り返して、あとは効率を上げていくことをしています。
作ったらうまく動いたという状態になるにはやはり経験も重要なんですが
特に覚えておいてほしいことがあります。
それは、調べる力です。
あるいは、検索ワードをうまく絞る力です。
全てを記憶していないと言いました、だからこそ調べる必要があります。
むしろ調べまくります、あれなんだっけ??ってなったらすぐGoogleさんに頼ります。
無知な状態でもワードを絞る力があれば、答えには必ずたどり着きます。
業務をしていると、とりあえず何でもかんでも上司に質問しちゃう新人君とかいますよね
まず、自分で考えてその後上司に聞いてください
と!言いたいところでしたが。
自分で考えてダメだったらGoogleさんに聞いてください(笑)
聞いてダメなら上司にGoogleでのうまいワードの調べ方を聞くといいかもしれません。
上司より使い物になるかもしれません(笑)
例えば、”javascript 一定時間 繰り返し”と検索すれば一発で目的の情報にたどり着きます。
しかし、検索が下手な人はフレーズで検索してしまいます。
例えば、”ジャバスクリプトで、一定時間で繰り返しをしたい”など
ただし、いまのGoogleさんは上記のフレーズで検索しても私が単語区切りで検索した時と同じ結果を返してきます(すごい)
要件が多くなるほどそれを実現したい時の検索ワードは難しくなりますが
適切な単語選択さえできれば、何ら問題なくクリアできます。
プログラムをスムーズに書けるか否かはIQじゃない
”Googleさんの検索エンジンと友達になることだ”