SWE協会のコーディング練習会用リポジトリ https://docs.google.com/document/d/1bjbOSs-Ac0G_cjVzJ2Qd8URoU_0BNirZ8utS3CUAeLE/edit?tab=t.0
標準的な進め方 進め方の自由度は高く、特別にこれでなくてはいけないということはない。
問題については、新井康平さんの問題集(https://1kohei1.com/leetcode/) を使う人が多い。AtCoder や ICPC の問題を送ってくる人もいる。ただ、過去に解いた人がいる問題を解くと、以前に解いた人からコメントが貰える。上記が難しすぎる場合には、https://www.learnpython.org/ を使っている人もいる。
初期には、下のようなルールを提示した。
- 新井さんの問題順番にやっていきます。一日一問で最初はいいでしょう。
- 答えを見ずに考えて、5分考えて分からなかったら答えを見てください。答えを見て理解したと思ったら、答えを隠して書いてください。筆が進まず5分迷ったら答えを見てください。そして、見ちゃったら一回全部消してやり直しです。答えを送信して、正解になったら、まずは一段階目です。
- 次にコードを読みやすくするようにできるだけ整えましょう。これで動くコードになったら二段階目です。
- そしたらまた全部消しましょう。今度は、時間を測りながら、もう一回、書きましょう。書いてアクセプトされたら文字を消してもう一回書きましょう。これを10分以内に一回もエラーを出さずに書ける状態になるまで続けてください。3回続けてそれができたらその問題はひとまず丸です。
(10分以内に書くことを3回といっているのは、その過程で理解が整理されて思考が深まるからである。何回も繰り返し間違う箇所はなんらかの不自然さを反映していることが多い。書き上げた後に見直しをすることも想定している。また、稀に、回答がとても長くなる問題があり、そのときには15分を超えることもあるだろうし、長くなれば打ち損じも増える。理念に従って調整して欲しい。自らの教育のために何が最善かを考えるのも一つのエンジニアリングである。)
- 二段階目で、過去に同じ問題を解いている人の解答を読むことを勧めている。
- 意図:
- 書くよりも他人のコードを読むことのほうが重要である。
- コードとレビューコメントの組があるので、レビューコメントを予測するということがとてもいい学習になる。
- PR に memo.md を含めて、様々な疑問や感想などを書いている人も多い。
- レビューしている側としても、「知識、反応、行動、感覚、判断」などが分かるので助かる。
- LeetCode 公式の解答はあまり勧めない。
- 過去に解いている人の中で気に入った人を探しておくといいのではないか
- 意図: