当程序员一年以后 (程序员的10年心酸历程)

当程序员已十几年,谈谈我的感受…

程序员陷入了沉思

程序员的工作过程就是不断试错的过程,错上千次仅对一次,程序员的工作就离不了折腾。因此,我们需要的是格外强大的内心,同时还要有耐心。但为了保护心脏,在试错的过程中还是要尽量使问题的范围缩小,去除干扰,方能试对。具体来说就是从写的每一行代码开始验证,由小功能到大功能,积小胜于大胜,最终完成整个项目。而如果小功能都未经验证就开始组合大功能,那将是混乱的开始。在项目进行中,同事之间的沟通也一样,要有的放矢,要聚焦,讨论范围尽量小,问题讨论深刻。

和测试的交流算是最多的了,他们的工作内容和我们不一样,测试组的工作在于找出各种条件组合,列出所有正确的预期并制造测试数据、操作过程加以验证,力求覆盖所有可能性。所以不管有多么严谨的程序员,测试都能测出Bug,这又说明小功能的正确性只是完整功能正确性的开始,完整功能包含了各种小功能排列组合后所有的的逻辑异常问题。如果一个程序员在写代码时有很多小段代码未经验证,在测试阶段,就会制造更多的异常组合的可能性,并且这个组合是不可控的,这是一个合格的程序员不应该干的事情。未经验证的代码有时候会偶然正确,然而其本质有可能是巧合,还可能造成测试结果的随机性,进而产生漏测。但不要因此高兴,迟早可能都会还的,如果到了生产环境再发现问题,到时候查找问题就够受了。因此,为了别人也为了自己,对每一行代码负起责吧。

除了满足工作需求之外,也要加强自身的学习,因为这个行当的特点就是这样,技术一直在推陈出新,如果没有积极拥抱变化的心态,迟早会被拍死在沙滩上。说实在的我一直对自己的学历感到自卑,因为我是中专学历,当程序员只是偶然,可能那时IT行业还是新兴行业,人才稀疏,所以我这种滥竽充数的人也给混进来了。不过,我对自己的学习能力还是挺有自信的,为何呢?曾经还在在读书的时候参加过自考,考六科,过四科,一同参加自考的都只过了两科或以下。但参加工作之后,没有那么多时间去参加纯学历方面的学习,更多的是学习与工作相关的内容,我觉得也没有必要去为了学习而学习,更应该是学以致用就好。当然,这是个人观点,其他公司有没有学历歧视我不知道,但我们公司是没有的。话说回来,如果换作现在,我想我应该是没有资格当程序员员的!

掐指一算,当程序员大概有十来年了。就本身的感受来说,困难已经不在于编程语言或使用什么开发工具,亦或是在什么操作系统下编程,这些通通都不重要,花不算多的时间就能搞定。最大的困难还是在于对各种算法的理解程度,虽然各种平台上框架已经有各种基本的算法了,但不理解就用不好,用不对场景。不过,现在的人工智能已经很发达了,有任何问题都可以问它,这其中就包括算法,只要有寻根问底精神,而不是只图目的,不求甚解,就一定能在专业上有所进步。有人说,程序员的尽头是数学,任何问题它本身是符合数学规律的,要解决问题就是要为问题建立起一种数学模型。业余看大牛的一些作品,其中就有许多微积分、线性代数相关的东西,坦白地说,没看懂,但生吃也得吃完!我觉得这是程序员应该要有这样的精神。

最近我又突然想到圆周率的问题,很想知道生活在1000多年前,宋朝的祖冲之前辈,他是如何计算到小数点后7位的,虽然知道是用的什么割圆术,但怎么割,怎么算呢,那时候可并没有西方传过来的三角学啊!查阅相关资料发现,中国古代的数学之发达,像西方现代的极限微积分,在中国古代早就有这种思想了。微积分就是对极小量或瞬间状态的一种计算方法,像割圆术,祖冲之前辈是把圆割出了三万多份,求解到了小数点后7位,这正是对极小量的一种计算,是一种极限的思想。又比如对不规则形进行面积计算,中国古代建筑是非常讲究对称的,同时造型丰富,这都涉及到求面积体积等问题,这中间无不包含了古人强大的问题解决能力。得知祖冲之和其子祖暅之的《缀术》因某些官员觉得因“学官莫能究其深奥,是故废而不理”而遂失传时,倍感惋惜。据说当时传到了日本、朝鲜等地,望能有奇迹,但一番搜索,大失所望。

总之,当程序员就是要有大心脏,能直面挫折,勇往直前;要不断学习新知识,不怕困难;要学习数学,提升自己的境界。