技术学习要兼顾深度和广度

夯实技术基础

这么多年来,我面试了很多人。我越发感到「技术基础」非常重要。

很多技术的本质是一样的。技术基础足够好的话,学东西可以非常快。往下到操作系统层面,甚至计算机硬件层面,你会发现,编程语言特性和虚拟机特性不再重要。而技术基础和具体的编程语言没有太大关系,你有良好的技术基础,面试什么样的技术人员都是无障碍的。

另一方面,计算机在软件方面发展特别快,越往高层走,变化就越快,越往基础走,变化就越慢。我们掌握了更多基础,就相对更不容易被时代淘汰掉。

计算机软件硬件发展这么多年,最根本的东西是没有太大变化的。这里说的技术基础包括计算机硬件、操作系统(资源抽象和资源管理调度)、网络层面的 TCP 、HTTP(如果对 TCP 理解深刻,不管是中间件还是底层操作,都会游刃有余)、语言的虚拟机(虚拟机怎样处理内存?虚拟机的代码执行流程是怎样的)、安全基础、设计模式、方法论、数据库和统计学等。

比如安全基础方面,安全是有大的基础原则的,只要理解了,在安全方面就不容易犯低级错误。比如 SQL 注入、跨站脚本攻击,说白了就是要彻底理解,“数据就是数据、代码就是代码,代码跟数据交换要进行过滤或者说是隔离”。

技术学习的广度

如果具备很好的技术广度,你就很容易做出最优的技术方案,而不是只能是选择自己最熟悉的东西。对技术管理者来说,具备比较好的技术广度,我们可以跟所有岗位流畅沟通,客户端、服务端、前端、测试、数据库、算法工程师……技术上很多东西是相通的,我们也容易理解各种方案,不被忽悠。

一个事实是,对于大多数的技术,了解只需要一天,简单搞起来只需要一周,入门可能只需要一个月。最难的是踏出第一步。广泛看书是必要的。我买了好几个书架的书,各个领域都买。一本书带来的信息量和价值远大于书的价格,各个领域的经典都通读一遍,这个价值绝对超过几万块钱购书成本。

有空的话,看技术文章、微信公众号和博客,时不时看好书排行榜,补充一下自己对于技术实时的了解。我会记录下各种地方看到的新名词,知道这个东西大概是干什么的 —— 不一定马上做很详细的了解 —— 以后如果用到就会想起来。

多学几门语言突破自己的舒适区,没有那么困难。我由 .Net 转 Java 也只是一周多时间,Java 的东西和想法 .Net 也都有,并没有什么太特殊的,只要把基本的 IDE 调试一下,SDK 了解一下就行。

开源项目这么多,对于著名的开源项目,我会花个一两小时写最简单的 demo ,自己调适参数,认识它怎样运作,对这个产品有最基本的了解。

很多人问我 .Net 转 Java 的想法,我觉得如果是规模偏小、偏 toB 的话,.Net 在开发效率和稳定性上面都不错。公司互联网化、规模大了,不管是招人方面还是社区配套,Java 更适合。

技术深度同样重要

技术深度和广度相比也是非常重要的。

具备了技术深度,遇到问题可以快速定位并从根本上解决。如果对技术底层不了解,你可能只能猜。有技术深度之后,学习其他技术可以更快,再深入其他技术就不会怕。

对于技术深度,看书的作用不大,技术深度的探索主要是需要实践,在实践的过程中踩坑填坑得到经验。对于实践最好的方式是自己写代码、做实验,自己证明结论。找自己的兴趣点造轮子,比较一下谁造的轮子更好,甚至开源出来和大家共同切磋。

我自己写过 MVC 、RPC 、IOC 以及底层的网络框架,虽然只是自己写着玩,但是这个过程对我的帮助很大。

阅读源码很重要。那些演化很久的源码肯定有非常多的精妙设计和性能优化技巧,肯定也是踩过各种性能上的坑。

分享和社区贡献也非常重要。只有自己 100% 理解,你才能分享;别人给你反馈,你会学到更多。

分享和帮助他人,树立个人品牌

打造个人品牌很重要。但是,打造个人品牌不等于到处宣扬,重在分享和帮助别人。

我一开始喜欢论坛,从 CSDN 开始,做过 .Net 版块版主;自己写博客,在博客园曾经排名前十;自己写过书,也翻译过大量的书;有机会的话,我会去做线下分享。

把技术整理成细致的技术网络,这对自己在技术上的提炼是非常好的。如果是线下分享,你可以深挖自己的兴趣点,以最简单的语言分享给大家。

