程序员的进阶之路

原文链接: https://dsx2016.com/?p=719

微信公众号: 大师兄2016

程序员的进阶之路_第1张图片

非器非术非道,仅聊聊一些方向.

分阶

很多事物都可以按进度和阶段来划分,如程序员的小白,初级,中级和高级.

但是这种层次之分也有内外之别.

公司招聘的中高级职位取决于业务的能力需求和薪水发放的高低,是市场的宏观定义.

个人的中高级之分在于自我的能力进阶,来源于技术但不仅仅限于技术,有多个维度综合衡量.

先有分阶,才有进阶.

学会分阶,找到自己当前的定位,了解自己的长处和不足,才有下一步.

高级

高级,优秀之类的词汇是一个很抽象的概念.

以可量化的事物来描述,一些描述高级程序员的答案:

  • 工作经验5年以上
  • 可以快速写出一些常见的算法
  • 能独立开发框架和库
  • 出版过技术图书
  • 带领团队完成项目

一次面试的流程不足以表现高级所在,一次协作的失误也不能表明才不配位.

共同

层级之分为纵,差异之别为横.

不论程序员的职位和技术栈如何,总有一些共同的地方.

就如前端开发和后端开发:

  • 在版本管理和协作上,GitSvn是必知必会,其他的不在考虑范围.
  • debug调试和面向搜索引擎,定位和排除问题也是技术能力之一.
  • 大到硬件,鼠标/键盘/电脑椅,小到细节,文档/注释/命名,还有周报和会议.

这些能力是基础.

即便是基础,可调节的空间仍然造成十分巨大的差异.

调试能力80分的人工作效率往往是60分人的几倍甚至十几倍.

其他的以此类推.

但是在纵向扩展上,一般到80分就要考虑适可而止,因为往后加1分,付出的时间精力和收获不一定成正比.

共通

只学习一门语言可以胜任常规业务的需求,多学一些语言,有助于扩展思维的边界.

但凡你了解过两门以上的语言,你就会发现,语言之间有很多共通的地方.

汉语和英语,pythonjava,不外如是.

注意,是通,不是同.

如编程语言,它们共通的地方:

  • 都有变量,函数,或者类
  • 都有数据类型,字符串,布尔型,数字等
  • 都有数据结构,堆栈,队列,数组,链表等
  • 都有设计模式和算法

甚至于一些常见的条件控制,循环语句,逻辑运算,模块等都是大同小异.

了解原理和思想后,几乎只剩下语法不同,或者语言独有特性的差异.

进阶

在进行纵横扩展分析后,进阶方向仍然比较模糊.

站在高处的人一眼就能全览低处的风景,但是低处望高处,通常是一叶障目,难易窥探全貌.

回到可量化的高级,什么是别人具备而你没有的.

以下是一些临时的整理:

  • 面向面试编程,在拥有业务能力的基础上,好好的表达自己,内要高级,外也要高职高薪,市场定义很重要.
  • 面向技术编程,语言的学习很抽象,也很简单,按部就班即可,从编程基础到设计模式再到数据结构和算法,主要核心在于了解和学会.
  • 面向业务编程,学会和会用是两个场景,业务远比学习要复杂的多,打通面试和学习两关,才能开始业务,如何学以致用是关键.
  • 面向效率编程,上三个是基础,现在才是进阶,快是企业的制胜之道,也是个人的工作之道,在90%的层面,如何更快是一个大方向.
  • 面向质量编程,效率和质量有时候互斥,有时候互联,这才是最考验技术能力的地方,一个代码片段既可以快又好,也可以慢又差.

没写过框架和库,没了解设计模式就不是高级开发了吗?

会数据结构和算法就一定是高级开发吗?

高级开发工程师频繁使用if else之类的就是才不配位吗?

凡是以点概面的,请慎而远之.

量化

生活中很难证明你的能力或者自我了解.

刷题不代表什么,刷的多了一样也全知全会.

面试不代表什么,面向面试编程的多了去.

工作不代表什么,完成任务又不是秀代码.

一些临时的整理:

  • 工作年限,时间越久,越是身经百战,时间长久本身就是一个筛选值,大公司履历和职位高低也是筛选值.
  • 开源项目,内部的代码不方便展示,但是开源的代码面向全世界,不论是自己开发,还是参与知名开源项目,高质量代码是基础,基于github的时间线,也是不同时期技能能力的佐证记录.
  • 知名博客和出版图书,出版社是一个筛选值,销量取决于读者,也是一个筛选值,博客的浏览量10万+,基于类似公众号的时间也是一个筛选值,书籍是知识体系系统,博客是技术成长路径.

能够量化和分析的,一定是基于分享和面向公众的,还有依赖于第三方作为筛选值.

  • 基于时间线,github和公众号的发布时间无法更改,每一步记录不同时间的变化,展示的是代码层面的细粒度.
  • 基于市场数据,工作年限,职位薪水,公司层级,产品量级,都是基于商场如战场的真实数据.
  • 基于平台,出版社,开源组织,技术大会,在线教育,新媒体等,知名品牌都有会自己的一套筛选机制.

外有一套,内有一道.

清楚的了解内外定位和进阶,平衡取舍之道,才是王道.

你可能感兴趣的:(javascript,前端,css,html5,node.js)