当前位置: 首页 > 科技观察

资深经验-10+年程序员的20+经验教训

时间:2023-03-19 09:57:10 科技观察

以下是我作为程序员10多年总结出来的关于软件开发的一些经验法则:1.开发1.小事起步和扩展是否创建一个新系统或向现有系统添加功能时,我总是从一个非常简单的版本开始,几乎不需要任何功能,然后解决问题,直到满意为止。没想到自己能一步登天。相反,我边做边开发和学习,新信息可以用在解决方案中。我很喜欢JohnGall的这句话:“复杂系统总是源于简单系统的演化”。2.一次只改变一件事。我们在开发的时候,会遇到测试失败,功能失效的情况。如果你只研究一个问题,就会更容易找到问题的症结所在。换句话说,使用短迭代。在继续解决另一个问题之前,您必须确保解决此问题。这适用于提交。如果您需要在添加新功能之前重构代码,请先提交重构,然后再添加新功能。3、尽早添加日志记录和错误处理在开发新系统时,我做的第一件事就是添加日志记录和错误处理,因为这两个从一开始就非常有用。如果系统没有像往常一样工作,那么您需要知道程序中发生了什么——这就是日志的作用。错误处理也是如此——越早处理错误和异常越好。4.每一行新代码必须至少执行一次。在你真正完成一个功能之前,你必须测试它。否则,你怎么知道它是否在做你认为它在做的事情?通常,最好的方法是通过自动化测试,但并非总是如此。但是,无论如何,每一行新代码都必须至少执行一次。5.整体测试前先做模块测试。先做部分模块测试可以节省时间。一般来说,我们在集成不同的模块时也会遇到问题,比如模块之间的接口不匹配。但是,如果我们可以信任各个组件,那么追踪集成问题就会变得容易得多。6.做任何事总是比你预期的要花更长的时间特别是在编程中,即使一切顺利,我们也很难对一个功能所需的时间做出正确的预算。而且,在开发软件的时候,遇到各种意想不到的问题是很常见的。霍夫施塔特定律其实道出了一个道理:做事情的时间总是比你预想的要长,即使你在预期中已经考虑到了霍夫施塔特定律。7.首先了解现有代码大多数编码需要以某种方式更改现有代码。即使是新功能也需要适应现有程序。因此,在添加新内容之前,您首先需要了解当前的解决方案。否则,如果不小心,很可能会破坏现有功能。这意味着阅读代码和编写代码都是必备技能。这就是为什么看似很小的变化仍然需要很长时间才能解决的原因之一——你必须先了解上下文。8.阅读并运行幸运的是,我们有两种互补的方法来理解代码。您可以阅读代码,也可以运行代码。这是运行代码的一种非常酷的方式。因此,请务必利用这两种方法。2.Troubleshooting9.Bug总是不可避免的。我不喜欢那些声称软件开发可以“一夜之间”的人。无论您多么努力,错误都是不可避免的。***能够制作可以快速排除故障、修复错误和部署修复程序的系统。10.解决错误报告每个开发人员都应该花时间处理来自客户的错误报告并修复错误。这将使您更好地了解客户的意图、系统的使用方式、排除故障的难易程度以及系统的设计方式。这也是对您自己的开发工作负责的好方法。11.重现问题修复错误的第一步是重现问题。然后你必须确保在修复之后,问题完全消失了。如此简单的规则可确保您不会将非问题误认为是问题,并且解决方案确实有效。12.修复已知的bug,然后看看有没有遗漏的地方有时候,可能会同时出现几个不同的问题。他们之间的互动可能会让你一头雾水,一筹莫展。不要担心弄清楚发生了什么,先解决所有已知问题,然后再看看还有什么问题。13.没有巧合在测试和故障排除时,不要相信巧合。就像你改变定时器的值一样,它会改变系统重启的频率。所以一切都不是巧合。添加一个新功能,另一个不相关的功能变慢了?这绝对不是巧合。相反,这是您应该仔细调查的事情。14.关联时间戳在排查问题时,事件的时间戳可以成为你的好帮手。寻找均匀的增量。比如重启系统,刚发送了一个3000毫秒左右的请求,那么可能会触发一个定时器,导致重启动作。3.团队合作15.面对面交流最有效当我们需要讨论如何解决问题时,面对面交流比视频、电话和电子邮件更好。16.橡皮鸭法当你遇到一个你绞尽脑汁也解决不了的问题时,不妨找个同事,把问题解释给他们听。很多时候,当你在叙述的时候,即使你的同事一句话都不说,你也可能会突然找到问题的关键。17.提出问题阅读和运行代码通常非常有助于指出代码的用途及其工作原理。但是如果你有机会请教那些比较懂的人(比如原来的程序员),那就不要错过了。18.分享荣誉不要贪图荣誉,属于谁。例如:“Marcus想出了这个点子……”(如果他真的想的话)而不是“我们想出了……”。四。其他19.尝试如果你不知道某个编程语言的功能是如何工作的,不妨写一个小程序来了解它是如何工作的。这同样适用于测试您正在开发的系统。如果我将参数设置为-1会怎样?如果在我重新启动系统时服务崩溃,会发生什么情况?这就是它的工作原理。20.带着问题入睡如果你正在解决一个难题,带着问题入睡。科学研究表明,虽然你没有积极地以这种方式思考,但你的潜意识正在这样做。结果第二天你再去研究这个问题,解法已经有了。21.跳槽不要害怕跳槽。和不同的人一起工作,开发不同的产品,体验不同的公司文化,是一件非常有趣的事情。22.持续学习我们需要不断学习和理解软件开发。你可以尝试不同的编程语言和工具,阅读软件开发方面的书籍,参加MOOC课程。相信我,只有量变才能实现质的飞跃。这些小小的学习积累,总有一天会大大提升你的知识和能力。希望这些经验对大家有用。如有不妥之处敬请指正。

猜你喜欢