代码复用(转)
以下观点只是纯粹站在技术角度,先不讨论商业上的,若是考虑到商业利益等,
那问题就复杂了,实际环境会比我们想象得复杂很多,但是连想象都不过关,
实际操作起来会更闹心一些。
软件的优点就是复用,其实复用在另一方面也体现了,要尊重自己的劳动成果
别人的劳动成果也要值钱,我们国家人多,人不值钱吧,劳动成果更不值钱,
也没多少这方面的意识,我们做好一个,丢一个,新来新弄。
公司的文档也是到处丢来丢去,好好分类保管在服务器上的估计也很少,虽然
正规的公司都有公文档案管理等,但是没怎么影响我们个人的价值观,或者大
多数IT公司的价值观,或者就我没重视这些。
【利于程序员的个人积累】
一般为人比较好,擅长交流的程序员,一般会有一些小客户,那些小客户为了
开发一些小软件,经常也会希望能做这个功能,那个功能,对程序员来说,不
是不能做,但是啥功能都自己做吧,也很累,蚂蚁虽小五脏俱全,什么都自己
开发吧,不是不可以,就是累,而且这些东西没有啥大不了的,从头开发到尾
巴,最后都整理好,估计也要2-3年吧。
若有一个比较好用的轻量级的架构,学习1周,然后按自己的需要填充几下,
就可以搞定客户的一些需求了,客户有钱了,以后继续开发新模块新功能,
你的软件也有足够的扩展空间,而且少折腾,生活质量也提高了,效益也高了,
有个模仿的好东西吧,提高也快。
普通程序员,有时也想提高一下,东学西学,东搞搞西搞搞,很难有突破,若
你公司没有很大的技术人员,你稍微学习提高一下,很容易被领导看中,甚至
会被提拔,加薪是必然的,这个架构要一个个慢慢学习,那太耗费时间了,没
必要每个人都走一次个这个漫长的路。
就算你是个高手,在公司干了好几年,公司的架构,已经改来改去很庞大了,
维护的人也多,你想抽取出来一个简单轻易的架构,也不是开玩笑的,这里弄
哪里错,哪里弄这里错,等你抽取出来,也花了很多时间了,就当你是高手,
你也希望,省事一些,再说了拿公司的东西,心里总也过不去一样,好像偷了
个啥一样。
若你是IT软件无关的公司里工作,工作上也需要做一些快速开发的小模块,可
以结合自己的日常管理工作,用电脑管理了,你的竞争力是比别人都强大,而
且由于你的日常工作,是靠你自己的程序处理的,有条有理,效率也高,也会
得到领导的赏识,甚至你可以推荐给你的同事用用看,是否好用。若你不是专
业的IT人员,也没精力学习太深入的软件知识,有个简单的架构供学习模仿,
那是很省事,你也不用过度深入学习,因为你的主营业务并不是靠写软件。
成熟的IT公司招聘新员工时,首先是考虑是由于你擅长某个行业,及这个行业
里都做过哪些业务部分,其次才是看你的技术,你擅长什么技术等,若你常年
积累的东西,都很规范,很有条理性,到了新公司,你的工作也轻松愉快,很
多东西可以快速搞定,也没必要又从零开始折腾。
【系统与系统之间的共用】
其实我们经常是前后开发了N个应用系统后才发现,其实里面有很多是很类似的,
这部分完全可以通用,甚至开发一套后可以重复利用。对个人如此,对公司也
是一样的。若这些重复叠加的部分的稳定性越高,质量越高,投入的成本越有
控制,那也能适当提高公司的生产效率,虽然话说说很简单,但是做起来的确
没那么容易,但是总得朝这个方向前进,因为这么搞绝对是正确的路线。
【利于小公司的积累】
老板是技术型的小公司,能发展起来的很少,一般是靠业务型的老板才更会有
生存空间,小池塘也养不了大鲨鱼,更何况这也是水土不服,也没足够的空间。
更何况大鲨鱼吃得也多。
小公司人来人往,一年换一波人,这样很难积累下来稳定成熟的小产品、成果
物等,若一开始就注意一个有效的积累,前人做出来的东西能留下来沉淀,后
人接手也比较顺利一些,设计思路都一致,好接着完善维护。
这几年流行外包,其实小公司的技术支持也可以进行外包,有疑难问题,架构
等找个兼职的架构师咨询一下,若没啥问题,也不用过去折腾,其实也没必要
非要雇佣一个资深架构师,浪费人才。
招聘一个大牛,搞个几个月,几万元也烧进去了,或者干了3个月,弄了个半成
品感觉没有发展空间,人家拍拍屁股走人了也有可能的。
【利于公司与公司之间集成】
例如我们公司是上市IT公司经常会承接一些规模比较大的软件开发订单,但是
自己又无法擅长开发全部应用,经常会外包一部分非核心业务给其他单位进行
开发,但是集成这些应用时,又会发生很多问题,导致外包的单位无法及时拿
到货款,若我们采用了统一的思想去开发的功能模块,子系统,那我们的软件
集成也会变得更顺利一些,也容易收到相应的款项。
市场上比较通用的软件,互相集成起来,也很难,开发外围小应用也很费劲,
若大家都采用同样的系统架构及设计思想,那这些应用想有机的集合在一起,
也是相对容易的。
目前硬件的集成技术已经很成熟了,因为这些东西看得见摸得着,也有国际标
准,相对而言,软件的集成是离理想状态差距甚远,我想不久的将来,会有一
个业务会比较吃得开,那就是软件集成,甚至会出现一些公司,专门是做软件
集成的,可能不是以开发某个应用为主营业务的,这个业务的收费也应该是相
当昂贵的。他们的主营业务就是分析行业软件,然后可以将这些软件于其他类
似财务软件等都进行集成。
【公司与个人的冲突】
公司不用怕个人会抢走你的生意,一个个人都能打败一个公司了,除非这个人
的综合能力超级强大,否则一般公司是不愿找个人合作的,都希望找公司合作,
因为个人的不确定性因素比公司大太多了,人失踪了都有可能的。
公司一般是开展某一类型的业务,相对有专业性、有知名度、行业性质。除非
个人成了大家公认专家,别人才会相信,总的来讲不必过分担心这个。
就像我们公司的代码,都是存在公司职员的笔记本电脑里,还有就是公司的服
务器上,虽然离职时都需要把代码删除掉,但是这些代码,个人是根本没有能
力全部维护好,顺利的跑起来,因为有那么多行业的业务知识也在里面,人也
不是神,他顶多对他负责的那部分有经验,了解内幕而已,一个大规模的软件,
还是需要一个团队才能持续维护起来。
我有时会想,若电脑是中国人发明的,会是啥样子?以中国人的思想,会搞出
啥神奇的东西来?
以我做管理类软件的经验,老外的分工是:
1. 操作系统
2. 数据库
3. 开发语言,设计器
4. 团队开发版本控制
5. 第三方控件
6. 报表分析控件
若电脑是我们发明的,会不会有个神奇的系统,这些全部搞定了。
几年前参与日本外包项目,是分设计阶段、开发阶段,分2个公司去弄,国内
很少有这么分工配合的,说白了,我们从小就没有合作精神,倒是很有山寨精
神,模仿、仿造能力特别强,不服不行。
不知道我以上想法是否正确,若不正确,请指点批评,思维可能有些扩散、
主题思想有些紊乱。接下来我会从技术角度去考虑 系统运行性能、数据并
发控制、开发效率 的方面的考量。