找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索

[ 职业成长 ] 【观点】程序员作为一种职业,它的核心技能是什么?

2014-07-01 22:00| 发布者: zhouy | 查看: 1297 | 收藏

摘要: 守望者:对于程序员这个职业,如何才能做好呢?那么首先就要知道做一个优秀程序员难度在哪里?换句话说也就是程序员作为一种职业,它的核心技能是什么?我发觉一个现象越是“厉害”的程序员耍的语言都很”低级“。是 ...

程序员作为一种职业,它的核心技能是什么?我的看法:程序员的核心技能是短期记忆力 (short term memory [wikipedia] - Short-term memory is the capacity for holding a small amount of information in mind in an active, readily available state for a short period of time.),这也是区别一个优秀程序员和普通程序员的重要指标。


程序员需要学习很多新东西:程序语言的原理、语法、基本库和框架的了解,以及领域知识等等;还要在工作中积累包括程序架构上、工程上、工作方法上的各种经验。但是我觉得这些都不是核心,如果把一个程序员比作一台计算机,上面提到的东西都是数据,都是可以录入的(或许录入速度有快慢之分);而衡量一台计算机的优劣,真正关键的是处理能力的参数,例如处理器的主频和内存的大小等等,这些硬件指标映射到程序员身上代表着什么呢?对于程序员来说,一定有一些核心的思维能力起到决定性作用,换句话说,如果把智商看作一个多维向量,其中一定有某一个或一些维度是对程序员是至关重要的。


程序员在编写代码的时候,要在头脑中构建好一个程序的模型,包括数据结构和算法,再把这个模型转化成代码。在此过程中,这个模型一直存于头脑的短期记忆中,并且可能需要不时地刷新。一旦受到外界干扰,这个模型就可能消失,必须花很大力气重新加载,有人把这个模型比作纸牌屋,因为它实在太容易坍塌。所以程序员编程的时候都很怕干扰,因为一旦受到中断,再次恢复原来的工作效率需要一段预热的时间。更加困难的地方在于,这个模型并不是静态的,它是会随时间演变的,程序员要经常思考程序执行的过程(用自己的大脑扮演CPU的角色),根据不同的条件对模型作出变更。编程序这个脑力劳动,其实就是在大脑的易失存储中,维护和完善一个具有时间和空间维度的模型的过程。


所以我猜想,一个合格的程序员和其他脑力劳动者的一个主要区别可能就在短期记忆这一块:或者程序员的短期记忆空间较大(一般人是 7+2/-2样东西,但程序员有时需要把一个庞大的系统放在脑子里),或者短期记忆维持时间较长(写代码常常是连续多个小时的工作,在这样长的时间里在脑中维持一个模型是很耗费能量的),或者这块记忆体的读写速率高(优秀的程序员想到一个问题时,能很快定位到程序模型中的具体位置)。当然,这些纯属猜测,需要心理学的实验来证明。


我最近读了Coders At Work,这是一本国际上最顶尖的15位程序员(或者叫大师)的访谈录,看完以后,我发现这些人有一个特点,就是都对软件工程的某些方法(比如设计模式等)嗤之以鼻。我觉得这不是巧合,软件工程的一些方法就是为了让各种水平参差不齐的的程序员都能理解复杂的代码,以便他们能在一个软件项目中合作。我们采用各种抽象方法(面向对象、设计模式等等)来降低每个代码单位的复杂性,就是为了让每一个这样的单位(类,对象等)都能装载到我们的短期记忆中而不溢出。而对于那些大师,这些抽象毫无必要,他们能把一大块程序载入大脑,理解得清清楚楚,摆弄地游刃有余。在我看来,他们和普通人的差异就在这里。


当然,也有人说过脑子笨的程序员才能成为好程序员,因为他们短期记忆小,所以不会写那种上百行的函数(spaggetti code),代码的模块性自然都比较好。这里的“好程序员”,应该指的是软件项目里的模范代码工人,而不是Coders At Work中那些天赋异秉的大神们,而软件业要发展,可能还是要靠这些有着超强存储能力的大脑吧。


感悟:对于目前的程序员来说,通过语言衡量一个程序员的优劣我认为不太合理,本质而言现在的系统都是从产品线的思路出发,从这个角度出发,要获得良好的扩展性,并发性,易操作的产品不是从语言角度可以解决的,这样才有架构师的价值.对于java程序员一样,对于复杂系统一样要考虑并发,数据结构和算法。不是写出来的代码很危险,很可能随时OOM等等。对于c程序员一般的应用级别开发难度也不太复杂。但是对于构建复杂系统仅仅c或则java都不够,对于这样的发展,我觉得可以选择一个喜欢的语言作为钻研的对象,其他的做辅助。比如java很多不懂c,导致学习jdk源码到jni层次就卡住了,导致很多基本类都没有搞懂,在并发环境下很危险。比如OOM异常.同样c的程序员太关注底层,一些思维型的框架无法涉及。就像文章的观点程序员优劣在于思维能力并且需要有承上启下一种思维意识.这个才是本质。


