我正在对初级(也许是高级)软件工程师所犯的常见错误和错误假设进行一些研究。
你坚持时间最长、最终被纠正的假设是什么?
例如,我误解了整数的大小不是标准的,而是取决于语言和目标。说起来有点尴尬,但事实就是这样。
坦率地说;你有什么坚定的信念?你大概坚持了多长时间?它可以是关于一种算法、一种语言、一个编程概念、测试,或者任何关于编程、编程语言或计算机科学的东西。
我正在对初级(也许是高级)软件工程师所犯的常见错误和错误假设进行一些研究。
你坚持时间最长、最终被纠正的假设是什么?
例如,我误解了整数的大小不是标准的,而是取决于语言和目标。说起来有点尴尬,但事实就是这样。
坦率地说;你有什么坚定的信念?你大概坚持了多长时间?它可以是关于一种算法、一种语言、一个编程概念、测试,或者任何关于编程、编程语言或计算机科学的东西。
当前回答
上大学的时候(90年代中期),他们的计算机实验室只有Windows 3.11的机器(我知道,很奇怪的大学)。
有一段时间,我认为作为一个专业程序员,只有Windows平台与我相关,而所有其他平台都只是从历史的学术角度来看有趣。
从学校毕业并学习了现代unix和linux环境后,我不禁对我蹩脚的学校感到愤怒和失望。
我现在还不敢相信,我在计算机工程学位毕业时从未见过bash shell,甚至没有听说过emacs或vim。
其他回答
在不浪费字节和CPU周期的情况下编写高效的程序是非常重要的。
但随着经验的积累,它与字节或CPU周期无关,它与你的思想流有关,连续的,不间断的,就像一首诗。
本质上,不要太努力。
因为性能问题,像Java和。net这样的虚拟机架构对于除了玩具项目之外的任何东西都毫无价值。
(好吧,公平地说,也许在某些时候这是真的。)
ASCII以不同于二进制的方式存储
用汇编语言进行优化=重写。
When I first really understood assembly (coming from BASIC) it seemed that the only way to make code run faster was to rewrite it in assembly. Took quite a few years to realize that compilers can be very good at optimization and especially with CPUs with branch prediction etc they can probably do a better job than a human can do in a reasonable amount of time. Also that spending time on optimizing the algorithm is likely to give you a better win than spending time converting from a high to a low level language. Also that premature optimization is the root of all evil...
人们知道他们想要什么。
在很长一段时间里,我以为我会和人们交谈,他们会描述一个问题或工作流程,我将其放入代码并自动化。结果每次发生这种情况,他们以为自己想要的并不是他们真正想要的。
Edit: I agree with most of the comments. This is not a technical answer and may not be what the questioner was looking for. It doesn't apply only to programming. I'm sure it's not my longest-held assumption either, but it was the most striking thing I've learned in the 10 short years I've been doing this. I'm sure it was pure naivete on my part but the way my brain is/was wired and the teaching and experiences I had prior to entering the business world led me to believe that I would be doing what I answered; that I would be able to use code and computers to fix people's problems.
我想这个答案类似于Robin关于非程序员理解/关心我所谈论的内容的回答。这是关于将业务作为一个敏捷的、迭代的、交互的过程来学习。它是关于学习编程猴子和软件开发人员之间的区别。这是关于意识到两者之间的区别,并且在该领域真正优秀,不仅仅是语法和输入速度。
编辑:这个答案现在是社区-wiki,以安抚人们对这个答案感到不安,给我代表。