プログラミングの勉強したければたくさんコードを書け、と言われますが具体的に何書けば良いの
TL; DR
「音楽の勉強をしたければ曲を書け」と言われているのと似ている気がしました。C#だけに。
音楽で言うセッションに参加するようなイメージで、C# 系の OSS のライブラリに PR していくのはどうでしょう。
TS; DR
既存のコードを写経するのは、楽器なら既存の曲を練習するようなものかもしれません。
そして、音楽でいうコード進行、スケール、モードの勉強や練習は、プログラムで言えばアルゴリズムに相当するのかもしれません。特定のプログラミング言語という楽器を使いこなすための練習といった感じでしょうか。
しかし、音楽同様に、それだけでは作ることはできません。
「いや、『書け』と言われても」みたいな。
作画や楽曲作りで「真似ぶ」という言い方をすることがあります。つまり好きな絵柄や楽曲を、パクるのではなく、そこから学ぶという造語です。
プログラムも「これを作ってみたい」と思うものがあれば、パラシュート式のボトム・アップ、つまり、最終形からどうやって実装していくのか想像し、調べて作っていくことになると思います。
問題は、「これ」というものが特にない場合ですよね。
私は、横着をするために苦労する性癖があるので、仕事で「これ合理化できないかな」と業務用ツールを作って言語を覚えてきました。
しかし、今ではこれは間違いだったと思っています。
結局、寂しいだけで終わってしまうことが多かったからです。「改善が必要」と感じたということは、そもそも「そう言うことに、みんな無頓着である」もしくは「みんなは改善の必要がないと感じている」という環境であることが多く、単純な自己・他己の認識のズレだったのです。
そういう中でツールを作っても楽しくない。かといって、普段あまりゲームもやらないので、「オラ、ワクワクすっぞ」と言ったものがあるわけでもなく。
そこで「1回のライブは 10 回の練習以上に得るものがある」という音楽の経験から、ジャム・セッションに飛び込むつもりで「OSS に PR してみよう」と思ったものの、フォークソングしか弾けない自分のレベルの低さに恥ずかしさを感じたのでした。
しかし、誰に聞いても「アウトプットしないと上達はしない」と言われるので、黒歴史にもなりかねないフォークソング級の曲を SoundCloud に公開するような覚悟で、OSS で自分も GitHub で公開するようにしてみました。
10 発に1発くらい「1人でも『助かった』と思ってくれたら良いや」程度の気持ちで OSS 界隈にアウトプットするようになり、今では「フォークの何が悪い!」と開き直り、 GitHub で Fork しまくっています。
仕事のことを念頭に置いてアウトプットするより、ずっと精神衛生的に楽です。