我觉得混论坛、写博客、写书给我的个人品牌和技术成长的帮助非常大。当然,写书和翻译书最重要的是把事做好,而不是为了让书上有你的名字。

多管齐下的英语学习方法

英语是非常重要的。用英文关键词在 Google 搜索技术问题,是更容易快速找到真正答案的。国外的英文社区很活跃,一手技术资料也多;等到有中文资料再看,往往已经落后半年甚至一年了。在工作中和老外打交道,口语足够好就会比较方便。另外,英语还可以扩展事业和提高生活质量,比如国外自由行或者看美剧。

我在大学英语很差,毕业以后第一家公司就是外企,之后慢慢对英语感兴趣了。上班的人没有太多的集中时间去学习英语。我总结了对工作的人比较容易实践的英语学习方法,这里分享给大家。

读,从翻译开始

读可以从翻译技术文档和技术书籍开始。积累基础词汇和基本表达,至少看英语数据就不需要翻字典。这个过程非常快,翻译一两本书之后,你就可以彻底抛开词典了。

还要强迫自己优先阅读英文资料。技术资料的阅读是第一层次,生活化阅读更难。找喜欢的小说甚至打英语游戏,这些难度比技术资料高很多。后者是更长的过程。

随着阅读的增多,不再需要查辞典,其实不难。一年以后,看各种资料都不再需要字典 —— 当然你可能写不出来,但你知道这些意思。这是一点问题都没有的。

写,从工作相关的文档博客开始

如果没有外企经历,可以写英文文档、博客或者生活日记,不断锻炼,同时也是在输出和分享。英语和中文一样,普通表达、正确表达、精确表达和优雅表达四个层次有很大区别。只有大量阅读之后,你才能体会到词与词的区别,你的写作才会更优美。

如果更有兴趣,可以阅读专业写作类书籍,比如美国大学英语写作。还可以将中文译文进行反向翻译,对比自己的译文和原文的区别,这样你就能知道 Native Speaker 跟你的表达的区别:哪些是不成熟的?哪些是不正宗的?

听,从技术视频开始

听会更难,需要的时间也更多。

可以看技术视频入门,比如说 YouTube 上有很多国外大学授课视频,不但能够学技术,而且能够提高英语的听的能力。比如斯坦福的 iOS 课程、深度学习课程。在这里,你可以听老外正常语速下的表达,而不是英语学习材料里的很慢速的表达。习惯正常语速对听力非常重要,而看授课视频是对自己比较简单又受益的方式。

对我来说,最重要的是看美剧。工作的人没有太多时间专门学英文,但是你还是需要休息,看美剧确实是比较好的方式。反复的看,带中文字幕看、带英文字幕看、不带字幕看、不看屏幕纯听……我一开始看美剧,只有 30% 可以听懂,一步步走下去,200 小时、300 小时之后甚至六七百小时之后,质变发生了,耳朵一下子变灵敏了,大部分都可以理解、都可以看懂了。

我现在看大部分的美剧不需要字幕也非常适应普通的语速,听力的养成基本全靠看美剧。不管你信不信,在没什么听力基础的情况下,坚持看老友记之类的美剧三部,之后你的听力一定基本过关。

当然也可以听自己感兴趣的播客,也能够进行训练。这跟美剧不一样,这个本来就是没有图像的,你可以在开车的时候听,你可以在地铁上听,这个都是可以的。有条件的可以装卫星电视,直接收看国外的电视节目。

说,从简单的关键词开始

说是最难的。最重要的是认识音标。核心是重音。重音读不对,就完全不是这个词,而变成了另外一个词。

可以购买口语课程,和外教进行口语对话。在开始阶段,你的表达不流畅,可以抓关键字,这样别人一听就知道你想说什么。不要用很复杂的语法和很多修饰词,只要说关键词就可以。随着时间推移,慢慢的你就可以从中文翻译到英文,变成英语思维直接表达。

管理,最重要的是招到优秀的人

多招聘优秀的人,构建梯队

找到优秀的人,招聘到优秀的人,如果可能,让优秀的人尽量多,这对团队是非常关键的。为什么要盯着优秀的人?优秀的人做事效率比一般的会高几倍,而且它们更可能做出正确的决定,决策过程能够比较快速同时不需要你去纠正。

最重要的是,优秀的人是自我驱动的,还可以影响带动周围一批人。还有一点就是,他可能会做出意想不到的创新,这些创新对团队可能是革命性的变化。

