私は最近、いくつかの MVC PHPフレームワーク について学びました。そのうちの 2 つは社内のものです。処理ロジックからページのレンダリングに至るまで、構成の実装は XML または 注釈 に過ぎないことがわかりました。もしかしたら、もうこの思考回路から抜け出せないような気がするのですが? 今日の時代はエキサイティングなコンセプトの時代です。のオープンソースソフトウェアの数は20,000を超えています。学ぶ価値のあるテクノロジーは何ですか?
友人は、興味に駆られて Android の開発テクノロジーを学びたいと言いました。あれから数ヶ月が経ち、小さなプログラムはたくさん作れるようになった、とのことですが、よく考えてみると、技術を習得するのは良いことですが、それ以外に何があるのでしょうか?彼は、「Android
プラットフォームを仕事で使わないなら、それを学んでも何の意味があるでしょうか?」と言いました。 テクノロジーを学ぶことは面白いことですか、それとも苦痛なことですか?勉強していたときに、侯傑訳の『Speaking in Simple and Simple MFC』を購入したことがあります。その時は少し難しすぎると思いましたが、本当に読みました。続きを読む気力がなかった。私にはそこに何の喜びも感じられず、当時この本は生々しさに満ちているように思えた。
上記のような話はよくありますが、プログラマは(私も含めて)一生懸命勉強しているのですが、成果が出ない人もいますし、何のために勉強するのかさえ分からない人もいます。 国内の教育システムは次のような人々を育ててきました:
彼らは勤勉で進取的で、テクノロジーが大好きで、ソフトウェア業界に積極的に参加し、高品質のコードを書く意欲があり、業界のことに非常に興味があり、しっかりした基礎知識を学ぶ意欲があります。彼らは注目の新技術に熱心です...
数年後、彼らは広い視野、幅広い経験、洗練された経験、鋭い言葉、そして業界のトレンドをよく理解しています。
しかし…
彼らにはそのような能力、つまり思考力が欠けています。
思考力の欠如は、簡単にこの現象を引き起こす可能性があります:
デザインはできない
問題に遭遇したとき、長所と短所を慎重に分析せずに、見たり学んだりした使い慣れたフレームワーク、ソリューション、モデルを適用するだけで、現在の問題にできるだけ近い解決策を見つけようとします。システム設計のやり方を知らない人もいます。私は、「ビジネスだけを理解してテクノロジーを理解していない」数人のいわゆる「アーキテクト」と接触しましたが、このように設計されたシステムは機能要件のみを満たすことができ、フォーラムではいくつかの特定の問題についての議論が行われました。投稿の討論者は、「
XXX
大容量ソリューション」や「フラッシュセールシステムの究極のアーキテクチャ」など、「ビジネスではなくテクノロジーについてのみ話した」いくつかの問題を暴露し、一連のソリューションを設計しようとしました。特定の種類の広範な問題に対して、どこでも機能する普遍的なソリューション。オブジェクト指向設計の方法を知らず、抽象化して分離する能力に欠けている例はさらに多くあります。友人が私に語ったところによると、彼の部隊には
Ruby を書いた古い従業員がいたそうですが、そのコードには God クラスが 1 つだけあり、それによってすべての問題が解決されました。
自分の視点に固執しないこれはインタビュー中に最も簡単に観察されます。応募者には新卒者と10
年以上働いている経験豊富な実務者が含まれます。大まかなプランを提示した後、ある程度プランが練られるまでは賛否両論をコメントするのは難しいですが、優しくチャレンジ
すると、彼はすぐにあなたのアイデアに従うでしょう。考え。たとえば、SNSシステムでは、サーバーはどのようにしてクライアントにメッセージを通知すべきでしょうか?この問題には、クライアントのポーリング、サーバーのホールド
ホールドの接続プッシュなど、多くの解決策があります。そして短所。候補者は自分の意見を持つべきです。問題の解決策を絞り込むことができない おしゃべりな人と行動する人を見分けるには?彼に具体的な質問をするのが最善の方法です。私も働き始めた頃は、イベントやディスカッションで大きな声で話す人に憧れていました。でもその後、話せる人が多すぎることに徐々に気づきました。コーディングに至るまで設計を洗練することは、プログラマーの真の試練です。もちろん、ソフトウェア設計を行う人がコーディングに精通している必要はなく、アーキテクトが上級プログラマーである必要もないと考えるのであれば、話すことは何もありません:)
。
学ぶことができれば、非常に早く成長できますが、考えることができなければ、常に他の人に遅れをとるだけです。
新しいテクノロジーを学ぶことについてもっと考えるべきだと思います。学習に対する動機は人によって異なります。外の世界から強制されない限り、新しいテクノロジーの学習に関する私の見解は次のように要約できます:
それはどのような問題を解決しますか?それはいわゆる問題領域ですか?それは私が気にしているものですか?
オペレーティング システムの基本的な実装については勉強していません。価値がないわけではありませんが、興味がありません。これが問題領域の影響です (しかし、興味があるので、何かをしたいと思います)。このエリアの中では)。
以前のソリューションと比較したその利点は何ですか?また、それらは重要ですか?
これは 競争 です。テクノロジーを繰り返す余地はありません (もちろん、マイクロソフト の場合は除きます:) と同じように、インターネット上の同じ種類の Web サイトは 2 つだけです。または最終的に 3 社が競合する可能性があります。 Groovyのように、私はとても気に入っていますが、Scalaに関しては、おそらくそのうちの1つが死ぬことになると思います(Groovy創設者は、もっと早く知っていたらScalaだったらそのとおりです。Groovyには何も問題はありません。具体的なレポートについては、Google彼のブログを検索してください。
その実装と効果を見て、学び、考える価値のある興味深いアイデアはありますか?
これは答えるのが最も難しい質問です。例として、私が昨年の初めに連絡を開始した Node.js を取り上げます。これは、バックエンドの集約 (ポートレット など) をフロントエンドに組み込むことができます。バックエンドは 1 種類のページ サービスのみを保持します - — ページ テンプレートと管理しやすいいくつかの API インターフェイスにより、バックエンド システムの複雑さが大幅に簡素化され、負荷を分散することもできます。フロントエンドは、これまでには見たことがありませんでした。
これら 3 つの質問について考えた後、それらは価値があると感じたので、勉強を始めました。それ以外の場合は、私にとってそれは深く立ち入りたくないものであり、ただそれを理解したいだけです。
新しい技術を学ぶ方法について、私は次の点を言いたいです:
エントリーポイントを見つける
私は、BlueDavyのブログの文章がとても好きです。「理論が理解できないなら、実践すればいいだけです。実践が理解できないなら、理論を学べばいいのです。」
最終的には実践的な練習に取り掛かるのが最善ですが、原則を紹介するテキストから始めることに慣れている場合は、悪い選択ではないかもしれません。さらに、いくつかのインターネット企業 (AmazonのEC2、M$のAzureなど)のクラウドプラットフォームを理解する場合など、現実にはいくつかの制約があります。 )、これらの企業の従業員でない限り、そこに入るのは困難です。
自分の興味のあるポイントを見つけてください
学習は興味深いものでなければなりませんが、脳がこの新しいテクノロジーを拒否する場合、それを習得するのは簡単ではないと思います。興味のある点が見つからない場合は、新しいテクノロジに学ぶ価値があるかどうかについて、前のポイントに戻って考えてみるとよいでしょう。そのテクノロジに興味がないのに、なぜそれを学ぶ必要があるのでしょうか。西安ソフトウェアトレーニング
比較するのが得意
比較は非常に簡単な考え方です。何と比較しますか?同様のテクノロジーと比較し、オペレーティング システムやネットワークなどのインフラストラクチャの例と比較し、最後に生活の例と比較します (たとえば、JAVANIO の実装が良い例です)。
フィードバックを継続的に受け取る
フィードバックとは何ですか? HelloWorld の例を作成することは優れたフィードバックであり、特定の実装原理を理解し、他の同様の実装を考え、啓発された感覚を持つことも一種のフィードバックです。学習の過程において継続的なフィードバックは達成感を得続けることを意味し、継続のモチベーションの一つとなります。