该用那种技术或框架来开发?

该用那种技术或框架来开发?_第1张图片
学海无涯

最近,常常被人问到你团队有用甚幺新技术或是框架去开发?或是,我们因该要用什幺新技术和选哪一个框架去开发,这系统比较好?用AngualrJS好像不错。现在很热门,采用SPA开发网页好像可以节省带宽,使得整体反应相当快速…等。突然觉得在这技术爆炸年代,让开发变得很不单纯,又当微软宣布.NET走向开源之后,不管在前端(前端Framework更是雨后春笋般出现)或后端的技术开发,或是新的框架的诞生,真是多到不知道该怎样去选择才好,

有些时候,感觉不去"使用"这些新的语言或是新的开发方式去开发系统,就好像是落伍或是跟不上时代,又或是外界媒体不段在洗脑或是传达某些技术,感觉使用这个才是王道。(注意,这边我是用"使用"一词。因为,学习跟使用 这两者是不同),确实,当时代不断改变,人是必须不断去学习各种程序和新技术所带来的冲击,至少当你是走在信息这个产业时,必须要有的领悟。回到该用那种技术或框架开发系统这一个问题,我个人觉得如果你本身不是公司老板或是在公司的政策强迫下,在使用新技术去开发可以从下面三个层面去思考,

解决问题

这一层面主要是从商业或是业务需求面去看。我认为不管那一种的新技术或是新框架的诞生,都是为了解决当时的一些需求或是某开发上的问题所衍生出来的。因此,当我们去开发一套系统时候,不该一昧认为最新的技术就是最好用的,而是,必须先做事前的分析,了解目前的业务需求举例来说,如果你的系统,未来只会去服务十个用户,而它的目的只是让用户加速他日常工作或是简化一些流程(别笑,很多in House系统就是这样),单纯用自己拿手的WebForm开发就可以解决用户问题?是否有必要采用SPA方式去开发?又或是,当大家都在谈论开发要搭配AngularJS,但,整体需求面看不到,导入AngularJS会解决业务或是架构问题时,是否单纯搭配Javascrip或Jquery就可以呢?不过,如果今天你的系统必须要高性能高可扩充性且需要降低网页传输量,那请使用SPA,甚至ReactJS去开发,或是,一些可以解决这方面的技术,即使困难度很高,还是有其导入必要性。一切都必须从需求和解决问题去思考该用哪一种技术。

开发ROI

这一层面主要是从系统开发过程的投资报酬率去看开发系统的ROI评估,这一点很重要,一套不熟悉的框架或是技术的导入,对一般人来说都是一个高成本的投入,像是在新创团队中,能快速将自己的发想或是解决问题的方法变成产品,并赶紧丢到市场验证,验证回来后再持续快速修正,这才是最有效益的,投入一个你都不熟悉的技术或是框架,等你摸完再开发出来,此时,你的投资回报率已经不见了,因为,你的可能主意已经被别人捷足先登了。而在一般企业中,MIS往往都被时程压着打,甚至,从分析到开发测试,往往只有一两个月就要完成,且通常还会被用系统产出率决定MIS的绩效,与其导入一个比完成需求还复杂的技术或是框架时,还不如采用合宜的目前需求的框架去开发,那样怎样才知道要用那些技术或是框架才合宜呢?这就是开发人员还是要持续的原因有时候学习的广会比学习的深还有帮助

维护成本

这一层面则是从团队文化去看对于开发In House系统来说这是很重要的考量,且往往又是很不好拿捏,就拿内部系统开发来说好了,内部系统大都是像是肝一样,辛苦但往往会被忽视。而且,内部系统不是说时间到就可以升级版本,或是,旧版本就不去维护。也因此,久而久之,可以发现MIS要了解的语言从 VB6到.NET 5都有,还不包括一些林林种种的分支技术。再者,加上公司人员来来去去,系统的Owner不断改变,需求不断增加(新需求往往会被建筑在多年前的系统上)维护成本就越来越高了。从维护成本思考下,就必须了解整个团队对于该技术与框架的熟悉度。若只是,团队中只有一两个人对此框架熟悉,大部分都不熟悉时候,就要强行导入,后续可能就会垫加系统的维护成本了,毕竟,当系统上线有异常时候,团队有办法去维护吗?可被允许的down time是多少?又或是当商业需求改变,要立即增加或是修改系统功能时,所要付出的成本是多少。从以上角度思考,是否要此刻运用此技术或是框架到团队中就是需要评估的,又或是该逐步提升团队技能或是熟悉度再做考量呢?


技术 这东西有如两面刃,它可以带来很大效益,同时,也会伴随许多风险,唯有不断学习和改善才可以去降低使用风险,而无论是架构设计或是技术框架的导入,还是必须依附在商业与业务需求,过多或是不及架构或是一昧听从潮流而去使用的技术,对于产品和系统的帮助都不大。

从团队角度来看,若是成员技术差异很大时候,与其采用一些新技术,还不如先提升成员的技术力,让大家彼此的能力差距缩小,纵使使用一些旧有技术又何妨呢?现在已经是不缺选择使用框架与技术的世代,而是要怎样选择的才是有助于整体开发的思维了。

以上只是个人长期所处产业的开发经验与看法之分享

你可能感兴趣的:(该用那种技术或框架来开发?)