今天和一位朋友讨论了一个问题,就是聊到了现在的软件开发的开源。因为因为原来的软件大多是商业引擎,商业框架。其实对于对于二次开发我一直比较困惑,因为我比较擅长开发种类比较多。现在我觉得什么开发其实多少都有二次开发的成分。
其实我觉得我写程序最幸福的时候是在学校刚学会的时候,那时候,就是面对黑色的屏幕,学C语言,写一个main函数。里面也不用调用什么系统函数,所有的资源都是自己定义,写一个排序算法,然后觉得掌握编程所有。那种单纯的快乐,现在已经很少有了。
现在的开发涉及面真的太广了,现在是一个商业的社会,其实在程序开发行业商业行为也很明显。老板如果买了一个产品,你不管喜不喜欢,也要硬着头皮上。比如技术总监说一个技术好,你能不用吗?现在写程序,其实也是做买卖的过程,讲求效率。这个效率不是代码执行效率,而是开发效率。如果说你用2倍时间,开发一个运行效率高的程序,恐怕老板是不接受。因为老板想更快的看到效果,这基本是目前开发的一个常态。也不能评价好不好。
这就像什么事情呢,你追求一个妹子,都想更快的知道行不行,而一个精致的妹子,想更了解之后再说。接下来说开源,现在开源已经改变开发程序的生态,但是作为一个普通的开发者,其实开源与商业化软件,没有本质的区别。因为就算很多软件开源,你疲于开发业务代码,根本没有时间,去阅读开源软件本身代码,更多的还是靠课程资料学习。对于大神除外,因为大神可以阅读底层代码,然后修改。对于普通的开发者,其实开源与商业区别不大。
很多人觉得自己使用开源技术就自带光环,其实我们进行的所有开发,只要不能深入到底层,都是在使用技术,而使用技术的学问,属于技术应用。技术应用关注点应该是业务,而不是底层实现,更多的关注底层实现什么功能。就像一个厨师,你该关注食材怎么被处理,而不是怎么产生出来的。
基于这个角度,其实开源也是二次开发,只是不过随着时间的流逝,你可能更懂得这项技术的原理,升级为技术的提供者,开源对你的帮助更大。拿现在非常有名的linux系统,能改得动人,是有一部分,而作为一个应用开发者,其实Linux的门槛还是比Win要高,但这里的高,其实更多的信息壁垒。而不是linux的应用开发更强大,Win的文档其实比linux要完善,所以壁垒自然低。而Linux开发者,没有那么大利益推动,所以文档方面会不完善,很多靠阅读代码。
然后说了很多,最后还是要确定自己的位置,不要盲目的羡慕别人,比如你做应用开发,只要理清业务逻辑,技术的优缺点,没必要局限使用什么技术。而你致力于开发操作系统,什么Win,Linux,IOS,安卓,都是要基本了解,深入了解其中一个。而一个人最大的优势,还是对于行业本身的认识,自身的知识结构。从本质上,认清自己的开发的性质,如果你的开发,对于所使用的框架没有修改,其实就是这个框架的二次开发,我觉得这样说问题不大。但是什么事情都是相对的,你的代码对于业务封装行业领先,那就是这个行业的自主研发的优秀软件。
最后,开源是不是二次开发,自己开发的程序是不是二次开发,还要找一个参照,不要盲目判定,成就一个更强大的自己。