新しいプログラマーは、熟練するまで単一のテクノロジーに集中すべきですか?[閉まっている]


10

わかりました、私はしばらくの間プログラムする方法を仲間に教えてきました。彼は非常に速い学習者であり、これまでのところプログラミングは非常に得意です。しかし、彼には私が修正しようとしている「問題」が1つあります。

彼は飛び込んで、基本の一部を学ぶことなく高レベルのプログラミングを始めます(本格的なWebアプリケーションを作成しましたが、ページネーションやセッション管理についてはまだ知りません)。

しかし、これは問題ではありません。彼は新しいテクノロジー(Node.js、MongoDB、EC2など)に飛び乗り続けています。MongoDBの基本を学ぶためにたくさんの時間を費やす前に(そしておそらく何か新しいものに移行する前に)、選択したRDMS(MySQL)について毎日使用するため、彼はいくつかの基本的なRDMS(MySQL)を学ぶべきだと彼に伝えようとしました。

私はここで間違っているのですか、それとも彼は一度に1つのことに集中して、それを本当に上手にしようとするべきですか?


6
彼のWebアプリケーションがセッションとページネーションをサポートすることを要求する良い機会のように思えます。その結果、彼はそれを学ばないでしょうか?

また、どの単一の技術を学ぶ必要がありますか?

@ThorbjørnRavnAndersen単一のテクノロジというわけではありませんが、LAMPスタックは彼が毎日使用しているものです。少なくとも、MySQL、Apache、PHP、JavaScriptに関する彼の職務詳細に関連するすべての基本的な知識を習得する必要があると思います。
Brandon Wamboldt 2012

1
次に、基本的に自分の質問に「いいえ」で答えました。

1
彼はすでにWebやデータベースなどの複数のテクノロジーを一度に学習していませんか?ここでテクノロジーを構成するものの境界は何ですか?
JBキング

回答:


18

個人的には、プログラミングを学ぶときにさまざまなテクノロジーや言語を試してみるのは素晴らしいアイデアになると思います。1つのテクノロジーに焦点を当てることには、それを非常に上手に使えるという明らかな利点がありますが、1つのテクノロジーしか知らないという明らかな欠点があります。

しかし、より重要な微妙な欠点は、言語とフレームワークには一般にイデオロギーが付属しているということです。多くのプログラマー(たぶんほとんどのプログラマー)が、プログラムするすべてのものに1つのイデオロギーを適用するだけです。これは、多くの場合、1つの言語で1つのフレームワークを非常によく学習し、ゴーグルがないと何も見えないためです。

特に、プログラミングを学んでいるだけの人にとっては、そこにあるものを試して、後で何かに集中するのを待ちたいと思うことは本当に問題だとは思いません。結局のところ、技術を熟知していなければ、実質的なものを書くことは難しいでしょう。


2
2番目の段落の+1。さまざまな言語、フレームワーク、APIを見ると、デザイナーが特定の言語/フレームワーク/ APIを実装する方法で実装することを選択した理由について多くのことを知ることができると付け加えます。学習者にプログラミングとソフトウェア全体のより深い理解を与える。少なくとも、imho
Jamie Taylor

+1「実際の」プログラミングの仕事をしているときなど、集中することを学ぶ状況があります。しかし、1つのフレームワークにのみさらされている場合、どのようにして仕事を得るのでしょうか。複数のフレームワーク/ライブラリで何かを書くことを学び、CVにパディングして、特定の1つのテクノロジーに偏っていないことを示すことができます。;-)実際のコンテキストを取得すると、ページネーションやRMDBのようなことを後で学ぶことができます。
スポイケ

@スポイケ彼は「本物の」プログラミングの仕事をしているので、私が彼にその仕事に毎日使用しているテクノロジーに集中させようとしているのはその理由です
ブランドンヴァンボルト

