前回の質問で、サーバーサイドの勉強は自分で小さなシステムを作る事が一番の勉強になる!っと教えて頂いたので、スクレイピングで情報収集、csv出力、データーベースに登録、っといった小さな所から作成し、とても勉強になりました。
その反面、動くけど、自分の知っている範囲内のオブジェクトしか使わないので長くて汚いコードになるという問題に直面しました。
そこで質問なのですが、なんとなくいじって動くものを作ってから基礎を学習するのと、基礎をガッツリやってから動くものを作るのとでは、何かしらの違いがあるのですか?
私は、基礎を重んじるタイプなので後者の方法で勉強してきましたが、プログラミングはスポーツと一緒で、まずは身体で感じ、その次に頭脳を使うというスタイルがあってるのではと思い質問させて頂きました。
よろしくお願いします!
気になる質問をクリップする
クリップした質問は、後からいつでもMYページで確認できます。
またクリップした質問に回答があった際、通知やメールを受け取ることができます。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。

回答5件
0
ベストアンサー
(職業的)プログラミングはエンジニアリングだと、私は捉えています。
エンジニアリングは日本語だと「工学」になります。
じっさい、「情報工学」という言葉を聞いたことがあると思います。
それで、工学だとしたら何なのかですが、工学の特徴に合目的性があります。
経済学者と違って、投資家は投資(金融工学)で利益を上げる必要があるのと同じで、
数学者と違ってITエンジニアや組織は、プログラムを動かすだけでなく、
プログラムによって問題を解決し、最終的に利益を上げる必要があります。
(ただ、だから数学が不要というわけでもなく、分野によってはよく使います)
スポーツなどの競技でも、勝負に勝つという目的はあります。
しかし、エンジニアリングの目的は多目的であることが多いです。
陸上競技やカーレースなら、タイムの短縮が目的ですが、
プログラミングでは実行速度の早さは多くの目的のひとつです。
開発コストとかセキュリティとかデザインとか、
数多くの要素を総合的に判断する必要があります。
ご質問に戻りますと、動かしながら学んでいく、というスタイルは良いと思います。
しかし、動かせるようになった後で、さらに向上させるのが難しいんだと思います。
その「向上」と言っても、少しでも実行速度を早くするコードと、
保守しやすいキレイなコードを書くのでは、向上の方向性が違います。
また、最新の技術を学ばないと置いて行かれる場合もあれば、
「枯れた技術の水平思考」の方が有効な場合もあります。
ですから、プログラミングでは、自分がどういう方向を目指すのか、
目的意識を持って情報収集したり、アーキテクチャーやプラットフォームを
市場予測的に選択したり、計画的に設計したりする要素が大きいです。
それも広義のプログラミング、エンジニアリングのうちです。
それでけっきょく「具体的には何をするの?」といえば、
汚いコードが問題だと考えれば、「リファクタリング」のやり方を調べますし、
さらに機能を拡張したいと思えば、既存のクローラーの仕組みを調べたりします。
だから、まず適切に問題を立て、分析することから始めます。
投稿2016/10/22 12:19
総合スコア5592
0
ここでの基礎って何だろうな?と考えてしまいました。
テキストサーバーサイドの勉強は自分で小さなシステムを作る事が一番の勉強になる!
これって基礎が詰まっているからこそだと思うんですよ。
その反面、動くけど、自分の知っている範囲内のオブジェクトしか使わないので長くて汚いコードになるという問題に直面しました。
基礎って色んなオブジェクトを知っているってことだけですかね?
オブジェクトがどう動くかとか、コードを汚く感じるとか、ここが改修できそうだと感じるのも基礎だと思います。つまり、システムを作るのは感性という基礎を作る場でもあるわけです。
感性なんか基礎でないと感じるかもしれませんが、日本語の基礎ができてる人って日本語の美しさを感じられる人じゃないですか。コードの美しさを感じられる人もコードの基礎ができてるってことだと思います。
投稿2016/10/22 11:51
総合スコア702
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。

0
理想は両方を並行してやることだと思いますよ。
ひたすらコードばかり書いていても、きれいなコードをかけるようになるわけでないし、
ひたすら本ばかり読んでも、知識ばかり増えて、実際に作りたいものが書けるようになるわけでないので。
まぁ、手を動かすことを優先して、空いた時間に本を読んで基礎を学ぶのオススメです。
書いたコードをレビューしてくれる人がいるといいと思いますが。
また、きれいなコードを書くためには、他人のコードを読むことも大事だと思います。
サーバーサイドの勉強は自分で小さなシステムを作る事が一番の勉強になる!
これはそのとおりだと思います。いきなりやり方がわからない技術をたくさん使ったシステムを作るより、初めて使うものは一つに絞って徐々に機能を追加していくような勉強(開発)がいいと思います。
プログラミングはスポーツ?
自分はスポーツに似ているとは感じたことがないですが...まぁどんなものも考え方や学び方が似ていることはあるかもしれませんね。自分的にはプログラミングは、自分が書いたコードの通りにしか動かないという意味で、偶然性(運)がほとんどなく、すべては自分のやった結果である点が独特だと思いますね。(だいぶ脱線)
投稿2016/10/22 08:36
総合スコア6586
0
スポーツでも学習でも芸術のようなクリエイティブなものでも、上達するにはサイクルを継続して回す必要があると思います。
つまり実技と学習を交互に学習しつづけないと成長しないのではないでしょうか。
1サイクルで終ってしまうと、1サイクルで成長が止ってしまいます。
学習 -> 実技 -> 学習 -> 実技 -> 学習 -> 実技 -> 学習 -> 実技
学習からの方が入りやすい人は学習から入ればいいし、まずはやってみないとピンとこない人は実技から入ればいいと思います。
サイクルを回すのが重要です。
投稿2016/10/22 16:31
総合スコア1728
あなたの回答
tips
太字
斜体
打ち消し線
見出し
引用テキストの挿入
コードの挿入
リンクの挿入
リストの挿入
番号リストの挿入
表の挿入
水平線の挿入
プレビュー
質問の解決につながる回答をしましょう。 サンプルコードなど、より具体的な説明があると質問者の理解の助けになります。 また、読む側のことを考えた、分かりやすい文章を心がけましょう。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2016/10/23 01:36
2016/10/23 07:19 編集