web-dev-qa-db-ja.com

フレームワークのクラスを覚えていますか?

私はiOS開発者として約5年になります。 NSStringとNSArrayが実行できることは、私が知らなかったことがまだあります。 NSStringクラスのすべてのオプションと機能を実際に座って覚えたことがないため、これまでに見たことのないすべてのオプションの属性と動作。私は頭のてっぺんから基本的なことのほとんどを知っていますが、私は通常、その場でできない場合にそれを行うための最速の方法をグーグルで検索します。私の質問は:あなたたちはあなたの最も一般的に使用されるフレームワークのクラスのほとんどを記憶していますか? (私にとってはCocoa Touchになります)。これは、あなたがいるプログラマーの「レベル」の分類に影響を及ぼしますか?技術的には私は先輩で仕事は上手ですが、上記のことで不思議に思います...誰かが同じページにいるのは誰ですか?

1
Henry F

私はC#/。Net開発者です。

.Netは巨大なので、すべてを内外で知らないことで自分を打ち負かすことはありません。とは言うものの、私は過去数年間、主にデスクトップ/サーバービジネスアプリに焦点を合わせてきたので、私の典型的な問題を解決する.Netのサブセットに非常に精通しています。それは私があちこちで新しい宝石を時々発見しないということではありません。

私は定期的に、役に立つが知らなかった新しいもの(または古いもの)を見つけます。私にとって、これらの新しい宝石は通常、他の人のコードを読むことによって見つけられます--not APIドキュメントを注ぐことによって。

他の人のコードは、長い間私の主な学習リソースでした。最終的に、私が容認できるほど強固な基盤を構築したとき、私はエリック・リペットのようなクレイジーなブログに身を投じました。

私の経験では、このアプローチは珍しいことではありません。私が仕事で出会う開発者の約80%は、開発者としての進歩を気にしません。他の20%は、私とほぼ同じアプローチをしているようです。そして、はい、それは私の頭のてっぺんから私が知らないものをグーグルすることを含みます。

私があなたならあまり心配しません。ここで質問するのに十分なほどこれらのことを考えているという単なる事実は、非常に良い兆候です。

9
MetaFight

私はプロとして20年間プログラミングを行ってきましたが、それでも自分がどれだけ知らないかに驚いています。私の最強の言語はC++とPerlであり、言語の基本を非常によく知っていますが、それから私が常に調べなければならないSTLとBoost、そして私が時々熟読し、誰かを見つけることを常に喜んでいるすべてのCPANがありますそれ以外の場合は、私が1週間書いていたコードのモジュールをすでに作成しています。

言語、API、およびその他の人のコード(OPC)は常に行き来し、進化し、死にかけています。私の20年の経験は、今年人気のある開発のひねりの特性と方法を100%の精度で注ぎ出すことだけでは、何の意味もありません。お持ちのツールを使って美しくプログラミングする方法を学びましょう。すべてのクラスについてすべてを知っていなくても心配する必要はありません。おそらく、いくつかの新しいAPIが最終的に導入され、何千時間も学習と習得に費やしてきたAPIが廃止される可能性があります。

Windowsは以前はCベースのAPIだったので、Windows APIを学び、次にWin32を学びました。それからそれはボーランドのC++に行きました、それで私はOWLを学びました。それがうまくいかなかったので、私はMFCを学びました。 OLE、OLE2、COM、.NETの順に学習する必要がありました。次は何ですか?AppleはSwiftに変わります。私はそれについて何も知らないので、これは不正確かもしれません:Cocoa Touchを放棄する時が来ましたか?

古いタイマーにも同じような話があると思います。なんでも。プログラミングを学び、利用可能なAPIについて知っていることをすべて使用し、新しい知識を見つけたらそれを受け入れますが、それの最後の部分をすべて学んで自殺しないでください。とにかく数年で関連性がなくなる可能性があるためです。

12
Wonderful Wawb

問題からクラスへのパスに集中します。

クラスの詳細を記憶するよりも、の概念のパターンを把握することをお勧めします。後者よりもはるかにポータブルです。日常的に使用するクラスの詳細は確かにわかりますが、(将来の)フレームワークのすべてのクラスを追跡することはできません。

家はレンガ(または原子)で構成されていると定義できますが、これは建物を建てるときにあまり役に立ちません。もちろん、クラスは1行のコードよりもはるかに抽象的ですが、そのすべてのファセットを記憶することはオーバーヘッドであり、キークラスを記憶するだけです

おそらく、明白な事実に対するあなたの記憶は年齢が上がるにつれて減少しますが、知識を統合する能力(十分に発達している場合)はもう少し長く残ります。

2
Wolf

はい、頭から離れて言うことができます。おそらく、操作の80%は私が日常的に使用しているものに基づいています。結局のところ、ツールが何であるかわからない場合、どのように何かを構築することを計画できますか?

公平ではありますが、私には並外れた記憶があります。

0
Telastyn

私の知識のほとんどは、私の心ではなく、世界にあります。

私は主に.netを行います。 Telastynとは異なり、私はおそらく定期的に使用するものの約20%しか記憶していません。残りの部分は、インテリセンスが必要な残りの部分をプルアップできることをほとんど知っていません。これは、私が覚えていたのと同じ速さです。その知識は世界にあるものです。

また、たとえばpythonで作業すると、より多くのパーセンテージが記憶されますが、C#ですぐにアクセスできるものよりもはるかに少なくなります。その知識は私の頭の中にあります。

どちらの場合も、私は物事を暗記するために通勤する努力を費やしません。繰り返し使用するだけで、浸透によってすべてが記憶されます。

0
whatsisname

流暢さは、あなたが使用している言語で努力するものでなければなりません。物事が存在することを知り、それらを記憶することを区別するかどうかはわかりません。誰かが暗記と言うとき、私は通常、正確な名前、構文などを考えます。私にとって、言語/フレームワークの機能をGoogleに考慮しない開発者と、「チートシート」を必要とする開発者との間には大きな違いがあります。いくつかのリマインダーが必要なものとそれをすべて記憶しているものの間にあるよりも実際にコードを書くことへの参照。

一部の人は他の人よりも良い思い出を持っています。暗記に力を入れる人もいますが、言語に堪能な開発者の方が、より多くの経験を積んでいると思います。現在特定の言語で作業している上級開発者であると主張しているが、IFステートメントの記述方法がよくわからない場合は、疑わしいでしょう。

0
JeffO