我正在对初级(也许是高级)软件工程师所犯的常见错误和错误假设进行一些研究。
你坚持时间最长、最终被纠正的假设是什么?
例如,我误解了整数的大小不是标准的,而是取决于语言和目标。说起来有点尴尬,但事实就是这样。
坦率地说;你有什么坚定的信念?你大概坚持了多长时间?它可以是关于一种算法、一种语言、一个编程概念、测试,或者任何关于编程、编程语言或计算机科学的东西。
我正在对初级(也许是高级)软件工程师所犯的常见错误和错误假设进行一些研究。
你坚持时间最长、最终被纠正的假设是什么?
例如,我误解了整数的大小不是标准的,而是取决于语言和目标。说起来有点尴尬,但事实就是这样。
坦率地说;你有什么坚定的信念?你大概坚持了多长时间?它可以是关于一种算法、一种语言、一个编程概念、测试,或者任何关于编程、编程语言或计算机科学的东西。
当前回答
我认为要提高数据库性能,我所需要做的就是将数据库转换为第三范式。
其他回答
我的错误假设:虽然总是有一些改进的空间,但就我而言,我已经是一个尽可能好的程序员了。
当我刚从大学毕业的时候,我已经用C语言编程6年了,知道所有关于“结构化编程”的知识,认为“OO”只是一种时尚,并认为“天哪,我很好!!”
十年后,我在想“好吧,那时候我远没有我想象的那么好……现在我有了多态性的想法,以及如何编写干净的OO程序…现在我真的很好。”
所以,不知何故,我总是很好,但也总是比以前好得多。
在那之后不久,我终于有了“一些”谦卑。总是有更多的东西要学(还没有用像Haskell这样的纯函数式语言写一个合适的程序)。
代码行数越多,软件就越好。
他说他懂编程,这肯定是真的!
与UNIX相比,NT操作系统的设计有缺陷。事实证明,NT内核和设计决策与任何现代的UNIX类系统非常相似,内核中的大多数问题都是由有漏洞的公司编写的第三方漏洞驱动程序造成的。
代码审查是浪费时间。
从一家完全可选的公司搬到一家强制性的公司(甚至是被审计的),我逐渐明白了它们的用处。对代码有另一双眼睛,即使是最琐碎的部分,也可以:
A)当你搞砸了一些琐碎的事情时,避免你的尴尬(例如,在我之前的工作中,一个琐碎的代码审查可以防止我们向客户发送数百封垃圾邮件)
B)可以教给你你一开始不知道的东西(我在我目前的工作中学习了新的库——不可避免的是在一家大公司,有人已经偶然发现了你的问题,并做了更好的解决工作——这只是知道在哪里寻找的问题)
C)至少要确保除了你自己之外还有其他人知道事情是如何运作的。
最后,我对我在这里提交的代码比我以前的工作更满意,尽管那时我认为我什么都知道:)