这是对Karl L. Hughes 在2018年发表的“软件工程大批作品 ” 的回应。
因此,我们在这里生活,这个世界上大多数“软件工程”基本上都在运转。 我们应该怎么做? 这对我们的职业意味着什么? 钱会永远流下去吗?
碰巧的是,我思考这些问题已经有一段时间了,我想我现在有了一些答案。
- 做软件工程的另一部分。
- 您将不得不变得更好或过时。
- 这取决于2。
让我描述一下我的一周,以显示“另一部分”的含义。 上周,我完成了3D打印相关桌面应用程序的纹理生成功能。
星期一是重构日。 我做了一些重组,删除了一个未使用的结构,摆脱了一些不必要的类型转换。 突然,性能测试失败。 迷人! 显然,当我将位图尺寸从unsigned int回size_t ,重新缩放算法会损失大约30%的性能。 星期一突然变成了拆卸日。
事实证明,从64位size_t到32位int有助于编译器最佳地利用寄存器空间。 当所有内容都适合寄存器时,重新缩放会超快地运行,但是如果不正确,则每次都必须在最狭窄的位置上载恒定的位图尺寸,这会破坏完美性。 如果没有性能覆盖和拆卸,我将永远不会想到。
周二上午,我与我们的应用工程师举行了会议。 我们讨论了生成器的插值函数。 我提出了三次多项式,因此,在我们的案例中,请看并演示它的行为,将words和buttons的页面之一制作成小的HTML + Javascript演示,然后将其发送给他。
一个小时后,他回答了。 三次方适用于我们想要的大多数情况,但是最好有选择。 这使我的星期三成为SymPy的一天。
我本来可以用任何NURBS库来制作样条曲线,而不是三次样条曲线,但是由于本意是要在狭窄的地方工作,而且NURBS还是过大,我决定手工制作特殊的非均匀非理性2 –3–2多项式样条。 这就是我需要SymPy的目的。 弄清约束后,要做的所有工作就是以符号方式解决几个Vandermonde系统,而这基本上就是您的代码。 这需要一些努力,但是它不会带来第三方依赖性,并且由于您没有绑定到任何预定的数据结构,因此编译器可以与优化器配合使用。
星期四是定稿日。 全面测试,最终代码审查,门控检入。 门控登机失败。 原来,我忘记了VS编译器和XCode的Clang之间的标准不匹配。 一个人的习惯是另一个人的语法错误。
星期五下午我在学院教书。 我把这个size_t告诉int事情。 显示了如何阅读反汇编。 解释了浮点错误,以及为什么要在算法中保持稳定性。
作为回报,一个学生向我展示了一件有趣的事情。 当初始化列表使用静态类成员时,静态类成员可能尚未初始化。 我希望它存储在.data ,从而在运行时对象构造时完全初始化。 显然,我错了。
好吧,如果没有学习的机会,我将永远不会做教学。
我们90%的用户会对初始性能感到满意。 90%的人会选择线性插值。 90%的人不关心macOS端口。 没有用户关心我们的学生。 那么,这一切值得付出努力吗?
是。
危险的误解是,企业以最低的成本实现目标。 商业与竞争有关,“足够好”不会赢得市场份额。 每个人都可以做到90%,您必须做得更好。 您必须比竞争对手更好,并且也必须比以前的自我更好。
投资者愿意投资。 如果您愿意再走一英里,利益相关者将与您同行。 当然,只要您清楚了解成本和收益。
企业不希望我们的工作变得无聊和痛苦。 恰恰相反。 业务一如既往地具有挑战性。 目前,对鲁棒性,性能和可伸缩性的需求都很高。 可能比十年前还高,那时您可以用摩尔定律来掩盖自己的屁股。
我完全同意卡尔的最后建议: 不要感到不适 。 软件管道工的就业市场确实确实过热了。 进入软件工程世界需要花费很多额外的努力。