技術力が最も求められるのは、ソフトウェアをどのように設計して、どのように分割して実装するか、ってことだと思ってます。
で、このスキルを身につけるためには一部分の機能を実装しているだけじゃ間違いなく身につかない。全体の中からその機能を抽出し、お客さんやメンバーに叩かれてブラッシュアップしていく、という経験がベースになるからです。
かといって、なかなかウン千万規模のシステム設計をやる機会はありません。
私のお勧めは1人で「設計〜実装〜テスト(修正)」を行う1人プロジェクトです。1.5人月ぐらいのバイト的な案件ですが、実現したい用件から実装にまでブレイクダウンした結果の果てに、「ああしたい、こうしたい」というフィードバックを受けることが何より重要だと思っています。
私はあるJSPをフルFlashに置き換える1人プロジェクトを2ヶ月やったことがあります。現行の機能から画面機能を洗い出して、それにFlashになったらやりたいことをMixさせて、機能の設計〜実装を行いました。
画面周りの機能をリッチにすると、実際に目に触れる部分がどんどんブラッシュアップされるのでユーザーも注文をつけたくなります。HTMLじゃできないことができるんで、「うはwww夢がひろがりんぐwww」って感じになるんですね。
そのフィードバックを自分の設計と見比べて吟味することが勉強になるし、何に工数がかかるかという言語特性なんかも知ることができます。また、こういう書き方すると修正大変だorz、みたいな経験も貴重な財産です。
大規模だと仕様変更による設計の変更はかなりキツいんだけど、1人プロジェクト程度の規模なら自分が頑張ればどうにでもリカバー効くという利点もあります。
売り上げはすずめの涙なんですが、まぁ投資だと思ってそういう案件をとってきてあげてアサインしてあげることも、SIerには必要じゃないかと思います。