网络安全检测|网络安全服务|网络安全扫描-香港墨客投资移动版

主页 > 业界资讯 > ddos防御

程序员必备的30条防御式编程思想原则

  在分析若干线上问题之后,会发现很多问题并不是非常罕见的难题,而是由一个个较为明显的小错误积累而来,为什么会犯小错误?或许是因为侥幸心理,或许是因为只看到了局部的利益。从某一个例子来看,确实会有“偶因一着错,便为人上人”的侥幸,但是统计大量案例可以发现,大部分情况并不会有正面的结果。

  本文汇编我在需求评审、编码、项目上线几个阶段总结的原则,这些原则虽然不能直接解决问题,但是可以尽可能地优化每一步行为,从防御式编程思维方式、行为习惯层面尽量避免错误的发生。

  交流沟通时的原则

  不同场景,使用不同的沟通工具

  通过IM(即时通讯工具)打字是常见的沟通方式,成本低,适合简单问题的沟通以及团队内各种信息的通知。但如果一个复杂的问题,打字3分钟还说不清楚、无任何进展,应该立刻换一种更高效的沟通方式,比如语音或面谈。

  语音沟通相比文字沟通,有了语气,可以避免纯文字语气生硬的问题,而且在单位时间内有更多的信息输出量,效率更高。有时会看到两个人在群里一人一句,讨论了5分钟,结果发现说的不是一件事情。如果及时换用语音,可能1分钟就发现问题所在了。

  见面沟通相比语音,增加了表情,能更好地表达强烈的诉求。特别是遇到非常紧急的问题时,直接见面不失为最好的方法。有时候都出线上问题了,还在等别人通过IM回复,可能会影响更优的止损时间。

  避免确认偏误,反对的观点可能会带来更多启示

  确认偏误,指的是只听“好”消息——即能印证自己观念的消息,而对“坏”消息赶尽杀绝——拒绝接受与自己观念不同的消息、想法。这种现象会导致自己无法接受一个长远有益的反对意见。

  这种情况在大数据时代看信息流的时候会更明显,经过精准的算法,在有一个观点、喜欢某类观点的时候。精准的推荐算法,只为持续推荐给自己认同观点的信息。不会有反面的信息来纠正错误的观点。这样强化错误的观点,会让自己处于信息茧房之中无法自拨。

  这是因为大脑的结构非常复杂,由理性的我和感性的我组成,对于别人的反对意见,感性的我会默认把别人的反对意见当成攻击。

  所以我们就要训练感性的我,对于别人的观点,要仔细思考,再做行动。反对的观点,可能道出了自己想法中潜在的风险,甚至是一个更好方案的启蒙。通过训练主动辩证思考的能力,区分“听起来舒服的观点”与”对自己长远有利的观点“。

  举例论证,只能作为决策的参考意见

  无论是自己思考问题,还是讨论问题的时候,经常会出现以下两种观点。

  上一个项目,我使用了技术方案A,效果非常好,所以这个项目也使用技术方案A吧。

  我有一个同学,遇到这样的问题,他就是这样解决的,所以我们也可以这样做。

  把一次偶然的成功,当成必然的结论的现象。既可能出现在讨论中,也可能出现在自己的经验中。这些经验可以当成决策的一个参考案例,但不能直接当成必然的结论。科学的方法应该根据不同的场景,不同背景,做大规模的统计,这样才能根据不同场景做更好的决策。

  创意择优,自己调整权重再做决策

  无论是技术方案的讨论,还是一个有争论问题的交流,大家都会从自己的角度有不同的观点。每个人都有自己更关注的点,所处位置不同,关注点则不同。如果需要自己做决策,那么在讨论的过程中,要理解每一个想法背后的原因,这样才能明白其底层逻辑,从自己的角度判断其权重。综合考虑不同角度的想法,这样才能站在自己的角度,更全面地考虑、决策问题。

  李开复在选择毕业论文课题时,就涉及风险与稳定两类课题的决择。

  如果选择深度学习,可能会延期毕业,风险高,但是如果成功了则一举成名。

  如果选择普通的课题,能按时毕业,无风险,但是不会取得非常大的成就。

  对于不同人,承受的风险是不同的,那么他们的选择也会不同,当然了,其长远收益也不同。

  打字沟通时,重要的内容单独发一条消息

  对于大段的文字内容,对方不一定会仔细看每一句。重要的问题,单独发一句,不和其他内容合并在一起。

  实例1:在排查一个问题时,一句话问了2个问题,对方回答“是”。我根据对方的结论,继续排查问题。排查了一天,我感觉问题B的情况不应该是B1,再次找对方确认,结果对方说他只看到我说的前一句,并没有看到后一句"问题B的情况是B1吧?"。

  实例2:有一次项目上线之后,我给合作方发了一句话以表示感谢,对方回了我一句:“需要我配合排查什么问题?”

  会议纪要,在跨团队合作时更能凸显价值

(责任编辑:admin)