我正在对初级(也许是高级)软件工程师所犯的常见错误和错误假设进行一些研究。
你坚持时间最长、最终被纠正的假设是什么?
例如,我误解了整数的大小不是标准的,而是取决于语言和目标。说起来有点尴尬,但事实就是这样。
坦率地说;你有什么坚定的信念?你大概坚持了多长时间?它可以是关于一种算法、一种语言、一个编程概念、测试,或者任何关于编程、编程语言或计算机科学的东西。
我正在对初级(也许是高级)软件工程师所犯的常见错误和错误假设进行一些研究。
你坚持时间最长、最终被纠正的假设是什么?
例如,我误解了整数的大小不是标准的,而是取决于语言和目标。说起来有点尴尬,但事实就是这样。
坦率地说;你有什么坚定的信念?你大概坚持了多长时间?它可以是关于一种算法、一种语言、一个编程概念、测试,或者任何关于编程、编程语言或计算机科学的东西。
当前回答
在很长一段时间里(大约5年),我认为PHP很棒。
我以为我懂算法。然后我加入了Topcoder.com
其他回答
考试只是拖延的另一种方法。
通过实现客户想要的东西来满足客户——不幸的是,这意味着客户知道他想要什么。
我可以说服传统的过程程序员,为什么OOP经常提供更好的解决方案。
也就是说,一种描述世界的语言需要有描述复杂对象及其关系的能力。
争论通常包括关于抽象类的废话,我的回答是“不是所有的OOP程序员都刚从Uni毕业,还沉迷于抽象”。或者是经典的,“在面向对象编程中,没有什么是我用严格的过程式编程做不到的”,对此我通常会回答,“不是你能做到,而是如果你有一个更广泛的工具集,你是否会做到”。
我已经学会接受他们和我看世界的角度不同这一事实。
在很长一段时间里,我认为其他人对所有编程概念(设计模式、最新的新语言、计算复杂性、lambda表达式,只要你能想到的)都了如指掌。
阅读博客、Stack Overflow和编程书籍似乎总是让我觉得自己在所有程序员必须凭直觉知道的事情上落后于潮流。
随着时间的推移,我意识到我实际上是在将我的知识与许多人的集体知识进行比较,而不是单个人,这对任何人来说都是一个相当高的标准。现实世界中的大多数程序员都有完成工作所需的知识缓存,并且有不少领域是他们薄弱或完全不了解的。
当我第一次听说“鸭子打字”时,我以为它实际上是“管道打字”,类似于人们经常说的鸭子胶带。“Duck typing”听起来是错误的,而“pipe typing”则有一种奇怪的意义(拼凑的类型)。