java项目中总是用开源框架是不是显得自己没有技术能力?
米其林大厨做饭,大米不是自己种的,牛不是自己养的,酒不是自己酿的,做出来的饭是不是显得没有技术能力,只会用别人的东西。
你可能会说,大厨的厨艺就是他的技术能力,食材怎么处理、对火候的掌握、对材料用量的拿捏都是大厨的技术能力;
那你怎么就看不到程序员分析问题的能力、抽象和逻辑能力、架构和设计能力了呢?
使用轮子 VS 造轮子我不否认,能够自己造轮子的话,还是非常牛的,如果你有能力的话,可以开发维护你自己的“轮子”,如果轮子造的好,对你的跳槽、升职、加薪都会有帮助的。
但是在我们日常的开发中,“快速满足业务需求”是第一要务的,为什么要快速?很多时候系统开发的快,业务展开的就快,就能领先对手抢占市场,说白了就是公司能挣到钱;这时候你选择放弃使用 Redis,自己动手开发一个缓存系统的话,先不说你的代码质量如何(大概率是比不上 Redis 的),但说时间上,就是不允许的。
使用轮子也不是那么简单的大部分开源框架、中间件都是有使用场景的,所以如果在使用开源框架的时候,不考虑使用场景,也不考虑使用这个开源框架可能会带来的问题,这样也是很危险的。
比如为了减少数据库访问压力,我们通常会把缓存热点数据,如果数据量不大,使用本地缓存就够了,就没有必要非得引入 Redis 增加系统的复杂性;如果引入 Redis 的话,又会面临缓存穿透、雪崩、击穿等问题,所以你还需要在架构和开发中,避免这些问题。
所以能否把“轮子”使用好,也是需要一定能力的。
不能只停留在【使用】这个层面对于开源框架,很多程序员认为只要会用就行了,比如要操作 Redis ,只要知道怎么使用 RedisTemplate,里面常用的方法有什么就够了,直到这个程度的话,对于程序员能力的提高是有限的。
通常我们除了要了解是什么,怎么用之外,还需要知道其使用场景,优缺点,如何解决可能带来的问题;如果是一些比较经典的框架和组件,建议最好能了解其中的原理、设计思想,甚至是代码细节。
总之,如果没有能力造轮子的话,就一定要:不仅会用,还要用得好,最好能知其然也知其所以然。
我将持续分享Java开发、架构设计、程序员职业发展等方面的见解,希望能得到你的关注。