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