1
@RougeCoder:彼に適切なタスク(この巨大なリストのページ、アイテムのフィルター、グループ化されたサンプルを使用した図の描画など)を与えて、彼に知ってもらいたい概念の実行方法を学習できるようにします。そのようなタスクがない場合、その知識を定着させるコンテキストはありません。
スポーク

1
「関数型プログラミングを学ぶとあなたは違う考え方になる」などと人々が言っ​​たとき、私はそれがBS、または少なくとも誇張であると思っていました。結局、彼らはそれがあなたのコードに与える影響を削減していました。私のコードはすでに完全に異なっており、選択した関数型言語にまだ慣れていないし、コードの記述方法を変更しようとしているわけでもありません。それは本当に目を見張るものです。
Steven Evers

5

この問題の両側には正当な理由があります。多くの異なるテクノロジーについて「十分」を知ることは確かに価値があります。多くの異なるテクノロジーについて「少し」知っていますか?それほどではありません。

特定のテクノロジーに関する深い知識は確かに価値があります-テクノロジーに対する継続的な需要がある場合。特定のテクノロジーについて「知っておくべきすべてのこと」を知っていますか?...おそらく多すぎる。

だから、それはすべてのバランスです。彼がnosqlで素晴らしいアプリを作成することになった場合、なぜ彼はInnoDBエンジンとMyISAMエンジンの違いを知る必要があるのでしょうか?


まあ、InnoDBとMyISAMの違いは基本的にトランザクションです。トランザクションを理解していない場合、「結果整合性」などの概念を正しく処理できる可能性はどのくらいありますか?
Michael Borgwardt

恩赦?誰もが彼がトランザクションを理解していないと言った人はいません。
pbr 2012

3

一部同意します。彼は根本的な原則を知る必要はありますが、彼はただ1つのことに腰を下ろしてそれを本当に上手にする必要はありません。誰もしません。

一つのことに腰を下ろして本当に良くなった時

現在、C#およびMicrosoft XNAと協力してゲームを作成しています。私はXNAについて多くのことを学んでいます。すでにC#に精通している一方で、私の知識は少しずつ拡大しています(今日、型パラメーターの制約について学びました)。

ただし、XNAやC#で「本当に上手」になる必要はありません。今すぐプロジェクトを完成させて先に進み、どちらも二度と使用しないとしたら、私は完全に満足し、私の学習は他の場所で継続されます。

原則は重要です

少なくとも私は根本的な原理を理解しています。C#とXNAで物を作成するとき、自分が何をしているのか理解しています。理解していなければ、それについて学びます。

ページネーションを書けば、ページネーションの仕組みが理解できます。友達がページネーションを作成し、それがどのように機能するかわからない場合、それは問題です。彼がページネーションを作成しなかった場合でも、彼が知る必要がある理由はありません。

ここでの問題は、@ $#が何であるかを知っていますか!彼はやっているのか、それともプログラミングの方法を知らないプログラマーなのか?


あなたは良い点を上げます。問題は、彼は自分が何をしているかを知っているものもあれば、知らないものもあるということです(彼はそれを学びたくないので、他のプロジェクトからコピーし続けます)。例えば、彼はページネーションを書いています、私はそれを少しずつ調べましたが、彼はまだ理解していません。彼はそれが非常に単純な概念であり、彼ははるかに複雑なことをしたので、彼がそれを理解できたことを知っています。
Brandon Wamboldt 2012

はい、それ問題です。彼がコードを書いているのなら、彼はコピーアンドペーストプログラマーになり、自分が何をしているのかまったくわからないプログラマーになる途中であることを理解していません。
doppelgreener 2012

3

彼が作りたいものを持っているので、彼は他の言語を試みていると思います。いつでも言語やフレームワークに戻って詳細を学ぶことができます。

理論の学習/基盤の構築とモチベーションを維持しようとすることの間には微妙な違いがあります。

少なくとも彼は単一の言語にこだわっていません。時々、あなたは良いものと悪いものを一緒にする。


3

