03.01 java项目中总是用开源框架是不是显得自己没有技术能力,只会用别人的东西?

彼得苏


米其林大厨做饭,大米不是自己种的,牛不是自己养的,酒不是自己酿的,做出来的饭是不是显得没有技术能力,只会用别人的东西。

你可能会说,大厨的厨艺就是他的技术能力,食材怎么处理、对火候的掌握、对材料用量的拿捏都是大厨的技术能力;

那你怎么就看不到程序员分析问题的能力、抽象和逻辑能力、架构和设计能力了呢?


使用轮子 VS 造轮子

我不否认,能够自己造轮子的话,还是非常牛的,如果你有能力的话,可以开发维护你自己的“轮子”,如果轮子造的好,对你的跳槽、升职、加薪都会有帮助的。

但是在我们日常的开发中,“快速满足业务需求”是第一要务的,为什么要快速?很多时候系统开发的快,业务展开的就快,就能领先对手抢占市场,说白了就是公司能挣到钱;这时候你选择放弃使用 Redis,自己动手开发一个缓存系统的话,先不说你的代码质量如何(大概率是比不上 Redis 的),但说时间上,就是不允许的。


使用轮子也不是那么简单的

大部分开源框架、中间件都是有使用场景的,所以如果在使用开源框架的时候,不考虑使用场景,也不考虑使用这个开源框架可能会带来的问题,这样也是很危险的。

比如为了减少数据库访问压力,我们通常会把缓存热点数据,如果数据量不大,使用本地缓存就够了,就没有必要非得引入 Redis 增加系统的复杂性;如果引入 Redis 的话,又会面临缓存穿透、雪崩、击穿等问题,所以你还需要在架构和开发中,避免这些问题。

所以能否把“轮子”使用好,也是需要一定能力的。


不能只停留在【使用】这个层面

对于开源框架,很多程序员认为只要会用就行了,比如要操作 Redis ,只要知道怎么使用 RedisTemplate,里面常用的方法有什么就够了,直到这个程度的话,对于程序员能力的提高是有限的。

通常我们除了要了解是什么,怎么用之外,还需要知道其使用场景,优缺点,如何解决可能带来的问题;如果是一些比较经典的框架和组件,建议最好能了解其中的原理、设计思想,甚至是代码细节。

总之,如果没有能力造轮子的话,就一定要:不仅会用,还要用得好,最好能知其然也知其所以然。


我将持续分享Java开发、架构设计、程序员职业发展等方面的见解,希望能得到你的关注。


会点代码的大叔


你所谓的技术其实毫无意义...

1.Java编程没有技术含量...学计算机的毕业生三个月达到成手...三年就大师级...你可能在网上看了很多“高手”大谈JVM优化.架构设计啊...这些其实都没有任何卵用...以老板角度来看...你花时间提高那么一丢丢性能...倒不如加个内存或加个服务器实在...因为服务器很便宜...而你的劳动成本很高...你所谓的优化是在给老板浪费钱...是绝对禁止的....所以Java编程拼的是手速和机械键盘...你提高只是你的兴趣爱好...完全是无用功....

2.Java程序员分几种:1.最优.1-3年经验.2.次优3-5年经验.3.优.0-1年经验.4.差.5-8年经验.5.极差.8+经验....你只要把成本算进去就知道为啥这样了...毕竟这是干活呢.不是儿戏...8年还当程序员...那几乎就是除了编程啥也不会啊...

3.晋升路径.纯程序员有晋升当项目经理的么?不可能有...纯程序员有晋升到架构师的...但哪有那么多架构师位置...并且架构设计是能干到退休的...你怎么晋升?所以...对于程序员来说...提高自己的表达能力.写作能力.并且要主动学习甲方的业务知识.往需求经理.系统分析师努力才是关键.Java啥的没用.根本不缺你一个会的...

4.程序员其实不是软件行业的...

就和民工不是房地产行业的一样....

但项目经理.系分.架构.需求分析是软件行业的...

也就是正常的软件公司是完成详细设计后外包交给外包公司做的...这样成本最低...

...

这和苹果富士康是一个道理...

当然苹果也需要几个能做样机的...

但做样机的你不能以富士康的标准要求自己...

那你最后就真去富士康了...


ACME63610374577


工作中,大部分Java程序员的工作确实是缺少创新,只是在利用开源框架,通过组合来实现自己的目的。

但是,能学会开源框架,已经是一件了不起的事了。

比如,Spring。普通人只知道在ssm中用它来写curd,如果你再进一步呢,学会spring的各种扩展机制,学会用它来组合各种bean,用它的监听器等高级功能,这已经超过许多人了。