接下来在团队构建方面,还有些要注意到。首先是不要怕比自己强的人出现,你作为技术管理者,本身就不应该是技术最强的。有能力的管理者,哪怕是不懂技术,都可以非常好地管理所有技术人员。

而这里面,如何甄别和筛选?试用期很重要的,要敢于及时淘汰不合格的人,让团队里充满正能量。试用期得过且过,往往会给团队带来很大的副作用。

要尽可能让团队技术统一,减少管理成本。之前我带的某个团队,大部分是 Java ,只有一个 php 。从我的角度,这位 php 同学也要培养,也需要上升空间。我花了很大精力了解和培养他,但事后来看这对于整个团队管理是非常不值得的,时间完全浪费掉了。

在团队规模大了以后,要构建有梯度的团队。必须有非常牛的架构师,也要有刚毕业有冲劲的年轻人做梯度。类似的,要需要培养优秀的副手,给自己留时间做更高层的事情。

管理要以身作则,也要真诚相待

我觉得,团队管理重要的是以身作则。在团队氛围上,要构建学习型团队,鼓励开源,甚至可以制定相应规章,增加一些财务上的奖励。

要真心真意对待团队成员和帮助大家。让团队成员明确,工作和个人成长要兼顾。对于太注重工作的人,要告诉他怎么样成长。对于注重个人成长而不把工作放在心上的人,要告诉个人品牌和职业素养非常重要,确保工作的前提下你的个人成长才更有价值。

尽量保持团队的工作量,忙起来以后就不容易多想了。即使我们处于平稳阶段,也要想怎样让产品更好、怎样做创新、怎样更高效,让团队忙碌起来。要让大家知道,做这件事情是为什么,而不仅仅是告诉他完成这件事。共同的目标很重要,大家认可目标,才会做得更好,才会主动从自己的角度考虑如何实现目标。

做事要目标导向,思考要有高度

我坚持做事情目标导向。设定目标之后,要有必胜的信念,这样就能够忽略过程中的一切困难,包括职位的边界、所谓甲方乙方区分之类的。

要多思考多分析。很多时候,你感觉走不下去了,其实就是一个很小的点在阻碍,分析出困难本质就很容易突破,而不是过早下结论说无法完成。之前,有同事问我,我要做这个,你看是不是可行?我评估后觉得不可行。同事告诉我其他公司就是这么做的。后来我仔细想了一下,确实是有办法绕过之前想到的限制。最后同事告诉我,那家公司其实也没有实现。当然了,多分析同行的产品也是很有帮助的。

最后一点,站在更高的位置思考。这样才能理解上级决策,然后从公司角度做出更有利的决定,甚至是从社会价值角度做出更好的决定。只有思考层次更高,你做出的决定才会更有高度。

网络安全成长路线图

这个方向初期比较容易入门一些,掌握一些基本技术,拿起各种现成的工具就可以开黑了。不过,要想从脚本小子变成hei客大神,这个方向越往后,需要学习和掌握的东西就会越来越多,以下是学习网络安全需要走的方向:

# 网络安全学习方法

​ 上面介绍了技术分类和学习路线,这里来谈一下学习方法:
​ ## 视频学习

​ 无论你是去B站或者是油管上面都有很多网络安全的相关视频可以学习,当然如果你还不知道选择那套学习,我这里也整理了一套和上述成长路线图挂钩的视频教程,完整版的视频已经上传至CSDN官方,朋友们如果需要可以点击这个链接免费领取。网络安全重磅福利:入门&进阶全套282G学习资源包免费分享!

