写在前面
这是一篇迟到的文章。
零碎时间学习前端也3
周多了,已经掌握了基本的vue3
用法,深入理解typescript
(我用typejs
把vue
的基本功能全部进行了一次封装,目的是更加快的了解两者),但对css
没太多感觉,不仅仅是flex
布局那些问题,准确的说是我被css
打败了。
由于我对前端开发的思想与绝大多数的前端都不同,目前为止做的前端学习笔记也没有与前端的互通性(可以说这是一套适合后端使用的前端封装),所以本文并不再给出学习前端过程的案例,只表达我对编程的一些想法。
一、编程的目标
我刚参加工作时,有个同事问我,工作2
年的和工作4
年的区别在哪。我当时没有思考过这个问题。后来慢慢发现,这个区别就是自我要求产生的,明确一个方向后,自律的要求自己追求更高的技术,这个差距就出来了。
所以我认为编程应具有以下目的:
- 完成业务开发
- 减少技术债(后期的维护、扩展、更改、可读性、bug严重程度等)
- 累计性快速开发(通过积累的开发经验进行开发效率的提升,程序员的经验差距不应该只是技术提高,更多的应该是效率提高)
- 思想布局(从
curd
中窥探技术底层,在平时的编码中要形成自我理解的思想体现,比如设计模式、oop
思想等等)
通过这些年我做面试官的经历,大部分人对实现原理这块是很怕的,理由大致是:“我们平时都在写业务代码,没有机会去接触到底层原理,也看不懂源码”。这确实是一个非常不错的理由。
二、读框架源码这事儿
我读了一些框架和中间件的源码,具体记不到有哪些是读过了的,但是我很清楚没有全部读,也没有全部理解。
分享一下个人读源码的步骤:
- 产生需求(需要有一个切入点,抱着搞清楚某个事情的心态)
- 囫囵吞枣的读一遍,大致知道个过程
- 从方法跟踪细读多遍,了解一些主要逻辑
- 设想实现设计的目的
- 写
demo
验证自己的想法
读源码这事儿,不是为了读而读,而是有需要才读,带着目的去读,收获才是最大的。
另外,读源码的目的是提升自我,并不是应付面试,但是技术面试是最宝贵的技术提升方式,能非常直观的发现你的不足,比工作中积累的更加有效。我推荐大家每年都可以看看求职岗位上对技术的需求,以此来明确自己的技术水平以及学习方向。
非常重要的一点:我们的学习要有方向,而且要清楚学到什么程度才是可以的。
三、如何提升技术
我的高中是职业高中(大家可以去查查什么是职业高中),我的数学老师跟我说,不管做什么事情需要记得两个词自控、兴趣
,我一直以这两个词当作自律的基础,我的自控能力其实不咋样,不然我相信我会站在更高的地方了。
我对如何提升技术有一些心得,仅供大家参考:
- 在熟悉的领域,可以寻求技术上更加完美的方式或者解决方法,多想问题,就能找到自身的不足,很小的一个点研究下去可能就是一个领域了
- 找一些感兴趣的东西和事情,去瞎研究,不管是不是擅长的领域,都可以,但是不要研究的没有结果,至少要有阶段性的结果
- 把当前靠着吃饭的技术领域纵向积累,能解决大部分复杂问题后,再进行横向积累
- 时常整理知识储备(尤其是靠着吃饭的技术领域),尽量形成一个系统,系统的输出就像打降龙十八掌连绵不绝,而不是一招一招的过招
- 发现超出当前积累的技术栈的技术时,需要评估学习它要多久,能否快速纳入到当前的知识系统中,若不能可以单独花时间去闭关。退缩是不可能的,每次的学习都应该是破釜沉舟
- 一定要善于总结,好记性不如烂笔头
- 除当前掌握的开发语言之外,最好涉猎至少一门其他的开发语言,可以更好的印证设计思想,同时它也会是技术栈扩张的另一个基础
- 一定要非常了解的程序所处的运行环境,大部分问题都是在运行环境上发生的
- 时不时就去开源社区(github)逛逛,那是个藏宝山
总结就一句话就是瞎折腾
;技不如人是常有的事情,但是自律和学习方法却是我们拿来对待任何事情的一种态度。
四、学习方法
每个人的学习方法不尽相同,但是学习方法决定的是学习效率。
四肢健全却因为姿势不对跑的比别人慢,这个问题应该在起跑前就要搞清楚。
我个人的学习方式是:
- 去官网
- 了解它可以做什么
- 了解它的出发点是解决什么问题
- 评估是否值得学习或有更好的替代品;这一步很重要,不要看到奇技淫巧就如饥似渴,应该都知道饮鸩止渴的故事吧
- 囫囵吞枣式过一下文档
- 配置相应的学习环境(idea等)
- 编写
demo
,按官网的描述,用它解决问题- 遇到问题,查询官网文档
- 面向搜索引擎编程
- 将
demo
的场景转换成某个实际场景,用来解决或者替换一些技术或者方案 - 评估成本;是否值得学习,使用、维护等方面的成本是否能接受
- 更加细致的了解它的功能,以及一些原理(非必须)
- 整理学习笔记,理解消化
不推荐的事情:
- 买书学习新的技术;新的技术书上都没有,你看的始终是落后几个版本的技术,3个月一个周期的技术更新,要学就学当前最新的技术。最要紧的是有些作者水平并不高,比如某位写
kafka
原理的作者。 - 直接面向搜索引擎编程,不进官网看;会用与用好是
2
回事,差的是思想,技术学习始终要保持理论先行,学的才快,才能更加理解它。
五、回答一下问题
有几个小伙伴私信我问了一个大致相同的问题,问我到底是做什么的,技术方向有点乱,在此我介绍一下:
- 主要开发语言是
JAVA
,做了很多年JAVA WEB
方向的开发和系统架构设计,解决方案设计。主要以电商为主,也有物联网、社交、教育等领域的项目经验。 - 次语言是
kotlin
,也是我目前除团队性质的项目外主要的开发语言 - 涉猎
python、golang
,瞎折腾,用它们做了不少小玩意 - 最近纳入了
typescript、vue3
,算入门了 - 非常熟悉
shell、bat
脚本编程,也是瞎折腾,做了不少小玩意 - 非常熟悉主流的虚拟化及
devOps
运维开发;这也是瞎折腾,做了几个大玩意(除了不吃空气,其他的都吃了,现在基本不怎么折腾这块了) - 非常熟悉
liunx
;比windows
还熟,还是瞎折腾的,不过日子太长,已经熟了 - 非常熟悉网络,主要是网络传输(通讯协议等)方向;这依然还是瞎折腾的,做了些不可描述的事情很多年
- 大数据方向略有研究,理论很足,实操欠缺一些;太虚了,打算近期找个空好好补补。也是之前觉得挺有意思的,瞎折腾学了几下,学习门槛其实还是有那么一点点高的
可以看出来我大部分技术上的东西都是瞎折腾出来的。
时间是海绵里的水,周树人没骗人呢。
少刷会短视频,少看点国内外新闻,少打会游戏,时间就有了。离我们太远的东西你没法分辨是非,也没人在意你的判断和看法。终归是图个乐,不如拿来给自己做些升职加薪的投资。
评论区