I would say that a developer who knows how to find the answers is better than one who has an overall good knowledge already. I find that intellisense is a good tool for finding answers, besides it is too much to remember all method names, arguments, overloads, etc.
I use memory to get me into the right general area (e.g. knowing which classes to use or at least which namespace they'll be in) and then often Intellisense/MSDN for the exact method name or arguments to use.
Having said that, Stack Overflow is improving my ability to code without any references (or even compilation) - I'm sure code will just work out of the box for me more often now than it used to. (I tend to post and then check the code works, add links to MSDN etc - assuming I'm reasonably confident in the approach.)
Someone knowing what resources are available, and how to find the answers, and how to effectively debug - these are qualities I look for now in prospective employees.
I used to consult my memory only, but two things have happened:
Class libraries have gotten larger, so has the number of languages available
The ratio of programming-related memory to personal-life-related memory has shifted away from code
Programming today is also eight times harder than it was when I started. I used to work on 8-bit machines, now I'm working on 64-bit ones. :)
I once was at a job interviewed with the CTO of a company. He asked a question based on a real life problem the company had a while back and solved. It was a multi step problem.
I was standing in front of a whiteboard working through my solution and struggling through a particular part, a part I would use google for before even attempting it, had I been tasked with solving this problem for real instead of for an interview. He asked me at that point, "would you do anything different if this wasn't an interview question." I responded, "Yes. I would exhaust all possibilities of using a third party component for this part of the task and look up the solution, because it is a well defined problem thats been solved several times." There was a bit more discussion where I justified my answer, explained exactly what I would research, and I solved some other parts of the question. In the end I was offered and accepted the job, partly because of knowing how to find out what I didn't know.
Being able to use references is as important as being able to code from memory. Obviously, if you are a one language shop, and want people proficient in that language,the person should be able to write a complete hello world app in notepad. Interview problems should focus on small problems, and one should not worry about small syntax errors. This is why a whiteboard is the best IDE for interview questions.
Unless you demand all your coders use notepad and don't give them internet access, don't be as concerned by the syntax. If you do sit them down in front of a computer, worry about the finished product as well as the technique used to get there.
I'm a PHP programmer in my early 30's. I rely on PHP's excellent documentation, for several reasons:
Programming concepts don't change. If I know what my object models are and how I want to manipulate data, then there's dozens of ways to implement the details. The details are important, but a better grasp of the design and structure is more important
PHP has notoriously inconsistent functions. One string function might use ($needle,$haystack) as parameters, and another might use ($haystack,$needle). Trying to keep them straight isn't worth the hassle when you can just type php.net/function_name and get the reference.
I don't rely on intellisense, simply because I haven't found a decent IDE for PHP that does it well. Eclipse is ok, but it's not fantastic. Netbeans gives me 'PHPDoc not found' for all the built-in PHP functions whenever I install it. There's nothing that I've found so far that beats out the documentation.
The bottom line is that the ability to memorize functions isn't indicative of coding ability. Obviously there's a key set of basic functions that a good programmer will know just from extensive usage over time, but I wouldn't base a hiring decision on whether someone knows substr_replace vs. str_replace from memory.
Because I've read either the documentation, or articles, or a book on a subject, the things I learn on a topic are organized. The result is that, if I can't bring something up from memory, I can probably find it quickly through IntelliSense or the Object Browser.
Worse come to worst, I can pick up the book again; something these youngsters are not being taught to do.
Pretty much Google + Old Projects + my memory (of course)
References will not solve your problems though, its only for the nuts and bolts, the higher level of problem solving is the actual "programming" part IMHO.
I tend to use Intellisense and Resharper much more than I used to before, but this has helped my overall productivity. If I can get the idea of how I want to solve something and then use tools to get the more boring parts like class names and function signatures, why shouldn't I use the tools I have? I feel relieved that Jon Skeet has a similar approach it seems.
我依靠我的书签和书籍......以及我有效使用它们的能力。我的桌子上有多本书,其中包括一本 ISO C90 标准的副本。 此外,我使用 Xmarks 来访问我的 书签 无论我走到哪里。 有时,我会根据特定页面制作 pdf 并将其上传到我的网站(如果它足够重要)。
有时,我使用的资源提供的信息会进入我糟糕的记忆......也许。
I rely on my bookmarks and books... and my ability to use them effectively. I have multiple books above my desk, including a copy of the ISO C90 standard. Moreover, I use Xmarks to have access to my bookmarks wherever I go. Sometimes, I make a pdf out of a particular page and upload it to my web-site if it is important enough.
Sometimes the information provided by the resources I use makes its way into my terrible memory... maybe.
发布评论
评论(9)
我想说,知道如何找到答案的开发人员比已经拥有全面知识的开发人员更好。 我发现智能感知是一个寻找答案的好工具,而且记住所有方法名称、参数、重载等也太麻烦了。
I would say that a developer who knows how to find the answers is better than one who has an overall good knowledge already. I find that intellisense is a good tool for finding answers, besides it is too much to remember all method names, arguments, overloads, etc.
我使用记忆让我进入正确的一般区域(例如知道要使用哪些类或至少知道它们将位于哪个命名空间),然后经常使用 Intellisense/MSDN 来获取要使用的确切方法名称或参数。
话虽如此,Stack Overflow 正在提高我在没有任何引用(甚至编译)的情况下进行编码的能力 - 我确信代码现在比以前更频繁地为我工作。 (我倾向于发布并然后检查代码是否有效,添加 MSDN 链接等 - 假设我对这种方法相当有信心。)
I use memory to get me into the right general area (e.g. knowing which classes to use or at least which namespace they'll be in) and then often Intellisense/MSDN for the exact method name or arguments to use.
Having said that, Stack Overflow is improving my ability to code without any references (or even compilation) - I'm sure code will just work out of the box for me more often now than it used to. (I tend to post and then check the code works, add links to MSDN etc - assuming I'm reasonably confident in the approach.)
有人知道哪些资源可用,如何找到答案,以及如何有效调试——这些是我现在在未来员工中寻找的品质。
我过去只查阅我的记忆,但发生了两件事:
今天的编程也比我开始时困难八倍。 我以前在 8 位机器上工作,现在在 64 位机器上工作。 :)
Someone knowing what resources are available, and how to find the answers, and how to effectively debug - these are qualities I look for now in prospective employees.
I used to consult my memory only, but two things have happened:
Programming today is also eight times harder than it was when I started. I used to work on 8-bit machines, now I'm working on 64-bit ones. :)
我曾经面试过一家公司的 CTO。 他根据公司不久前遇到并解决的现实问题提出了一个问题。 这是一个多步骤的问题。
我站在白板前研究我的解决方案,并努力完成一个特定的部分,如果我的任务是真正解决这个问题而不是接受采访,我会在尝试之前使用谷歌来解决这个部分。 当时他问我:“如果这不是面试问题,你会采取什么不同的做法吗?” 我回答说:“是的。我会穷尽所有使用第三方组件来完成这部分任务的可能性,并查找解决方案,因为这是一个定义明确的问题,已经解决了好几次了。” 还有更多的讨论,我证明了我的答案,准确地解释了我要研究的内容,并解决了问题的其他部分。 最终我得到了这份工作并接受了这份工作,部分原因是因为我知道如何找出我不知道的东西。
能够使用引用与能够凭记忆进行编码同样重要。 显然,如果您是一家单一语言商店,并且希望人们精通该语言,那么该人应该能够在记事本中编写完整的 hello world 应用程序。 面试问题应该集中在小问题上,不要担心小的语法错误。 这就是为什么白板是面试问题的最佳 IDE。
除非您要求所有程序员都使用记事本并且不让他们访问互联网,否则不要担心语法。 如果您确实让他们坐在电脑前,请担心最终产品以及实现该目标所使用的技术。
I once was at a job interviewed with the CTO of a company. He asked a question based on a real life problem the company had a while back and solved. It was a multi step problem.
I was standing in front of a whiteboard working through my solution and struggling through a particular part, a part I would use google for before even attempting it, had I been tasked with solving this problem for real instead of for an interview. He asked me at that point, "would you do anything different if this wasn't an interview question." I responded, "Yes. I would exhaust all possibilities of using a third party component for this part of the task and look up the solution, because it is a well defined problem thats been solved several times." There was a bit more discussion where I justified my answer, explained exactly what I would research, and I solved some other parts of the question. In the end I was offered and accepted the job, partly because of knowing how to find out what I didn't know.
Being able to use references is as important as being able to code from memory. Obviously, if you are a one language shop, and want people proficient in that language,the person should be able to write a complete hello world app in notepad. Interview problems should focus on small problems, and one should not worry about small syntax errors. This is why a whiteboard is the best IDE for interview questions.
Unless you demand all your coders use notepad and don't give them internet access, don't be as concerned by the syntax. If you do sit them down in front of a computer, worry about the finished product as well as the technique used to get there.
我是一名 30 岁出头的 PHP 程序员。 我依赖 PHP 的优秀文档,原因如下:
($needle,$haystack)
作为参数,另一个字符串函数可能使用($haystack,$needle)
。 当您只需输入php.net/function_name
并获取参考时,试图保持它们的正确性并不值得这么麻烦。最重要的是,记住函数的能力并不代表编码能力。 显然,有一组关键的基本功能,优秀的程序员只需通过一段时间的广泛使用就能了解这些功能,但我不会根据某人是否了解
substr_replace
与str_replace凭记忆。
I'm a PHP programmer in my early 30's. I rely on PHP's excellent documentation, for several reasons:
($needle,$haystack)
as parameters, and another might use($haystack,$needle)
. Trying to keep them straight isn't worth the hassle when you can just typephp.net/function_name
and get the reference.The bottom line is that the ability to memorize functions isn't indicative of coding ability. Obviously there's a key set of basic functions that a good programmer will know just from extensive usage over time, but I wouldn't base a hiring decision on whether someone knows
substr_replace
vs.str_replace
from memory.因为我已经阅读过有关某个主题的文档、文章或书籍,所以我在某个主题上学到的东西是有组织的。 结果是,如果我无法从内存中调出某些内容,我可能可以通过 IntelliSense 或对象浏览器快速找到它。
最糟糕的是,我还能重新拿起书; 这些年轻人没有被教导要做的事情。
约翰·桑德斯
51岁
Because I've read either the documentation, or articles, or a book on a subject, the things I learn on a topic are organized. The result is that, if I can't bring something up from memory, I can probably find it quickly through IntelliSense or the Object Browser.
Worse come to worst, I can pick up the book again; something these youngsters are not being taught to do.
John Saunders
Age 51
几乎谷歌+旧项目+我的记忆(当然)
参考文献并不能解决你的问题,它只是为了具体细节,更高层次的问题解决是实际的“编程”部分恕我直言。
Pretty much Google + Old Projects + my memory (of course)
References will not solve your problems though, its only for the nuts and bolts, the higher level of problem solving is the actual "programming" part IMHO.
与以前相比,我更倾向于使用 Intellisense 和 Resharper,但这有助于我的整体工作效率。 如果我能够了解如何解决某些问题,然后使用工具来获取更无聊的部分(例如类名和函数签名),为什么我不应该使用我拥有的工具呢? 乔恩·斯基特(Jon Skeet)似乎也采取了类似的做法,这让我感到欣慰。
I tend to use Intellisense and Resharper much more than I used to before, but this has helped my overall productivity. If I can get the idea of how I want to solve something and then use tools to get the more boring parts like class names and function signatures, why shouldn't I use the tools I have? I feel relieved that Jon Skeet has a similar approach it seems.
我依靠我的书签和书籍......以及我有效使用它们的能力。我的桌子上有多本书,其中包括一本 ISO C90 标准的副本。 此外,我使用 Xmarks 来访问我的 书签 无论我走到哪里。 有时,我会根据特定页面制作
pdf
并将其上传到我的网站(如果它足够重要)。有时,我使用的资源提供的信息会进入我糟糕的记忆......也许。
I rely on my bookmarks and books... and my ability to use them effectively. I have multiple books above my desk, including a copy of the ISO C90 standard. Moreover, I use Xmarks to have access to my bookmarks wherever I go. Sometimes, I make a
pdf
out of a particular page and upload it to my web-site if it is important enough.Sometimes the information provided by the resources I use makes its way into my terrible memory... maybe.