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

作者:小傅哥
博客:https://bugstack.cn - 原创系列专题文章

一、前言

哪个架构师没造过轮子?

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

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

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

二、我造过的轮子

我可能是痴迷于造轮子!

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

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

1. RPC 通信组件

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

2. 编写JVM虚拟机

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

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

 

4. 服务治理中间件

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

5. Netty仿桌面版微信

 

6. 还有很多造过的轮子

数据库分库分表路由中间件

Redis缓存读写引擎中间件

ES + Ibatis结合使用中间件

全链路业务流程监控

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

三、造轮子升职加薪吗?

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

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

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

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

四、有人反对你造轮子?

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

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

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

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

五、总结

没有一句话能评论造轮子的错和对,即使是已经有了的轮子,那么你以学习为目的呢?你以可以拿出更优的方案为导向呢?所以,想造就造吧,只不过千万要验证在使用!

造轮子能我们学到很多业务系统开发以外的知识,这些知识能拓展你的技术栈,扫描掉一些技术盲区,为你以后的晋升答辩或跳槽面试铺好够到更高薪资的垫脚石。

想造轮子要学会读源码、学会技术迁移、学习数据结构、学习算法、学习设计模式,一定是先提升技术视野了,才能让自己有造轮子的想法,而不是硬造。

 

posted @ 2020-10-29 10:37  揽月2020  阅读(94)  评论(0编辑  收藏  举报