为什么聪明的程序员会写出糟糕的代码
最近阅读一本书《软件困局:为什么聪明的程序员会写出糟糕的代码》,作者对自身30多年的软件开发经历进行回顾,阐述了大学教育与企业产品研发之间的巨大鸿沟,对程序员为什么会写出糟糕的代码,软件质量如此之差,软件开发为什么这么难...., 这些问题都进行了深入的剖析。
我自己从事一线软件开发,也已经20多年了。作者的很多经历,我自己也亲身经历过。因此,我准备将很多精彩的观点分享给大家。本文是第一篇。
在学校里,我们学习到一些编程相关的知识,并完成了一些上机作业。感觉到自己学会了很多东西。
但一旦到企业里,进行项目开发或产品开发实战,很多程序员就立刻表现出无法上手的状态,甚至很长时间都无法成为项目组的核心开发主力人员。他们发现,学校里学到的东西,对企业里面项目开发/产品开发基本没有太大的用处。
学校里教的是一个一个知识点,用简单的代码片段来展示这些知识点。但企业里所需要的:如何设计和编写大型软件,学校里都是没讲的。
并且学校里的作业,基本都是一个人独立完成的。但企业里面的软件开发,都是需要团队协作来完成的。团队中如何进行软件开发,需要哪些方法和技能,学校里也是没讲的。
这些缺失,是学校教学和企业软件开发实战之间的巨大鸿沟所在。
因此,程序员是在完全没有经历过职业培训的状态下,就开始了自己的职业生涯。在企业软件开发实战中摸爬滚打,跌跌撞撞,逐渐形成了自己对如何编写软件的理解。
但这种理解,完全是个体的理解。理解得是否正确、是否全面、是否深入、还有哪些没理解到的,这些问题自己都无法回答。
因此,有个词语非常扎心:野生程序员。
的确,从程序员的成长过程来看,程序员都是野生的。
大学里面教的东西,到企业里面基本都没用。而企业需要的是你的产出。企业很少会培训你,根本不会教你如何学会设计和开发程序。程序员在这种生存竞争下,只能凭一己之力,东拼西凑,乱搞一通,然后被领导一通臭骂,再不停修修补补。在不断碰壁、不断试错过程中野蛮生长。
因此,软件这个行业,与其他行业相比,是个极其怪异甚至荒谬的存在。
比如医学,一个学生毕业后,我们就相信他具备了作为一个医生的能力。他拿到行医执照后自己就可以开一个诊所了。会计、律师、厨师、面点师...., 都是这样的。
但软件行业,就完全不同。你从软件专业毕业后,没有人相信你已经具备了软件开发的技能(你自己也不信啊)。你考了一个程序员证书,对企业来讲就是废纸一张,啥用也没有。面试的时候,面试官问的问题,你都不会啊。
你毕业了,也考证了,但你还啥也干不了,啥也不是啊?这是咋回事?
甚至你工作了很多年了,你是你团队的主力开发人员吗?你觉得自己的水平在业界是哪个段位的?如果工作了很多年,还没有成为大牛,到底原因出在哪?
另外,当我们完成一个软件版本开发后,当客户问:这个软件的质量水平是怎样的?这个问题,让所有的软件从业人员都无法回答。
但我们看看其它行业,比如修建一座大桥,完工之后,项目负责人能够清晰说出,这个桥梁的承重是多少,能抵抗多大的风力,能经受多大规模的震动,设计寿命是多少年。但我们对软件,却无法给出其质量的指标数据,这让所有软件开发人员都尴尬不已。
我的微信号是 实力程序员,欢迎大家关注我。
- 点赞
- 收藏
- 关注作者
评论(0)