作者:小傅哥
博客: https://bugstack.cn-

沉淀、分享、成长,让自己和他人都能有所收获!

一、前言

哪个架构师没造过轮子?

你想过这样一件事吗? 是先具备能力在安排职位,还是先安排职位在学习? 什么?走后门,你出去!

就像我们上学考试、跆拳道考段、晋升答辩一样,都是先具备了可胜任上一阶段的能力,才给予相应的职位。所以,架构师造轮子从做程序员时候就开始了,只不过到了架构师阶段可以造出更好的轮子。

鉴于实际业务开发的紧急程度,不会允许你造轮子。但造轮子,几乎是每个程序员突破技术瓶颈的最佳方式。千万不要因为一句, 不要重复造轮子 的借口,给自己一个不学习的理由!

二、我造过的轮子

我可能是痴迷于造轮子!

了解我的粉丝可能都知道,我的第一份工作是写了两年的 C# ,但为了不放下我写好的 Java ,在工作之余就用 Java 语言把我能接触到到的项目,都用 Java 写了一遍,包括;串口打码机服务、中继器对接、PLC数据采集等等。

等到正式进入互联网后,像是为我打开了新的大门,这能接触到的知识太niao性了,盘它! 来,看我造过的轮子

1. RPC 通信组件

  • [手写RPC框架第三章《RPC中间件》]
  • 难度::star::star::star:
  • 15年初进互联网,惊讶的发现原来两个工程之间还可以使用RPC通信,以前公司使用的还是http或者webservice,所以这部分知识给我带来了很大的冲击。为了能更明白的了解它,找到了一些git中的源码,像Dubbo、gRPC,进行学习。学着学着,就开始动手自己实现一次,实践的过程学到了大量的知识,包括;结合Spring开发中间件、自定义配置、主定义注解、切面拦截、Netty通信、编解码器、流量整形等等。这些知识也为我后续开发其他中间件,打下了一个很好的基础。

2. 编写JVM虚拟机

  • [用Java实现一个JVM虚拟机]
  • 难度::star::star::star::star::star:
  • 这是一个用不上的轮子,同时这么干可能有点虎 ,整整写了一个月,写了几十万行代码,才能运行几个简单的HelloWorld。 ,因为我不想听别人吹着一些理论词忽悠了我的编码生涯,也不想看几本不能实操落地的书就感觉学会了。所以,我才愿意投入大量的时间进行实践,虽然我不能完整的编出一个可以用到生产使用的JVM,但我通过这样的学习,了解了JVM的基本功能;搜索和解析class、字节码指令集、运行时数据区、虚拟机栈、栈针、局部变量表、操作数栈、寄存器等,是如何一步步把Java代码跑起来的。

3. 基于SpringBoot的分布式任务中间件

  • [开发基于SpringBoot的分布式任务中间件DcsSchedule]
  • 难度::star::star::star:
  • 这是一个什么轮子呢?简单来说它这功能类似xxl-job,组件要解决的问题是把定时任务,可以分配到不同的机器上去执行,同时它是以 zookeeper 作为注册中心扩展为分布式任务调度系统。接入方式接单易用,统一控制启停、宕机灾备等。并且能自动检测;部署数量、任务总量、成功次数、失败次数、执行耗时等信息。

4. 服务治理中间件

  • [服务治理中间件之统一白名单验证]
  • 难度::star::star::star:
  • 服务治理是什么?其实服务治理包括的内容也比较多,例如;从部署层面、管理层面、应用层面、网关层面等等,而这里的服务治理说到的是应用层面,简单来说,例如你有很多个服务系统,每个服务的对外层都需要白名单,那怎么办呢?不太可能每一个系统都重复的开发类似的功能,这样也很难管理。所以我们希望把业务系统中,非业务逻辑的通用性核心功能抽离出来,开发成统一的业务组件,来帮助服务解耦,让业务系统更关心业务流程开发。那么这就是服务治理其中的一个作用。

5. Netty仿桌面版微信

  • [Netty+JavaFx实战:仿桌面版微信聊天]
  • 难度::star::star::star::star:
  • 本项目是作者使用JavaFx、Netty4.x、SpringBoot、Mysql等技术栈和偏向于DDD领域驱动设计方式,搭建的仿桌面版微信实现通信核心功能。

