优化软件开发: 开发人员视角






3.87/5 (21投票s)
2005年7月13日
8分钟阅读

41133
本文提供了提高软件开发质量和程序员生活质量的建议。
引言
软件行业在开发和实践方法论方面极具创造力。这些方法论构建了一个良好的框架,使人们能够有条不紊地工作并开发高质量的软件。但还有其他因素可以提升开发质量和程序员的生活。那就是开发者的积极性。您应该采取更好的实践来保持这一点。当人们乐于从事他们所做的事情时,他们就会富有创造力。当开发者以良好的心态进行开发时,开发工作的质量就会提高。在这里,我们可以考虑一些提高开发者创造力的方法。以下是我从软件开发经验中总结出的几点。
1. 设定小型可实现的目标,并在开发过程中只专注于该目标
远大目标只能通过一系列小步骤来实现。当开发者迈出一小步时,他不必承担远大目标的负担(这或许可以交给经理来承担)。当你只关注一个小目标时,你会高度集中精力去完成它。当人们以三个月后的大型交付为目标时,通常第一个月会比较轻松,第二个月会比较紧张,最后一个月则会超负荷工作。在紧张的时间表下,人们可能无法交付高质量的产品。
当你设定一天/半天/一小时的小目标时,就不会遇到这种情况。这些小目标应该是自己规划的。随着时间的推移,你应该在设定正确目标方面达到成熟。每次计划结束后,检查是否能够实现目标。如果不能,下次就设定一个更轻松的目标。如果提前实现了目标,下次就设定更具挑战性的目标。在计划之间留出足够的放松时间。一天结束时,分析自己的表现,并为出色的计划工作进行自我肯定。
2. 记录当天学到的知识并分享
这是可重用组件的时代。我们也需要创造可重用的知识。即使是学到的最微小的知识,也要记录下来。在空闲时间,整理这些笔记,制作成可重用的、可展示的文档。将可展示的文档与其他开发者分享。创建了一个很棒的可重用和可展示的知识资源后,要自我肯定(这是每三个月一次的“锦上添花”)。这应该是自我驱动的,而不是由经理驱动的。
3. 当你认为上一步是正确的时候,再进行下一步
让我举个例子来说明。以编译 C++ 文件 *xyz.cpp* 并构建应用程序 xyz 为例。我假设大多数人会这样做:
- 直接编写代码,同时考虑领域逻辑和编码逻辑。
- 编译代码。
- 通过查看代码进行更正。
- 无错误地构建。
- 进行测试。
- 修复 bug,直到达到成熟的水平。
与其这样,不如尝试这样做:
- 首先写下逻辑步骤,并从领域角度清晰地描绘。
- 进行编码,并确信没有逻辑或语法错误。
- 编译并看到最少的错误(因为你已经验证了你编写的代码)。
- 构建和测试,遇到最少的问题(因为你已经充分分析了你的领域需求)。
基本思想是,不要让自己陷入被错误驱动的工作状态。而是专注于预防错误。这就像谚语“预防胜于治疗”一样。在编写代码时,假设没有测试,并且在构建后将直接部署应用程序。
4. 理解领域并识别核心需求,并为之开发测试用例
每次更改后,都要关注核心需求。诚然,每次更改后不可能测试所有内容。但理解核心需求并关注它们更好。花大约 15 分钟创建一个测试用例。
5. 更快地理解代码
很多人试图完全理解代码,后来发现很难掌握。相反,你需要以一种更巧妙的方式来理解现有代码。在深入研究某个领域之前,先思考一下“系统可能是什么样的?”(你能想象的越多,就越美妙……)。我敢打赌,大多数时候你的想象都会在现实中成为事实。一开始,选择一个小场景(例如查看某个客户的订单)。从领域角度理解这个场景。想一想这可能会如何实现。现在,你更适合查看代码了。
第二个技巧是“以面向对象的方式查看代码”。可以是这样的。从领域中选择一个概念。查找相关的类。想象一下这个类可能执行的所有功能。现在查看代码,你可能会惊讶于你所想象的(当然,它会比你的想象多很多东西)。这些比通过海洋般的函数来挖掘代码要好。基本思想是,概念应该驱动你对代码的学习,而不是代码驱动你对概念的学习。
以这种方式理解小场景/类,并最终成为大师。
6. 从客户的角度思考
尝试站在客户的角度,发挥创造力和想象力。通过这样做,当客户提出一些棘手的需求时,你就能给他们更好的建议。培养从客户角度可视化事物的能力,这将帮助你更好地指导客户。如果你能为客户的问题提出更好的解决方案,你就会处于一个受人尊敬的地位。
7. 培养谈判技巧
如果你能很好地沟通问题/疑虑,对每个人都有好处。在所需时间方面,始终拥有分析性的数据来说服/与经理/客户谈判。你的统计沟通有助于他人更好地规划他们的业务。以双赢的方式完成交易(双赢的交易能让双方有信心进行下一次交易)。
8. 达到估算的成熟度
在估算时间时,始终为风险因素预留缓冲。分析估算中的失败之处。细分任务并进行估算。
9. 创造有利的环境
你对别人如何对待你负责。这是一项值得培养的伟大技能。你应该知道什么输入会对每个人产生什么样的输出。你绝对应该努力发展身边人的能力。当身边的人技能娴熟时,你就更富有了。鼓励你邻居所做的每一件好事。这就是我们应该在一个团队中培养良好文化的方式。赞赏所有好事。祝贺人们取得的成就,即使是很小的成就(小+小也能成为大)。
10. 花时间分析你的工作
通常,程序员在能够构建应用程序并通过测试后,就不会再看代码了。但第二次审视有时会非常有价值。经过 4 小时的工作后,理想情况是花 1 小时寻找替代的解决方法。遍历代码,尝试最小化代码量。未来最有用的代码将是行数最少、逻辑最直接的代码。
11. 不要创造不必要的组织层级
冗长的层级对于大组织来说是个问题。它会给终端开发者带来不必要的压力。例如,假设客户问你的 CEO:“你能两个月内开发出功能 X 吗?”通过层级链,开发者可能会看到这样的信息:“你应该在两周内完成功能 X。为了安全起见,我们应该在 7 天内完成。”这是因为层级链中的每个人都想留出一些缓冲天数来避免风险。
12. 提高你的倾听技巧
认真倾听,并尽可能敏锐地理解谈话内容。一个耐心的倾听者会吸引对方的尊重。如果你有疑问,以能得到最佳回复的方式提问。
13. 借鉴他人的观点
告诉别人你计划做什么以及你是如何做的。即使是比你级别低的人,也能指出你一些小错误,他们的随意评论可能就是对一些隐藏问题的提示。类似的情况也适用于编码前和编码中。这背后的想法是,如果你让别人知道你的观点或工作,它只会变得更完善。
14. 信守承诺
这是建立信任的方式。不要承诺你做不到的事情。信任是团队顺畅合作的关键。它能产生很多对承诺的可靠性。以后它会成为团队的习惯。表达你对别人的信任,这样会鼓励他们以更值得信赖的方式做事。
结论
希望这些能帮助你在软件开发中享受生活。
祝您编码愉快!