大道至简,衍化至繁。
往往特别深奥的事却是从特别简洁的发展而成的,就像麦克斯韦仅仅凭一个方程组就统一了电磁学一样,物理学中的算式往往非常简练。开普勒计算天体运行的时候是遵循老师认同的地心说计算的,结果各个天体运行轨迹以及计算起来都特别繁琐,这让他怀疑老师的错误。当他以太阳为中心计算附近天体的时候,一切都变得简单起来,最后他凭借开普勒三条定律赢得了“天空立法者”的美名。
物理学如此,在编程方面亦是如此。周爱民先生第一章便介绍了编程的精艺——“顺序,分支和循环”,只要拥有这种编程思想,像“愚公移山”那样的庞大工程也能非常简单的有序完成。这让我们认识到编程并没有我们大家想象中的那么难,只要我们有完成事情的先后顺序我们就能够编程,虽然编出的程序有可能不尽人意。但是只有我们告诉计算机自己的想法,计算机才能为我们工作,优化算法那是后话。而在编程过程中,正如周爱民先生所说,语言只是工具,我们没必要争论哪个语言的好坏争到你死我活,只要能为我所用所有的工具都是好的。 然而有了想法就去做还是不行的,要学会“懒”,可能有人想笑,“懒”还用学吗?但是“懒”确实是一种学问,周爱民先生说的很对——“是懒人创造了方法”。“懒人”的意思不是待在那什么也不做,而是停下来思考有什么更加简洁的方法来更加有效的完成公作。就像李冰,有可能只是生活中闲着无聊的小发现,却能运用到工作当中,让他在凿山的时候省了不少人力物力。编程的时候,我们也应该学会优化算法,想想更加简洁方便的方式,有可能,你的小小的“偷懒”就会成为编程人员大大的福音。
当然,编程并不是一个人所能完成的工作,在一队人合作完成一个项目的时候,一个出色的管理者是不可或缺的。他不仅需要起到良好的沟通协调作用,而且在项目失败的时候要有勇于承担错误,不把黑锅丢给团队里单一一个人的的献身精神。只有管理者勇于承认错误,员工才能认可管理者,心悦诚服,不用担心后顾之忧,努力完成工作。而且,以后的管理工作也能更加顺利,领导都“天子犯法与庶民同罪”了,员工犯错或者奖赏的时候也就更能公平进行了。 沟通往往是IT行业人士所头疼的,我们也许更加乐于把几万行代码敲进去与电脑沟通,也不愿意与客户谈论他们的项目需求。
确实,需要这些程序的客户有可能连C语言都不了解,但是他不了解可以,你却语言了解怎么让他了解。你可以把程序的语言转化成功能或者要求,让他们去选择。周爱民先生说过,沟通不是打电话或者请客户吃饭那么简单的事 ,你需要在与他沟通之前就想好这次沟通自己需要他提出什么要求,做出什么改进,不要等酒过三巡菜过五味时再闲扯,那样只会降低效率。 周爱民先生说的我暂时还不能全部理解,毕竟我还没有有幸参与到一个大型工程,也没有到大型公司进行工作,即使从事了好像暂时也不能从宏观的角度有能力调整一个工程的要求,但是如果我是一个工程的总负责人,我想我会尽力把客户的要求客观的一层一层传递到程序员,让客户达到满意,尽量让每个工程都做的有它的意义,不要让大家的所有努力都白费。 大道至简,衍化至繁。没有一个人可以说编程真的很简单,我们只能认为,它的方法我们可以琢磨清楚,我们可以凭借这简单的方法来衍化至繁,而这当中需要我们有解决问题的具体思路,还要不时停下来思考一下节约时间、步骤的优化方案,然后就是与具体要求进行协商沟通。只有我们把这些全部弄懂才能真正的“化繁为简”,才能“一生二,二生三,三生万物”,由这至简大道,衍化繁星漫天。