一般的なコンセンサスは「コードをもっと書く」であり、これに同意しますが、多くの異なる種類のコードを書くべきであるというアドバイスに追加します。Javaは言語に関しては問題ありませんが、パワースペクトルの上下にコードを作成する必要があります。Javaに加えて、低レベル言語(Cはこれに適しています)、スクリプト言語(perlが好きですが、Pythonも良い選択です)、関数型言語(ここではlispが一般的な推奨事項ですが、OCamlとHaskellも適切な選択です)、少なくともアセンブリ言語を読むことに慣れる必要があります。
また、実装するプログラムの種類をいくつか選択してください。少なくともデスクトップGUI、リッチWebアプリケーション、ネットワーククライアントおよびサーバー、ドライバー、データ変更ユーティリティ、レイトレーサー、物理シミュレーションを実装することを検討してください。
すべてのプロジェクトの範囲は比較的小さくする必要があります。目標は機能満載のプログラムを用意することではなく、実行する可能性のあるさまざまなドメインで幅広い経験を得て、それぞれに必要なさまざまな種類の思考を学び、そして、あなたの興味がどこにあるかを見つけます。
これを行うと、どのタイプのプログラミングに最も関心があるかがわかります。オープンソースプロジェクトを検索または開始して、大規模なコードベースでの作業経験を積むことができます。期間プロジェクト、および他の開発者との共同作業。