6. 还有很多造过的轮子

  1. 数据库分库分表路由中间件
  2. Redis缓存读写引擎中间件
  3. ES + Ibatis结合使用中间件
  4. 全链路业务流程监控

除了,这些造的轮子还有很多,其他的不一一列举了。当然我不只造轮子,还造各种小工具,甚至还包括js写的散列路由计算器。总之,我可能在造轮子的路上越走越远,是因为过于痴迷 !

三、造轮子升职加薪吗?

造轮子本身不一定升职加薪,如果你第一次造,也许会被扣薪。

如果是运用到业务系统中的造轮子,不同于CRUD,往往需要了解 Spring 或者 SpringBoot 部分源码,以及动态代理和反射等知识。并且在设计实现上也要考虑的非常全面,否则出了事故就不只是一个系统,而是所有使用你这个轮子的系统都需要随着你升级改造上线。所以,造轮子不一定升职加薪!

但,造轮子可以让个人的技术栈得到很全面的成长,也许还能让你在某个阶段突破现有的技术瓶颈。因为造轮子你需要学习以往别人的轮子、组件的源码、拓展的技术栈以及更加全面的思考 。

最后是你造的轮子要能经受起验证,也要能适应业务需求进行拓展,并且这可能还是一份除了你日常业务系统开发外的其他工作。是否能经受起这份考验,也就决定了你能收获多少知识。而这份别人没掌握的 知识 才是你升值加薪的筹码! 也是你能留下的本事和走出去的能力!

四、有人反对你造轮子?

不要重复造轮子、不要重复造轮子、不要重复造轮子

很多时候你是否听到这句话,而把自己内心的小火苗浇灭。其实这句话从某些时候来说不一定是错的,因为一个项目的开发到上线,需要对时间成本、项目质量、可靠度进行评估,谁也不敢贸然使用一个没有验证过的新功能,也不敢让你拿着练手。

当然,有时候我们造的轮子不一定是重复的,可能是创新的。但这个轮子的阶段,不应该是新项目启动时候开始,最起码应该是你在这之前就写过,已经验证过,已经投入生产过,才敢让你造了用。对于当前这次开发,如果非常紧急,那么最好的是求稳,并在这个项目里吸收更多的经验。并总结如果是用了你的轮子,那么这个轮子能支持多久,还需要扩展吗,会不会有问题。

这一切的学习、总结、应用,最终都是可以为你技术栈成长铺路的。不要因别人反对就放弃,也不要倔强的就非要怎样,而且游刃有余的成长和学习。有准备的人,总是会在必要的时候给力

五、总结

  • 没有一句话能评论造轮子的错和对,即使是已经有了的轮子,那么你以学习为目的呢?你以可以拿出更优的方案为导向呢?所以,想造就造吧,只不过千万要验证在使用!
  • 造轮子能我们学到很多业务系统开发以外的知识,这些知识能拓展你的技术栈,扫描掉一些技术盲区,为你以后的晋升答辩或跳槽面试铺好够到更高薪资的垫脚石。
  • 想造轮子要学会读源码、学会技术迁移、学习数据结构、学习算法、学习设计模式,一定是先提升技术视野了,才能让自己有造轮子的想法,而不是硬造。

