软件开发思想-1-斩草除根

典故

古语有云:“斩草要除根”,这来自一个典故。往年,郑庄公请求与陈国讲和,陈桓公不答应。五父劝谏说:“亲近仁义而和邻国友好,这是国家可宝贵的措施,您还是答应郑国的请求吧!” 陈侯说:“宋国和卫国才是真正的祸患,郑国能做什么?” 于是就没有答应。君子说:“善不可丢失,恶不可滋长,这说的就是陈桓公吧!滋长了恶而不悔改,马上就得自取祸害。纵是挽救,何能办得到!《商书》说:‘恶的蔓延,如同遍地大火,不可以靠拢,难道还能扑灭?’周任有话说:‘治理国和家的人,见到恶,就要像农夫急于除杂草一样,锄掉它聚积起来肥田,挖掉它的老根,不要使它再生长,那么善的事物就能发展了。’”

所以,古代皇帝惩罚一个罪大恶极的人,会选择诛其九族,这样不会遗留祸害。

唐朝白居易名诗:离离原上草,一岁一枯荣。野火烧不尽,春风吹又生。说得就是这个道理。

 

软件开发

我们知道,一个系统,没有办法做到bug free。每个系统都有bug,或大或小,或明显或隐藏得很深。我们做bug修复的时候,关注点不是表象,因为一些时候,我们会陷入误区:只要呈现出来的问题不再被观测得到,那问题就是被修复。

或许大家听过Heisenbug这个词,以下是维基百科的摘录:

在程序设计术语中,海森堡bug(英语:heisenbug)是指在尝试研究它时似乎会消失或者改变行为的bug(程序错误)。该词汇是物理学家维尔纳·海森堡名字的双关语,他最先断言了量子力学的观察者效应——观察系统的行为不可避免地将改变其状态。电子学中的传统用语则是探针效应,指连接一个测试探针到设备将改变其行为。

类似的词语有玻尔bug(bohrbug)、曼德博bug(mandelbug)和薛定谔bug(schrödinbug),它们偶尔被用于指代其他类型的非寻常软件缺陷,但通常以开玩笑的心态使用。

很多时候,我们对bug进行排查、重现,这个bug就是不出现,或者更糟糕的是:随机出现。

所以,我们不应该只修复症状,而应该找到根源问题,并且修复之。

 

爆栈服务

是否想技术水平快速提升?是否希望快速成为公司的技术骨干?

核心价值
  • 把我这10多年来所学到的知识、总结的经验、吸取的教训分享出来
  • 针对不同的学生量身定制规划学习成长路线、1对1个人指导、代码审阅等
  • 解答各种技术问题
  • 为公司提供技术解决方案

请查看本站右边的信息联系我。

每周新技术/文章/心得 – 2

爆栈网会员服务包括每周新技术/文章/心得的分享。

本周,我们可以学一下:

是否想技术水平快速提升?是否希望快速成为公司的技术骨干?

核心价值
  • 把我这10多年来所学到的知识、总结的经验、吸取的教训分享出来
  • 针对不同的学生量身定制规划学习成长路线、1对1个人指导、代码审阅等
  • 解答各种技术问题
  • 为公司提供技术解决方案

请查看本站右边的信息联系我。

爆栈之旅-.NET-面向对象与调试

目录

这是爆栈之旅的1对1私人定制授课的第八讲,实战分析,视频+讲义+问答+测试+代码审查等等。

 

 

是否想技术水平快速提升?是否希望快速成为公司的技术骨干?

核心价值
  • 把我这10多年来所学到的知识、总结的经验、吸取的教训分享出来
  • 针对不同的学生量身定制规划学习成长路线、1对1个人指导、代码审阅等
  • 解答各种技术问题
  • 为公司提供技术解决方案

请查看本站右边的信息联系我。

版权所有

所有文章内容版权所有,任何形式的转发/使用都必须先征得本站书面同意。本站保留一切追究的权利。

爆栈之旅-.NET-进阶-如何读懂别人的代码

目录

这是爆栈之旅的1对1私人定制授课的第七讲,拿斗地主游戏源代码来做实战分析,视频+讲义+问答+测试+代码审查等等。

 

 

 

 

是否想技术水平快速提升?是否希望快速成为公司的技术骨干?

核心价值
  • 把我这10多年来所学到的知识、总结的经验、吸取的教训分享出来
  • 针对不同的学生量身定制规划学习成长路线、1对1个人指导、代码审阅等
  • 解答各种技术问题
  • 为公司提供技术解决方案

请查看本站右边的信息联系我。

版权所有

所有文章内容版权所有,任何形式的转发/使用都必须先征得本站书面同意。本站保留一切追究的权利。

开发人员的路

高考又到了。

我当年参考那说20年前的事情了。

路是自己走出来的,尽管曲折,天道酬勤,当年丢失的,迟早要回来。

我这么多年来,曲线救国,读的不是最理想的专业(尽管是重点),毕业后比别人努力,早早结婚买房子生孩子,厌倦中国,放弃一切,来到澳洲重新开始,这些年来更加努力,回报是有的。

爆栈之旅-第六讲-.NET-基础

目录

这是爆栈之旅的1对1私人定制授课的第六讲,手把手实战开发,视频+讲义+问答+测试+代码审查等等。

 

 

是否想技术水平快速提升?是否希望快速成为公司的技术骨干?