本文由守望者watchmen收集整理,部分内容源于网络。本文仅代表作者个人观点,不代表守望者的本意。如有违法侵权内容,请提交到守望者管理员处,立即处理。

会员评论  

已有0参与评论

赞过此文的人

推荐阅读

[守望者 算法视频]01_数据存储(链表与数组)
[守望者 算法视频]01_数据存储(链表与
本章重点介绍数据的在计算机的存储方式 :连续存储(数组)与链式存储,同时
[守望者   java初中级视频]22_javaNIO,AIO编程
[守望者 java初中级视频]22_javaNIO,
内容简介:本课程介绍阻塞,非阻塞,同步和异步的基本概念,介绍javaNIO,AIO
[守望者   java初中级视频]00_java初中级课程学习导航
[守望者 java初中级视频]00_java初中
内容简介:全面贾少这套视频课程学习需要具备的理论基础,以及适合的学习人群
【守望者 linux项目】linux下的FTP服务器与客户端,作者 灯下野狐 ...
【守望者 linux项目】linux下的FTP服务
本项目是一个完整的FTP服务器及FTP客户端设计示例,对于需要学习网络编程项目
【守望者 游戏项目】基于cocos2d-x的跑酷游戏项目教程
【守望者 游戏项目】基于cocos2d-x的跑
Cocos2d-x跑酷游戏项目教程Cocos2d-x跑酷游戏项目教程cocos2d-x特性cocos2
【守望者 linux项目】mini WEB服务器设计
【守望者 linux项目】mini WEB服务器设
以下是曾经Watchmen一个朋友学习网络编程时设计的一个简单的MiniWEB服务器。
【守望者 观点】智能路由和Wi-Fi探针是一对好基友
【守望者 观点】智能路由和Wi-Fi探针是
智能路由与Wifi探针可以收集用户行为,同时可以收集用户MAC地址,还可以跟踪
[守望者 linux视频]01_开发工具与开发平台
[守望者 linux视频]01_开发工具与开发
本课主要介绍gcc,gdb等系列开发工具,开始编写程序之旅。要求理解Linux开发平
[守望者 算法视频]08_数据查找_hash算法
[守望者 算法视频]08_数据查找_hash算
守望者:普通逐个查找O(n),组织方式可以无序的数组或者普通链表。已经排序的
【解读】什么样性格的人会被夸性格好
【解读】什么样性格的人会被夸性格好
守望者:性格决定命令。好的性格意识着给别人面子,能接受别人装逼,而且以上
[守望者 linux视频]02 进程内存管理与valgrind的使用
[守望者 linux视频]02 进程内存管理与v
本课主要介绍Linux可执行文件与进程内存结构, Linux进程结构及内存申请与释放
[守望者 C和指针]11_高级指针_C_面向对象
[守望者 C和指针]11_高级指针_C_面向对
(1) 彻底解决指针、取地址后的类型问题。(2) 回调函数示例。
【观点】闲聊阿里“996",全集团ALL IN无线策略及加班之意义 ...
【观点】闲聊阿里“996",全集团ALL IN
守望者:几乎的所有的员工都不喜欢8小时之外的工作,而几乎所有的老板都期望
【守望者 观点】你是哪种人?一个能看穿你的人性和欲望的测试 ...
【守望者 观点】你是哪种人?一个能看
守望者:这个心理测验来自西方,是与人潜意识有关。我10多年前认识个朋友,从
【守望者 Linux项目】二阶段提交应用项目(Two-phase commit protocol )2PC 高并发 . ...
【守望者 Linux项目】二阶段提交应用项
背景:以下是watchmen曾经编写的一个二阶段提交银行系统的项目。这个项目源于

行业聚焦  面试交流  职位推荐  开发视频   技术交流  腾讯微博  新浪微博

友情链接:课课家教育  阿里云  鲜果  W3Cfuns前端网  中国企业家  环球企业家  投资界  传媒梦工场  MSN中文网  Android开发者社区  cnbeta  投资中国网  又拍云存储  美通说传播  IT茶馆  网商在线  商业评论网  TechOrange  IT时代周刊  3W创新传媒  开源中国社区  二维工坊  Iconfans  推酷  智能电视网  FreeBuf黑客与极客  财经网  DoNews  凤凰财经  新财富  eoe移动开发者社区  i黑马  网易科技  新浪科技  搜狐IT  创业家  创业邦  腾讯财经  福布斯中文网  天下网商  TechWeb  雷锋网  新浪创业  和讯科技  品途O2O  极客公园  艾瑞网  抽屉新热榜  卖家网  人民网通信频道  拉勾网  创新派  简单云主机  

手机版|黑名单|守望者在线 在线教育 linux 高级程序设计 C/C++ 大数据 ( 蜀ICP备14029946号

成都守望者科技有限公司 © 2013-2016 All Rights Reserved