造轮子是什么意思_程序员为什么热衷于造轮子,升职加薪吗?相关推荐

  1. 造轮子是什么意思_程序员发文质疑阿里天启为kpi项目,重复造轮子,阿里回应:诽谤...

    前言: 曹丕在<典论·论文>中说到,"文人相轻,自古而然".中国自古就有文人相轻的传统,文人相轻真没有什么要紧的,就像是小夫妻似的斗斗气拌拌嘴,然后还可以理直气壮地拿稿 ...

  2. 程序员为什么热衷于造轮子,而不是硬照,升职加薪吗?

    一.前言 哪个架构师没造过轮子? 你想过这样一件事吗?是先具备能力在安排职位,还是先安排职位在学习?

  3. 程序员为什么热衷于造轮子,升职加薪吗?

    作者:小傅哥 博客:https://bugstack.cn - 原创系列专题文章 沉淀.分享.成长,让自己和他人都能有所收获!

  4. 程序员为什么热衷造轮子?

    搜索一下"造轮子"或者"程序员为什么喜欢造轮子",会看到很多相关的讨论,这是个老生常谈的话题,很多人谈过了,谈了很多年.不过还是有再谈的必要. "造轮 ...

  5. 程序员为什么热衷造轮子

    搜索一下"造轮子"或者"程序员为什么喜欢造轮子",会看到很多相关的讨论,这是个老生常谈的话题,很多人谈过了,谈了很多年.不过还是有再谈的必要. "造轮 ...

  6. 【源码+演示】高考加油!HTML+CSS特效文字祝福_程序员祝福高考学子旗开得胜!

    又是一年盛夏至,愿高三学子高中毕业日,即是高中名校时! 本篇为大家带来3款HTML+CSS制作出的小项目,为高考学子加油助威,愿他们旗开得胜,金榜题名![源码+演示]高考加油!HTML+CSS特效文字 ...

  7. 过年了,程序员同学如何给老板提加薪?

    还有不到一个月的时间就要过春节了!对大多数人而言,年终奖的确让人很期待.但是有一件事让很多程序员同学「耿耿于怀」,那就是如何开口给老板提加薪呢?一般而言,程序员都不善于和老板提这个问题,一是因为脸皮薄 ...

  8. 程序员该不该主动提加薪?

    阅读文本大概需要3分钟. 程序员该不该主动提加薪这个问题应该很多程序员困惑,特别刚就业一两年的小伙伴,我觉得这个问题很有普遍性,应该是很多程序员普遍关注的问题,因此拿出来和大家一起聊聊. 在文章开始之 ...

  9. 程序员如何通过造轮子走向人生巅峰?

    前言:你所做的事情,也许暂时看不到成果.但不要灰心,你不是没有成长,而是在扎根. 程序员圈经常流行的一句话:"不要重复造轮子".在计算机领域,我们将封装好的组件.库,叫做轮子.因为 ...

最新文章

  1. 2021年大数据Hive(一):​​​​​​​Hive基本概念
  2. linux系统重装后挂载数据盘,Linux重装系统后如何重新挂载数据盘?
  3. do_exit——exit_notify()【转】
  4. Android开发--Wifi的操作
  5. 动态调用WebService方法
  6. JavaScript中赋值运算符的使用
  7. axture动画原型制作_Axure制作原型-基础操作
  8. 10g中如何修改数据库字符集-2
  9. 13凯越门锁继电器在哪里_凯越中控门锁不工作.更换中央门锁装置故障依旧.
  10. 查询HTML标签select中options的值并定位其位置
  11. 自动化测试的概念及工具
  12. Javascript 中的false、0、null、undefined和空字符串对象
  13. 求助文,缺少stubs-n32_hard.h
  14. 地理生物结业考_今年我初二,明天我地理生物结业考,但是我现在啥都不会,我应该怎么办?...
  15. 2022年9月最新【国际版阿里云的注册流程】分享
  16. 高速电路设计基本概念之——近端串扰和远端串扰
  17. Springcloud快速入门
  18. 【181125】VC++ 绘制立方体的生成与控制旋转程序源代码
  19. 如何为铁威马NAS设置固定IP?
  20. 好玩的代码注释图 神兽保佑 代码无bug

热门文章

  1. OpenCV的imshow不能显示图像(显示的图像全灰)
  2. QT学习笔记(十二):透明窗体设置
  3. Python面试题大全(一):基础知识学习
  4. Python 程序的抽样分析器 - Py-Spy
  5. 安卓逆向_14 --- 单机和弱联网游戏内购 突破口 和 思路
  6. Spring Data JPA 从入门到精通~基本注解
  7. 利用ServiceLocator模式改进JNDI实践
  8. C++学习之路 | PTA(天梯赛)—— L2-013 红色警报 (25分)(带注释)(并查集)(精简)
  9. tcl linux 刷 安卓系统,安卓用户看过来—手把手教你刷第三方系统
  10. 关于计算机知识竞答的问题,电脑知识竞赛题目有哪些