学习最重要是方法,管理最重要是高度相关推荐

  1. 学习使用js链接websocket服务断线重连的方法

    学习使用js链接websocket服务断线重连的方法 前言 思路 示例代码 前言 我们在是有websocekt的时候,有的时候由于某些原先websocket会断开连接,我们需要重现连接,该如何实现呢? ...

  2. 统计学习(四):重抽样方法

    文章目录 重抽样方法 交叉验证法 验证集方法 k​折交叉验证法 偏差--方差均衡 交叉验证法在分类问题中的应用 自助法 重抽样方法 重抽样方法(resampling method)是一种不可或缺的工具 ...

  3. Java学习之路3——方法定义、调用【重拾Java】

    Java学习之路3--方法定义.调用[重拾Java] 方法定义 为什么要写方法 方法完整的定义形式.调用 方法定义的格式 修饰符 返回值类型 返回值 调用格式 方法重载 方法定义 为什么要写方法 对于 ...

  4. 【深度学习】Weight Normalization: 一种简单的加速深度网络训练的重参数方法

    前言:为什么要Normalization 深度学习是一种在给定数据的情况下,学习求解目标函数最小化或者最大化的模型.在深度网络中,模型参数往往包含了大量的weights和biases.在求解优化模型的 ...

  5. 中山大学提出新型行人重识别方法和史上最大最新评测基准

    点击上方,选择星标或置顶,不定期资源大放送! 阅读大概需要15分钟 Follow小博主,每天更新前沿干货 导读:行人重识别,是利用 CV 技术判断图像或视频序列中是否存在特定行人的技术.常规的行人重识 ...

  6. 最强无监督行人重识别方法 Cluster Contrast ReID

    https://github.com/xiaomingzhid/sskd GitHub - JDAI-CV/fast-reid: SOTA Re-identification Methods and ...

  7. 最强无监督行人重识别方法 Cluster Contrast ReID,rank-1 94.6%

    代码连接: https://github.com/alibaba/cluster-contrast-reid 看了一下,主要是resnet50,resnet101训练的. 在行人重识别领域,如何获取海 ...

  8. OpenCV学习笔记(十四):重映射:remap( )

    OpenCV学习笔记(十四):重映射:remap( ) 图像的坐标映射是通过原图像与目标图像之间建立一种映射关系,这种映射关系有两种,一种是计算原图像任意像素在映射后图像的坐标位置,另一种是计算变换后 ...

  9. 中山大学提出新型行人重识别方法和史上最大评测基准

    本文转载自机器之心. 导读:行人重识别,是利用 CV 技术判断图像或视频序列中是否存在特定行人的技术.常规的行人重识别方法往往需要高昂的人工标注成本,计算复杂度也很大.在本文中,中山大学研究者提出的弱 ...

  10. 手机wps怎么改html文件后缀名,手机WPS如何制作个人简历 WPS一键修改文档重命名方法分享...

    目前有着不少的用户都是用WPS手机版,但是大多数的用户都整个APP都还不是很熟悉,比如想要制作个人简历应该怎么操作?还有应该如何修改文档重命名呢?下面就和小编一起来详细的了解下吧. 手机WPS如何制作 ...

最新文章

  1. 汇编语言--标志寄存器
  2. 延迟开学不停学|网易云信在线教育解决方案为“空中课堂”保驾护航
  3. 河南彩民中奖3亿5千万
  4. 大姐,你是不是得了尿频?
  5. Java黑皮书课后题第8章:*8.21(中心城市)给定一组城市,中心城市是和其它所有城市具有最短距离的城市。编写一个程序,提示用户输入城市数目以及位置(坐标),找到中心城市以及与其他城市总距离
  6. SPOJ - NSUBSTR Substrings(后缀自动机)
  7. MAC chrome浏览器 adobe flash player不是最新版本提示 的解决方案
  8. python dict.fromkeys()研究
  9. nextfloat_Java Random nextFloat()方法与示例
  10. 记录docker-Skywalking集成es7异常处理
  11. 【python】-- IO多路复用(select、poll、epoll)介绍及实现
  12. django model对象修改_Django之Model的Meta选项详解
  13. bootstrap 导航栏 字体 颜色_设计自己的Hugo主题——开发导航栏
  14. 昨天购入mac mini一台,4688元港币
  15. 关于placement new
  16. visio常用快捷键_visio2003常用快捷键有哪些
  17. gabor matlab pudn,matlab-Face-recognition 基于Gabor特征提取和人工智能的人脸检测系统 271万源代码下载- www.pudn.com...
  18. CodeMeter服务不能启动的解决方法,rslogix5000,无法启动,codemeter服务没有启动,
  19. SpringBoot @EnableAutoConfiguration exclude属性失效
  20. 参数估计-两个参数总体区间估计、样本量确定(三)

热门文章

  1. 英语介词总结——时间、方位介词
  2. 报错 fatal: The current branch html has no upstream branch. To push the current branch and set the
  3. 管理类书籍读后感(散落在外的那些)
  4. linux中时间计时,Linux 中的计时方法
  5. 记录和分享一个好用的小工具 Everything
  6. lenovo g500 更换ssd
  7. Mitsuba中的智能指针ref和scheduler单例
  8. 谷歌“败走麦城”,宣布解散健康部门Google Health
  9. 【自监督学习综述】A Survey on Contrastive Self-Supervised Learning
  10. 【解决问题】Vivado中FPGA的LUTs资源与数据手册对不上