やってみる

アウトプットすべく己を導くためのブログ。その試行錯誤すらたれ流す。

今私がPythonでやりたいことをするために何をすべきか考えてみた

プログラマが知るべき97のことの第1項、分別のある行動を読んで考えてみた。

前回まで

http://ytyaru.hatenablog.com/entry/2017/12/14/000000

Pythonコードを書いてきたが、最近は後戻り作業が大きくなってきた。修正コストを最小化したい。

修正コスト最小化に必要なこと

私のレベルで必要なのは基礎学習だと思う。

  1. 言語仕様やデザインパターンなどの学習
  2. 案件を達成するためにはどんな知識や技術が必要か予測する
  3. どのように書けばコスト最小化するか設計する

私は1ができていないので、2,3はずっと先のことになる。本文ではさらにその先の話をしている。私は今1だけに集中すればいい。

私は今、何を学べばいいか

なぜ今なのか

最初に学習すれば良かったものを。なぜ今更学習するのか。

今の自分の技術レベルに応じて学習すべき内容と方法が異なると思う。

時期 学習内容や方法
とにかく動けばいい コピペ
やりたいことを実現するコードを書きたい 言語の構文やライブラリなどのリファレンス参照
重複コードを避けたい オブジェクト指向デザパタの学習
不具合を減らしたい 単体テスト

なぜ今まで学習できなかったのか

APIやライブラリの使い方はリファレンスを見ればたった1つの具体的な正解がある。しかし言語仕様、オブジェクト指向デザインパターンの利用などは単純明快な唯一の答えがないため難しい。どうやって学習したらいいのか検討がつきにくい。

実際に具体的な問題にぶつからないと、その問題の存在にすら気づけない。しかしその問題に気づくためには、ある程度の規模のコードを書かねばならない。今まではそんな規模のコードも書けない段階だった。

どうやって学習するか

学習項目を探し、それをコードに書き出す。疑問を洗い出し、動作確認する。コードを記録し、検索できる状態にする。

  • 何を学習すべきか
    • どこからインプットを得るか
    • なぜそれを学習すべきか
  • 何を学習したか/してないか
    • いつそれを学習したか
    • 次に何を学習するか
  • 学習した結果のコードはどこにあるか
    • どうやって見つけるか
    • すぐ実行できる状態か

所感

次は具体的な学習方法について考えてみる。