オープンソース活動のための時間を確保したいこういう感じの様々な悩みがあるかと思いますが、ズバリ!書く時間と考える時間を分離するをオススメします。横になって休憩しているときでも、ストレッチしているときでも、ショー待ちしているときでも、プログラミングができて捗ります。書いて考えて書いての繰り返し月並みですが、プログラミングは、ただひたすら書くだけの作業ではありません。今の時代のプログラミングであればなおさら、プログラミング言語やフレームワークの進化により、書く量に対して考える量が増えていると思います。書きながらじゃないと考えられないこともあるので、それが100%分離できるかというとそうでもありませんが、中にはある程度分けられることもあるはずです。どんなことを考えるのでしょうか?どれが分離できそうでしょうか。クラス構造や名前などのデザインいまのプログラミングは、ただ動くものを作るだけでは足りません。若い人たちの手本になるプログラム実現するのに選択肢がいくらでもあり、上記の要件を満たすプログラムをデザインすることが求められます。アーキテクチャデザインわかりやすく分離しやすい思考ですね。リファクタリングもここに含まれるかもですね。それなりに難度は高いので後でコツを示します。「これ実現するにはどうすればいいんだ!?」とうなるようなパズル問題。複雑なプログラミングをしてて、ふと止まってしまうことはありませんか?腰据えて考えないとわからないなぁ、というようなロジックの実装。あれば、本当に腰を据えましょう。カフェでハーブティーでも一杯しながら...「あっ、こうやればいいのか!」って思いつくのはパソコンの前である必要はありません。パソコン開いた時に(というか、開きたくてしょうがなくなる)、一気にそのアイディアを実現。うまくいかなかったら、また別の用事をしながら思考。うまく仮説検証サイクルにフィットさせていきます。資料を見ながらステップ実装ERDやテーブル定義などを見ながらクエリーを書いたり、要件を見ながら一つ一つの実装をしたり...これはさすがに分離できそうにありませんね。ドキュメントを見ながらじゃないと書けないでしょうか。いや...ある程度把握して頭の中で全体像を展開できれば、漠然とした実装であれば頭のなかで導き出せます。100%思考できなくてもいいわけで。キャッシュする「いやいや、そんなうまくいかないでしょ?」って思われるかもしれないので、幾つかのコツをまとめてみました。思考に必要なインプット情報を、頭のなかにキャッシュすることです。キャッシュだから恒久的な記憶じゃなくていいです。