私は彼の態度を負債ではなく資産として捉えています。彼の研究能力は平均以上です。彼の学習曲線も浅い。もし彼に何かを学ばせたいなら、この特徴を利用してみませんか

彼の探究心は常に外出中です、どうして彼に指示を与えませんか。まず、ページネーションが重要かつ不可欠である理由を彼に伝えることから始めます。彼にページネーションのあるウェブサイトとそうでないウェブサイトを見てもらいましょう。

彼がしていることに対して建設的な批判をするのはどうですか。「すばらしいことを成し遂げましたが、最適化とベストプラクティスに重点を置いてこの方法で実行した方がいいでしょう。

良い実践と悪い実践を比較することは彼の心を本当に刺激することができると思います。

彼を制限しないでください、彼は最終的に彼が望む何かを見つけてしばらくの間それで落ち着きます。私があなただったら、彼がとても情熱を傾けていることについてのたくさんの学習資料を彼に提供します。

彼はトップダウンのアプローチをしていると思いますが、一方であなたは彼にボトムアップのアプローチをしてもらいたいのです。


1

なぜそれが悪いのですか?

反対に私はそれはとても良いと思います!それは好奇心と学習意欲を示しています。さらに、彼は適切な仕事に適したツールを見つけたいと思っています!不十分な第一選択技術に固執するよりはましです。;)

実は、ベテランのプログラマーとしてもそうです。そして、私はそれをお勧めします。私が新しいプロジェクトを持っているときはいつでも、私の振る舞いは次のとおりです:

  1. 探索(有用な可能性のある潜在的な技術)
  2. 実験(有望に見えるものを使用)
  3. あなたの技術を選択してください(またはあなたが知るまでさらに少し実験してください)
  4. それに固執する(アプリを開発してそれを引き出す)

それは完全に理にかなっていると思います。


1

個人的には、誰かが1つのテクノロジーだけに集中する必要がある場合、それはSQLと共に使用されるC#/ Javaであるべきだと思います。

これからは、他のテクノロジーにも対応できると思います。

しかし、1つのテクノロジーに固執することは、企業環境に踏み込みたい場合に制限となる可能性があります。

理想的には、1つのオブジェクト指向プラットフォーム、1つのモバイルプラットフォーム、1つのWebプラットフォーム、そしてSQL(またはその他のデータベース環境)についての十分な知識が必要です。

そして基本を最初に、さもなければ彼は後で立ち往生するでしょう!


0

彼がプログラミングの初心者であれば、それは悪くないことです。

彼はいくつかのものがどのように機能するかを見るでしょう。しかし、彼が何をしているか理解していない場合は、まったくそれを行わない方がよいでしょう。

Java、C、C ++、C#、Phyton、ASP.NETなどすべてを知りたいと思っていましたが、すべてを知ることができないことに気付いたので、いくつかのことに焦点を当てています。より良い。

だから彼は何をすべきか(彼に助言する):

  1. やりたいことを考えて
  2. すべてのオプションを探す
  3. 自分に合ったものを見つける
  4. 学べ
  5. 学習をやめるな

新しいプロジェクトが目の前にあるときに常に新しいことを探求し、学ぶなら、@ arnaudに同意しません(完全ではありませんが)。新しいものを何度も探索して学習するには時間がかかりすぎ、一部のプロジェクトには時間制限があります。しかし、その一方で、いくつかの単純な新しいものを学ぶ必要がある場合、それは問題ありません:D。


0

私はあなたに同意します。特定のフレームワーク、テクノロジー、または言語の表面的な知識を得ることは簡単ですが、現実世界の開発に参加して完了まで維持するための最善の理解を得るには、他の人になるアドバイスを求めに来てください。すべての取引のジャック、なしのマスターではなく、すべての取引のジャック、1つのマスターになることが望ましい。そうは言っても、彼は明らかに熱意が高いので、彼が新しいことを学ぶのをやめさせません。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.