仕事の合間に、自分のプログラミングスキルを向上させたいと思ってて、Pythonで簡単なトランプのゲームを考えている。ポーカーとか、ブラックジャックとか。
順番としては明確で、要件をざっくり考えて、それをモジュール化させていき、プログラミングをしていく。
その、モジュール化させていくところがとても難しい。
なぜなら、私はざっくりとしたPythonの基本構文は覚えたものの、要件を噛み砕いてどうプログラムとして組み立てていけば良いのか分からないから。
ここは一般的には「基本設計」「詳細設計」と呼ばれる箇所で、プログラミングをやっている人なら頭で思い描けるところなのかもしれないけれど、まだ私はそこに至っていない。
私がまだ分かっていない、と理解するのは重要だ。
なぜなら私が学ぶべきポイントが理解できるからだ。
いわゆる、ロジカルシンキングと呼ばれる部分になるだろう。
例えばポーカーで考えると、
- カードをシャッフルする
- カードを5枚配る
- なにか役が揃ってるか確認する
- 揃ってたら、ホールドする
- 揃ってなかったら不要なカードを捨てて、新たにカードを受け取る
みたいな感じで、要件を詳細化して、それをプログラミングするためにどう考えていくか、みたいなものをやっていく必要があるんだろう。
そうか、私は要件を噛み砕くところからきちんとやっていかなければいけなさそうな気がしてきたぞ。
私は一体、なにを目指しているんだろう。
少なくとも、今の自分に足りないものを取り入れ、今日よりも成長した自分になりたいのだろう。
成長の機会って無意識なところから生まれる、と昨日書いたけれど、それが意識できるところまで煮詰まってきてからは、本を読んだり、ウェブサイトで調べてみたりして、自分の欲しかった知識を手に入れれば良いだけなんだろう。
この先、もし会社をクビになっても、一人で生きていけるような力をつけていきたい。
プログラミングのスキルは、実際に問題を解決するためにも必要なものだ。
この学習を通して、プログラミングだけではなく、問題解決に取り組む力をつけていきたい。問題をどのように解析し、効率的に、そして品質の高いアプローチを身につけられたら嬉しい。