netty也是开源框架,你会用它做im,实现http协议,实现smtp协议,实现高并发,这还不算厉害吗?

理论上,我们用的所有东西基本都是开源的轮子。自己造轮子,你能造哪个?

所以关键是你用的什么开源软件,用到了什么地步。如果你只是用用curd那一套组合,那当然没啥进步。如果你视野能放更远一点,深入使用各种轮子,对轮子使用有深入的见解,已经很牛了。

我面试的时候,从不奢望对方能造出多么牛逼的轮子,他只要把牛逼的轮子用到牛逼的境界,那就相当牛了!


互联网活化石


java项目中总是用开源框架是不是显得自己没有技术能力,只会用别人的东西?

使用开源框架本身没有问题,而且这也是公司要求。

开源框架优势

  • 简化开发流程

通过开源框架可以简化开发的过程,提升开发效率。同样的工作,做一次就可以,没有必要反复来做。

  • 更加规范化

由于开源框架的使用都必须按照其规范,例如使用Spring MVC,需要遵守其开发规范,按照其要求使用框架。比自身使用Serverlet开发将会更加规范。

开源框架弊端

  • 开源框架自身的安全漏洞

java 开源框架中,无论是鼎鼎大名的Tomcat 还是Struts 都是出现过重大安全问题。这对于某些重要领域将会产生非常严重的后果。后来,京东就放弃了Struts.

  • 开源框架隐藏问题,导致无法准确的定位异常

第三框架经常处理异常时,自定义异常把原生异常直接覆盖,无法快速定位。
  • 框架增加程序复杂度

有些框架非常庞大且复杂,大部分开发者只是使用阶段,对于出现的异常无法处理。

总结

在Java 项目中,一般都是时间紧任务重,为了快速开发都是尽量采用第三方的框架结构。这是很现实的情况,公司没有时间去培养开发者自己开发一套自身的项目框架。

但作为开发者,在休息时。一定要及时的补充能量。学习一些优秀的开源框架可以迅速帮助开发者成长。

Java 开源框架中,Tomcat与Spring的源码是必修课。可以学习这个世界上最优秀的一批人写的代码,从设计模式,代码设计甚至包括命名,注释,最新的Java特性。都可以学习。


使用轮子本身没有问题,但要有创造轮子的能力。

当下,互联网时代。IT技术的更新迭代非常迅速,只有一直坚持学习,才能走的更加长远。



极客架构


JAVA也是别人的东西,你怎么不嫌弃自己呢?

你怎么不自己开发编程语言呢?

AndroidStudio也是别人的,

你怎么不自己开发编程软件呢?

电脑也是别人的,你咋不上天造电脑呢?

电是你的吗?

你咋不摩擦生电呢?

轮子用来干嘛的,不就给你用的吗?

要想展示自己能力,你造不就行吗?

没那个能力,你用不就行了吗?

轮子都用不好,你个FW还害怕别人说你?



陆琳琅


这是一种学生的心理。开发是解决问题,不是在考核个人能力。因此,完全没有必要担心用了别人的思想,自己便不能独立思考了。只要没有侵犯版权知识产权这类法律上的问题,使用开源的框架是没有任何问题的。牛顿都站在了巨人的肩膀上,您找个肩膀站站又有何妨。

最后说说独立思考的问题,每种框架都是为了解决某些应用上的问题才设计出来的。比如,MVC所要解决的就是在使用Control来吸收业务逻辑和画面操作逻辑的不同。各种基于MVC的框架,则是考虑了语言,运行环境,应用场景等细分的应用问题开发出来的。根据需求选择框架本身就需要相当的技术能力去做独立思考。更何况在实现过程中,还要根据需求灵活运用和改善框架结构呢。


日冲信息 黄


理解框架的原理了才是真正站在了巨人的肩膀上哈,在这个基础上才有可能基于现有技术框架来改进它,肯研究的人甚至有可能创造出性能更好,使用面积更广泛的框架来取代它。典型的国产好框架有,Rocketmq(巨人是rabbitmq),mybatis plus(巨人是mybatis),cat(巨人是亚马逊),layerui(巨人是extjs)等等,这些好的框架都是在有了开源区的先例之后才借鉴引申开来的,相当于就是真正的借用了巨人的力量啊!


jesbing


做java开发的六年过程中,学会了go ruby ,python现在还在学习呢,深度和宽度是我们必须要具备的


AnonymousWhoosah


牛顿还是现在巨人肩膀上呢。

一个人应该从单细胞生物开始进化,一生来就是人类太没本事了,居然重复利用父母给的基因,应该自己重新进化的。


小艾爱同学


你说你一个组装手机的天天想着怎么去做玻璃你道理还赚不赚钱了


分享到:


相關文章: