まず質問の内容を明確にしたいのですが、つまり
「C言語の基礎は学んだが設計の力が身に付いていない。設計についてはどのように学べば良いか?」
「不確定要素を含むユーザーの要求などに対する問題解決手段のノウハウが知りたい」
という事でしょうか。
要求分析から設計までの話だとして少しお答えしますね。
まずは要求分析・要件定義について。
このような事を言うと大げさかもしれませんが要するにユーザーが求めている事を把握してそれをソフトの仕様に着実に反映する方法ですね。
ソフトウェアの仕様を決める時、あらゆる手法で仕様を導くことが出来ると思いますが、試行錯誤で決定する以外には、主にアンケート調査からと既存のソフトの問題点から考えるのが一般的でしょうか。
今回「ノウハウ」ということなので、少し堅い話をすると、ものづくりの現場ではよく品質を高める為に「QFD」なんてものが使われています。
http://www.google.co.jp/search?hl=ja&q=QFD&lr=lang_ja
アンケート調査結果などから仕様を導きその重要度や仕様として採用する優先順位が導けます。
また、「新QC七つ道具
http://fk-plaza.jp/Solution/solu_nqc7.htm」なんて物も良く使われます。
また、問題から要因を洗い出すのには特性要因図が良く使われます。
http://www.google.co.jp/search?hl=ja&q= ... lr=lang_ja
(この辺は2年位前にソフトウェア技術研究会で言った事と同じなのですが、未だに資料がアップできていませんね・・すみませんorz)
これらからユーザーの要求から着実に仕様に結び付けることが出来ます。
ただこれは個人で小さなアプリを開発したりするには少し大げさすぎるかもしれません。
> 常に不確定な、周り(自分も含める)の意見や需要や環境に常に振り回される「これ」を、
> そのつどやっつけるための考え方にたどりつけるノウハウを聞きたいのですが。
という事だったので、明確な手法についてお答えしましたが、趣味程度のアプリ開発なら試行錯誤でも十分だと思います。
また、設計についても、ユースケースを明らかにし、シーケンスやアクティビティを明確にするところから設計してもよいかもしれませんが、
初めのうちは試行錯誤で色んなソフトを作ってみたり、プログラムの解説本についてくるオープンソースを読んでみたりして学ぶ方が良いと思います。
とにかくプログラムは数をこなすことが重要です。
> 「C言語の基本?っぽいものは、なんとなく覚えたっぽい?けど、
> これをどう使いこなせば、やりたいことができるようになるの?」
この疑問も沢山ソフトを作っているうちに解消していくと思います。
まずは小さなソフト作りから始めてみてはいかがでしょう。
さしあたり作りたいソフトなどは無いのでしょうか?