程序员的能力要求与工作过程

了解、入门、熟练、精通

程序员是一个门槛不高的职业,但是优秀程序员的门槛很高。用代码实现功能是一个十分容易完成的任务。自然语言的语法那么复杂,大家都能很好的组织成文,何况程序语言的那几个单词和几条简单的语法规则呢?花点时间,人人都会。一个优秀的程序员,则需要极强的抽象与概括的能力,还有优秀的逻辑分析能力,沟通和理解能力也是程序员非常重要但总是被忽略的能力;抽象概括的能力是代码简洁优美的基础,逻辑分析能力是代码高效稳定的基础,这两者也是架构能力的基石;沟通与理解能力是代码有效易用的基础。程序员通过沟通才能充分知晓并理解需求,通过理解才能知晓需求背后的本质诉求和需求边界,这样才能写出客户真正想要的代码,真正瞄准客户痛点的代码。

基础能力很重要,但是难以度量。工作这么多年,也阅读了许多简历,有些人在简历上的技能清一色的都是精通。汉语中精通是对一个人技能的最高评价吧。这么多的精通,一个月 20k 的要价不觉得低了么?技术能力永远是程序员的核心能力,上述的抽象概括、逻辑分析和沟通能力决定一个程序员在技术的路上能走多远,有些人工作十几年,技能水平可能仍然是入门,有些人可能工作一年就精通了,这折射的就是这个人的基础能力,而技能水平是易衡量的。

了解、入门、熟练、精通。

技术的四个阶段

了解表示某个人对某个技术有所了解,能说出这个技术的几个特点,比如问你了解 JAVA 吗,如果可以回答出 JAVA 是面向对象的语言,运行在 JVM 虚拟机上,具有跨平台的特点,其他点也可以,只要能知道一两个,就达到了解的水平了。入门,表示会用了,当然不是会写 hello world 了,而是了解这个技术的用法,在搜索的辅助下,能完成大部分的任务,比如用 JAVA 写多线程,处理 Exception。熟练,表示技术人员对某个技术的基本特性有深刻的理解,技能熟练度不再是业务实现的瓶颈,技术人员可以在这个技术的限制之内实现任何自己期望的结果,比如用 JAVA 写一个用户管理系统,用 JAVA 写一个后台服务,定位 CPU 过高、内存泄漏的问题。精通表示技术人员不仅对某个技术的特性有深刻的理解,对这个技术的边界也有清晰的认识,知道这个技术可以做什么,不可以做什么;知道这个技术的实现原理,能处理该技术的绝大部分问题,并有自己的经验总结。精通也意味着技术人员不仅可以用这个技术实现自己的期望,还知道实现得怎样,即这个实现存在的风险,以及风险的处理。怎样的事情需要程序员达到精通水平呢?比如用JAVA 实现一个高性能的稳定的用户管理系统和后台服务。总结下来就是:了解了,会写功能了,会写系统了,会写一个高性能高稳定性的系统了。

技术入门很容易,熟练和精通不易。照着教程,就可以入门了;写功能,几个类,几个方法,简单的抽象和逻辑分析就可以实现,沟通也相对简单;写系统则需要在系统层面进行模块的划分和逻辑过程的切分,要求更高些,沟通过程也较长;高性能高稳定性的系统,不仅要会进行模块的划分和逻辑切分,还需要会进行更加合理的模块划分,更加高效的逻辑切分,这个划分和切分不仅是系统功能的实现的基础,还是系统性能和稳定的基础。对照程序员的水平,一门技术入门是初级程序员,熟练是中级程序员,精通是高级程序员,多门技术精通就是资深程序员了。

沟通、设计、实现、检查、自测、文档

有人误会程序员的主要工作内容就是写代码。如果要做个类比,写代码就相当于餐饮店炒菜的环节,餐饮店还有计划、采购、处理……程序员的工作内容除了写代码,还包含需求的沟通,即知道自己接下来写的代码要实现什么东西;还有代码的设计,即思考接下来的代码怎么写;然后才开始写代码;写完代码还需要检查和自测试,即看看自己写得怎么样了;最后还需要写写文档,让大家知道怎么用你写的东西;有时候还要组织大家评审下,让别人知道自己完成任务了。

程序员的工作过程

写代码,或者程序员的工作的一般步骤是沟通、设计、实现、检查、自测、文档。沟通是理解需求,明白需求的核心诉求和需求的边界;设计是分解需求,进行代码结构和逻辑的设计,如果是在已有代码的基础上的开发,还需要确认当前设计对现有代码的影响,确定修改的范围;实现就是写代码。实际工作中,实现和设计有时候是交替进行的,在实现的过程中发现设计的问题,则需要返回修改设计,甚至完全推倒原来的设计。实现完成后,很多人就认为任务完成了,可以提交测试了。写完代码,检查下,自己阅读下代码,补充注释,删繁就简,这个工作是当下多一小时,未来少十小时的杠杆工作,还可以降低代码的 bug 率,提高代码可读性可维护性。自测保证代码的质量,可以从功能、性能、稳定性、并发四个方面进行。自测的内容很多,实际操作就是写完代码,跑下功能,多跑几次,几个并发一起跑个几分钟。文档一般是程序员任务的最后一个环节,也可以在之前的几个阶段积累。文档包含程序的设计文档,必要的关于功能的说明,比如服务的接口文档,功能的使用方式,还有一些必要的自测试的结论。写好文档,就可以和代码的一起交付给测试,开始代码的下一个生命周期了。

从需求的沟通,到文档的输出,是程序员开发任务的一个闭环,即代码和文档的交付是一个程序员某个任务完成的标志。单纯的代码提交仅仅是写完代码了,不意味着整个任务的完成,文档不仅是对这次任务的总结,也是这次任务质量的一个保证。当一个程序员完成文档输出,并通过了交付评审,意味着他可以开始下一个任务了。有人说,还有 bug 修复,bug 修复属于另一个流程,不属于上述开发中的一环,它应该属于测试中的一个环节。

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 158,847评论 4 362
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 67,208评论 1 292
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 108,587评论 0 243
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 43,942评论 0 205
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 52,332评论 3 287
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,587评论 1 218
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,853评论 2 312
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,568评论 0 198
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,273评论 1 242
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,542评论 2 246
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 32,033评论 1 260
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,373评论 2 253
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 33,031评论 3 236
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,073评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,830评论 0 195
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 35,628评论 2 274
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,537评论 2 269

推荐阅读更多精彩内容