少一些大而全, 多一些小而精 — 我的开源观

看过了太多包含N多框架的,功能齐全的开源项目,总都是在宣称此框架能XXX,XXX.
开源挺好.
结果都一样, 走入另一个软件开发的沼泽继续不能自拔,深陷其中,无能更改与纠正.

软件是复杂的,复杂到超出了绝大部分程序员的能力,太多的广度意味着精力的分散,缺少深度
与比别人更浅层次的理解,太多的仅限于会使用,会弄,会满足当前项目要求,甚有直接从培训
学校搬出来的开源.
写程序,码代码,与做人做事毫无区别,你的时间在哪,成就就在哪,公平,公正.
迫于对工作的需要而不断地增加框架,整合框架,会用即是目的,功能实现即是高手.然后开源.
殊不知对软件,编程的理解少的可怜.天天一说便是熟悉这个,熟悉那个,一问深点啥也不知,
毫无羞耻感——最垃圾的程序员

对于什么是编程思想,什么是继承,封装,多态等等,说很容易,弄个简单的例子也很容易(网络
强大的好处之一),可真到了实际运用中,实际项目中,全然变成了以功能实现为目标,哪还知道
何谈抽象,何谈解耦,何谈扩展性…
说的都是人,可人才是根本的问题所在,人的能力,素质,身体,思想跟不上,何谈有小而精的深度,
精度.

“重复发明车轮”依旧是软件从业人员的常态.若把这提升到一个人的人生态度,就能更反映出有多少人是把软件编程当作一份职业,谋生的手段,而不是真正的热爱与自己的兴趣所在.
想想真是悲哀,那些一生没有追求过自己,三四十年的职业生涯都没干过自己最有兴趣,最有成就感的事——程序员首不其冲,无以回避.

你的精力,身体,资源,始终是有限的,过多的大而全只会在让你始终飘浮在一框架或技术的表面,
难以深入而有惊人的见解(有惊人见解的才是值得开源的).我曾对一些程序员说”如果你真正理解了MVC,那么你也能实现一个自己的MVC框架,而不管你用什么语言,什么方式”.只有真正的理解,思考,思索,再经过长时间的实践,结合书本,才能真正形成你的思想——你的编程思想.
每个程序员都有自己的编程思想,各不相同却又求同存异,健康发展.

个人认为开源首先要有”拿来用”精神,要勇于承认别人做的好的东西,尽量多的重要并吸收; 其次要有简化的精神,太深奥的技术(如class编译,加密算法)如何能用通俗的易于理解的话语来描述是开源的又一核心所在(能达到这一点的一般称为master),毕竟使用开源的,大部分是普通的程序员(即会用的程序员).
最后,开源一定要有专注精神,专注是社会进步的基石,只有专注才能做出精而深的开源作品.任何的开源都要像商业项目一样有明确的需求,要解决的问题,要达到的目的与效果,并坚持长久,不断优化,完善文档,使用说明等,才有可能成就优秀的开源作品.

基于现代的代码库,协作平台的广泛使用,要创建一个开源项目已是容易之更容易.你开源的是一件作品(而不只是你的代码),是你的编程水平,文档能力,综合水准的深刻体现.
对待开源的态度,即等于你对待软件编程的态度;是否成就优秀的开源,是否成为优秀的软件工程师,也是你人生的完全体现.

2017-12-12 凌晨

面向期望(Oriented expectations)

走过或者正在走在OOP思想中,我们一直坚信的JAVA实现.面向期望, 我们不再想什么做什么;想如何做好就如何做;想给客户解释为什么这样做,而不是按照客户想要的去做;不再把技术的难度欺压在用户的期望上;而是: 用户所期望的就是我们想要的; 用户如何使用好使我们就如何去做; 只做他所需,不做己所求.站在用户的角度,实际地去想你就是一个普通的用户,我就是这应用中的一个角色,当我打开页面时,我期望的页面是什么样的,有哪些内容是我所关心的,我如何操作最方便,最能达到我所想要完成的事情或操作;不再是我想它应该是这样的, 而应该是: 我就是用户, 我就期望它是这样的,不是那样的. 让操作舒服,让用户喜欢,让流程清晰,让目的明确,让他们所认可, 这就是目的.

我们站在技术角度的思想,完全不是一个用户所想的,转变角色,我们这里不谈实现,不谈if-else,不谈代码风格. 要做的,只是闭上双眼,想像你就是用户,打开浏览器(或其他UI界面),想我想的页面应该是什么样的,我所期望的注册是什么样的,信息浏览是什么样的,要登录是什么样的,当需要帮助时是如何提示的; 甚至就去听听那些完全不懂技术的朋友,用户或者一个街边陌生人所想要的(面对从任意1000人中抓出来也不足一两个懂技术的人群,那998或999人的意见是更重要的,也更值得聆听的).

http://blog.csdn.net/monkeyking1987/article/details/7521714