前段时间在知乎上看见有人说:编程语言就好比文字,编程的过程就是用文笔书写诗篇,对于语言的应用已经十分透彻了,那么编程的难点在哪里?我认为编程的难可分为外界因素导致的编码反复修改的难和编码本身不健壮等导致程序不稳定的难。
首先外界因素导致的编码反复修改也就是我们常说的需求反复修改,不能确定最终版本导致的。想起我们老板在朋友圈发的一句话值得看看:
“我们常说,用户需要的不是一个打孔机,而是在墙上有个洞。但是,用户需要的,真的是墙上有个洞吗?他需要的,可能不是在墙上有个洞,而是把家人的照片挂在墙上。用户需要的真的是把家人的照片挂在墙上吗?他真正需要的可能是美好的生活。那么,到底哪个才是用户的需求?打孔机?墙上的洞?家人的照片?美好的生活?到底什么是用户真正的需求?如何挖掘需求?”
所以需求是什么,我们要减少我们编码的困难就要努力的去找寻客户到底需要的是什么,客户自己的需求有时候客户都说不清楚,我们就要靠思维、靠经验更加的去贴近客户想要的,才能避免程序较多的改动。之前我做过一个客户的程序,大部分决策在于客户的老板,而执行层大多是员工,于是变开始修改,修改后审计又觉得某个地方不妥,导致程序反复修改,最后修改的差不多了,去底下的员工那里一问,一片怨声叹气的各种不好用,明明一个很简单的逻辑,修改了十几个版本是常有的事。这种外界因素导致的反复修改编码笔者认为是最难的了。
代码本身不健壮,这个又要分好多情况,比如时间有限,程序员写程序思维不断的在转,本来周期要1个月才能完成的项目老板为节约资源压缩成个月,程序员再牛也难保证程序写的是比较完美的,可能写完都没优化时间,赶工出来的程序一般都不太理想。如果非要说大神半个月搞定还是最优的程序,那么只能说这个项目的周期是半个月,不存在赶工一说了。
还有就是程序员本身能力不足,你让一群刚毕业的学生一起研发淘宝那样的程序,不是不可能,但是绝对不能支持数亿人同时在线使用,并发数量级上来程序就挂了,所以相应的程序应该有对应能力的开发人员来完成。对于一个程序来说同时保证程序的复杂度、一致性、可变性和不可见性,又要是高级语言、分时系统、统一开发环境,那么程序员水平的高低一下就看得见了。同时都满足了,开发出的程序可维护性又高、又健壮,那么这个程序是优秀的,但是开发出这样优秀的程序难,很难,非常难,绝对不是写个“hello world”那么简单。
链接:https://mp.weixin.qq.com/s/pP6wPCg25aH5VTl2EGcKNg