程序员不破此关,难达优秀
今天我们来聊如何修炼专业技能。内容分如下 3 个部分:
- 开发者成长的14个阶段
- 普通和优秀的关键差别
- 知识如何内化成体系
一个一个来说吧。
插一句:我正在参加CSDN 2018年博客之星评选,希望你能投我一票,我在 NO.55。
感谢你宝贵的一票,投票地址:https://bss.csdn.net/m/topic/blog_star2018/index
(一)开发者成长的14个阶段
之前介绍了德雷福斯模型:
这是一个非常好的模型,我在看的时候,觉得如果有一个更细致的阶段划分,会对开发者定位自己更有帮助,所以,就总结了出了下面的14个阶段:
- 看书,看视频,看博客,听课等等
- 对着书敲代码
- 脱离书自己敲代码
- 自己实现一些小DEMO
- 进项目看代码
- 在别人指点下写代码
- 独立在别人搭建好的框架内填写代码
- 独立负责别人设计好的模块的实现
- 独立负责一个软件模块的设计和实现
- 负责较大的软件模块,拆分模块,分子任务给他人
- 从程序设计、单一模块设计,进入软件系统架构设计的学习(书、课、人、搜)
- 负责一个项目的子系统或一个小项目的架构设计,拆分,分派任务
- 负责一个涵盖前后端、业务较复杂的项目的架构设计,拆分架构,分配角色,分派任务
- 做中大型软件系统的架构设计(架构师),或专注特定领域,解决疑难杂症
这14个阶段是自解释的,每个人都可以对照着它找到自己的位置,然后看到自己的下一个台阶。
(二)不同阶段间的关键差别
让我们从开发者遇到的问题说起,找出不同阶段开发者的关键差别。
你可能遇到这种问题:
可能遇到下面的问题:
可能经常被人这样问:
也可能经常被人这样问:
此时你的反应过程是什么样子的呢?
有人没反应:
有人可以想到一些线索,通过查找、搜索,找到答案:
有人一经提示,马上就能想到是怎么回事:
有人看到问题,脑子立即疯狂运算,迅速找到答案:
这 4 种不同层次的反应,内在差别在哪里呢?
这得从我们遇到问题时的反应过程说起。这个过程是这样的:
- 接受问题
- 调取知识,分析问题
- 综合应用知识,生成解决方案
从这个过程可以看出:知识的多寡,决定我们能否正确分析问题,找到答案。
这正是不同阶段开发者之间的关键差别所在:知识和知识体系。
(此图仅为举例,每个方向都有自己的知识体系)
当一个开发者进入第9个阶段以后,往往就有了围绕着某个领域的完整的知识体系。层次越高,知识体系越丰富,越根深叶茂。同时,对知识的运用也越娴熟,一发牵全身动,窥一斑知全豹,遇到问题,瞬间由此及彼,遍历知识库,找到答案。
(三)知识如何内化成体系
那么,怎么建立围绕某个领域的知识体系呢?简单讲:
- 干中学
- 事上练
- 常回顾
- 重关联
什么意思呢?
先看我画的开发者工作学习流程图:
从这张图可以看到,开发者一般很少有专门时间来学习知识和技能,多数时候是进项目,在做项目的过程中,会使用已有知识,会接触到各种新知识,不懂不会,就通过看书、听课、问人、搜索等方式来学习,然后直接组合使用各种知识来做事,在做事中内化知识,然后交付项目。项目交付后,可能会进入回顾阶段,练习使用过的知识,梳理新知识和已有知识的关联,将新知识纳入知识体系。
整个过程浓缩起来就是:干中学、事上练、常回顾、重关联。
这其中尤为重要的是:常回顾、重关联。这是两个反刍过程,能够让我们有效提升对知识的理解,能够让我们有机会迭代已有知识体系。有了这两个阶段,我们才不会像猴子掰玉米一样,交付了 N 多项目,自己身上什么也没留下。
在知识内化形成知识体系的过程中,还有3点特别重要:
- 频度
- 强度
- 有意练习
实践的频度是指我们应当以足够短的时间周期重复使用某个知识,以期达到第一反应的水准。频度对结果有非常大的影响,比如每周都用抽象工厂模式,那过一个月,可能对抽象工厂就谙熟于心了,而如果两年用一次,可能每次要用的时候都要重新学习。
强度是指开发工作要在时间上和难度上具备挑战性。时间上的强度,指每次练习要有时间层面的紧张感,即限时完成,甚至短时间要求超额完成。难度是指每次知识实践,都要设定超出当前应用水准的目标,以便撕裂知识肌肉,产生痛感,激起探索欲,提升对知识的应用能力。
有意练习,指的是对于新知识,要有意识地、刻意地在实践中使用。比如你学习了装饰模式,就要创造条件去使用它,有事没事儿都要琢磨怎么用。这样,才能提升使用频度,促进内化。一个新知识,你不有意琢磨它,它是万万不会自动傍身的。
(零)总结 && 预告
今天我们介绍了开发者的14个成长阶段,指出不同阶段之间的关键差别在于知识的丰富程度以及知识是否成体系,然后介绍了修炼知识体系的12字箴言——“干中学、事上练、常回顾、重关联”,顺带还介绍了知识内化时的3个要点。
熟练应用这些,可以让我们很好的修炼技术能力。然而,除了技术,我们还需要另外两大类至关重要却往往被忽略的能力:人际沟通能力和项目管理能力。
我接下来要整理的第5篇文章就是——程序员加薪升职之人际沟通。
我正在参加CSDN 2018年博客之星评选,希望你能投我一票,我在 NO.55。
感谢你宝贵的一票,投票地址:https://bss.csdn.net/m/topic/blog_star2018/index 。
程序员不破此关,难达优秀相关推荐
- 想要成为真正优秀的程序员是不是真的很难?
很多人认为要想成为一名优秀的程序员,那就需要一天24小时每天不断地编程--睁开眼睛要编程,闭上眼睛睡觉的时候还要梦到编程--我认为这是一种矫枉过正的方法.沿着这条路走,只会让你精疲力尽,犹如夸父逐日一 ...
- 程序员转行为什么这么难--[转]
登录 | 注册 程序视界--聚焦程序员的职业规划与成长 欢迎关注我的订阅号"程序视界",西安Qt交流QQ群(348787573,限西安) 目录视图 摘要视图 订阅 程序员转行为什么 ...
- Java程序员找工作很难吗?可能没有get这些内容
Java程序员找工作很难吗?可能没有get这些内容 五分钟阅读下方文章 经常面试一些候选人,整理了下我面试使用的题目,陆陆续续整理出来的题目很多,所以每次会抽一部分来问.答案会在后面的文章中逐渐发布出 ...
- c语言闯关考试题讲解,程序员面试闯关(二):数据结构考点与细节分析
上一篇文章程序员面试闯关(一):字符串匹配+排序+查找列举说明了各种常见的排序算法等算法基础,这里,主要分析下数据结构相关的基础和注意点. 一.线性表 1. 数组(顺序存储结构) 效率分析 查找:O( ...
- 找个程序员做男朋友好难啊
我今年26岁,在一家民营企业做HR,对于程序员岗位还是有一定的了解的. 如果你不知道程序员是做什么的?我们来普及下: 程序员(Programmer)是从事程序开发.维护的专业人员.一般将程序员分为程序 ...
- 程序员怎么找工作?程序员找工作越来越难怎么办?
最近互联网大厂裁员的消息很多,直接原因还是来自于业绩压力.对于互联网公司而言,在外部公司空间增长猥琐的背景下.想要改善业绩,最直接到底方法还是裁员,所以很多人问,程序员怎么找工作?找工作越来越难怎么办 ...
- 21世纪的net程序员怎么就这么难招聘?
21世纪的net程序员怎么就这么难招聘? 坐标湖南长沙, 主要开发SAAS版本收银系统. CSDN的战友们谁能够给我推荐一个,我给积分.
- 不破此关,难达优秀之如何修炼专业技能
目录 一:前言 二:开发者成长的14个阶段 三:学习技能 四:总结 一:前言 自己今年三年级了,学编程也算三年多了,进步不是特别大,在这条路上走了一定的弯路.这篇博文也不算是什么老司机带路, 因为我也 ...
- 优秀的程序员都在哪里 如何寻找优秀的程序员?
优秀的程序员都在哪里 这是你第一次公开招募雇员.如同大多数人一样,你会发布广告,可能也会浏览一些大型的网上论坛,然后你就收到了一吨的简历. 一份份看下去,你会想:"嗯嗯嗯,这人应该可以.&q ...
最新文章
- 第二课.多元高斯分布与其几何特征
- 《Javascript高级程序设计》读书笔记之继承
- 利用vagrant快速搭建rails开发环境
- sort it 树状数组+逆序对
- VB 一行代码的诀窍
- Eclipse启动莫名报错处理
- xp配置iis和php,XP下让IIS支持PHP
- 一则汽车CAN总线的安全渗透题目分析
- UE4/UE5 python打包Pak和Runtime加载Pak
- docker网段冲突导致主机网络异常处理
- svg动画 html,30个超棒的 SVG 动画展示【上篇】
- linux 开源视频剪辑,Linux 上的开源视频剪辑软件Olive
- 联通链:5G时代的信任链
- Minecraft我的世界开服教程
- 微软愿景:未来工作, 也可以这样,强
- 【Redis 如何实现库存扣减操作】
- C语言转义字符 转义序列(内含\ddd \xhh 含义)
- 闲话复数(1) | 不现实的虚数 i 为什么虚?它长成什么样?
- 均匀分布(Uniform distribution)
- strlen获取char*的大小问题