核心价值
  • 把我这10多年来所学到的知识、总结的经验、吸取的教训分享出来
  • 针对不同的学生量身定制规划学习成长路线、1对1个人指导、代码审阅等
  • 解答各种技术问题
  • 为公司提供技术解决方案

请查看本站右边的信息联系我。

版权所有

所有文章内容版权所有,任何形式的转发/使用都必须先征得本站书面同意。本站保留一切追究的权利。

每周新技术/文章/心得 – 1

爆栈网会员服务包括每周新技术/文章/心得的分享。

本周,我们可以学一下:

 

是否想技术水平快速提升?是否希望快速成为公司的技术骨干?

核心价值
  • 把我这10多年来所学到的知识、总结的经验、吸取的教训分享出来
  • 针对不同的学生量身定制规划学习成长路线、1对1个人指导、代码审阅等
  • 解答各种技术问题
  • 为公司提供技术解决方案

请查看本站右边的信息联系我。

爆栈之旅-第五讲-软件开发-编码

目录

这是爆栈之旅的1对1私人定制授课的第五讲。

 

 

 

 

是否想技术水平快速提升?是否希望快速成为公司的技术骨干?

核心价值
  • 把我这10多年来所学到的知识、总结的经验、吸取的教训分享出来
  • 针对不同的学生量身定制规划学习成长路线、1对1个人指导、代码审阅等
  • 解答各种技术问题
  • 为公司提供技术解决方案

请查看本站右边的信息联系我。

版权所有

所有文章内容版权所有,任何形式的转发/使用都必须先征得本站书面同意。本站保留一切追究的权利。

软件设计系列-2-软件开发是什么?

本文是爆栈之旅的1vs1私人定制课程的第二讲:《软件开发基础》的摘录,如果你对这个一对一私人定制课程有兴趣,可以看右边信息联系我。

100%有Bug

任何软件都有bug,毫无例外。

在说软件开发是什么之前,或许我们应该说说软件开发不是什么。软件开发做不到没有bug,任何软件都有bug,任何软件都有崩溃的时候。

软件开发不是什么?

所以,软件开发:

  • 不是完美主义!这世界没有完美!
  • 不是堆砌积木!堆砌功能是没有用的!
  • 不是任何人都能做的!没有激情是做不好的!
  • 不是复制粘贴!Google答案是搬运工!
  • 不是修电脑的!

软件开发究竟是什么?

  • 这是一个把用户需要转化为生产力的过程
    • 需求不明确的情况下不要写代码
  • 这是一个通过团队协作交付产品的过程
    • 产品专家、架构师、设计师、开发人员、测试等多方合力
  • 这是一个为客户解决实际问题的过程
    • 质量,质量,质量,重要的事情要说三遍
  • 这是一个体现参与者创造力的过程
    • 每个功能经过雕琢有机地结合起来

99%失控

99%的软件开发都经历过需求失控、开发时间超过预期、交付的产品不满足用户需要而做修改等问题。

大部分的客户需求或者要求交付的时间都是不合理。我们需要引导客户的期望,譬如不是最迫切的功能从第一版推迟到第二版。

因为需求的不清晰,导致分析偏差甚至错误。怎么解决这个问题?多跟客户面对面,手把手地分析和做mockup/wireframe和POC。

爆栈之旅

是否想技术水平快速提升?是否希望快速成为公司的技术骨干?

核心价值
  • 把我这10多年来所学到的知识、总结的经验、吸取的教训分享出来
  • 针对不同的学生量身定制规划学习成长路线、1对1个人指导、代码审阅等
  • 解答各种技术问题
  • 为公司提供技术解决方案

请查看本站右边的信息联系我。

版权所有

所有文章内容版权所有,任何形式的转发/使用都必须先征得本站书面同意。本站保留一切追究的权利。

软件设计系列-1-设计思想

DRY,就是don’t repeat yourself不要重复。相反的做法是WET:write everything twice,类似re-invent the wheel,重复发明轮子。

类似的思想如KISS(keep it simple、保持简单)、YANGNI(you aren’t gonna need it,你并不需要那些东西)。

大道至简,我们不应该over-engineering过度设计,但是适当的前瞻性设计是需要的。譬如扩展性等,否则产品一上线就遇到各种限制。

 

Related image

 

名言

“Always code as if the guy who ends up maintaining your code will be a violent psychopath who knows where you live.” 在编程的时候,我们一定要想象一下,以后维护我们自己的代码的那个人会成为一个暴力的精神病人,并且,他还知道我们住在哪里。
— John Woods
Think twice, code once。磨刀不误砍柴工,多思考,再写代码。
Good crafsmanship depends on use of the right tools.工欲善其事,必先利其器

技术债务

英文是Technical Debt。出来混的,迟早要还。欠下的债,也是要还的。做技术也一样,而且这个债一样会有利息,而且是高利贷那种,你的成本爆涨。最糟糕的是,债台高筑,你根本无法还:系统设计一团糟,性能低下,逻辑混乱,代码质量无法维护。

 

爆栈之旅

是否想技术水平快速提升?是否希望快速成为公司的技术骨干?

核心价值
  • 把我这10多年来所学到的知识、总结的经验、吸取的教训分享出来
  • 针对不同的学生量身定制规划学习成长路线、1对1个人指导、代码审阅等
  • 解答各种技术问题
  • 为公司提供技术解决方案

请查看本站右边的信息联系我。

版权所有

所有文章内容版权所有,任何形式的转发/使用都必须先征得本站书面同意。本站保留一切追究的权利。