优秀程序员的一种必备意识

  

  今天老爷子,带领整个提高班(全体男同胞),兴冲冲的杀向了“廊坊电视广播大学”,任务很简单,装电风扇,本来以为,四个字“轻松搞定”,但是结果却是出人意外,大相径庭!整整用了一个上午,其中苦水难以诉说。究其原因就是因为领导人素质有欠缺----全局观念。其实我感觉他们的苦处就像是是哑巴了吃黄莲---有苦说不出。也许有人本想狡辩两句,没想到自己却成了鱼缸里的鱼,想说的话很多,一开口就化成了一串省略号.......

      

   既然全局观念如此的重要,下面我就简单的阐述一下。


全局观念(Overall Viewpoint,OVV)是指一切从系统整体及其全过程出发的思想和准则,是调节系统内部个人和组织、组织和组织、上级和下级、局部和整体之间关系的行为规范。而对于具有全局观念的人则会从组织整体和长期的角度,进行考虑决策、开展工作,保证健康发展。

   

    简单说就是,是事物诸要素相互联系、相互作用的发展过程。从空间上说具有广延性,是指关于整体的问题;从时间上说具有延续性,是指关于未来的问题。

 

 


下面是全局观念的一下原则:

1、认清局势。深刻理解组织的战略目标,组织中局部与整体、长期利益与短期利益的关系,以及其他各关键因素在实现组织战略中的作用。 

2、尊重规则。有较强的法律、制度意识,尊重组织运作中的各种规则,不会为局部小利而轻易打破规则和已经建立的平衡与秩序。 

3、团结协作。倡导部门间相互支援、默契配合,共同完成组织战略目标。 

4、甘于奉献。明确局部与整体的关系,在决策时能够通盘考虑;以发展大局为重,在必要时能够勇于牺牲局部“小我”和暂时利益,为 战略实现和长远发展的大局让路。 


全局观念的等级

A-0级:工作思路清晰,重点不够突出;较能按照规章制度办事,对于战略目标理解的比较明确,并以此基础安排工作,能将集体 看成一个整体。 

A-1级:工作思路混乱,不分轻重缓急;不按规章制度办事,对集体全局的战略目标理解不够明确,通常只为自己或所在部门的利益考虑。 

A+1级:工作思路清晰,重点突出;严格按照制度办事,对企业全局的战略目标有准确的理解,并以此为出发点,安排各项工作;将看作一个整体,决策时能通盘考虑;在顾全大局,勇于奉献上,起带头表率作用。 

A+2级:从组织整体的角度考虑问题,恪守制度;对集体的战略目标了然于胸,并能有详细的实施步骤;倡导团队间精诚合作,为无私奉献自己。

对照上面的全局观念的等级,看看自己是哪一级?日后尽力去弥补自己的不足。




一个优秀的程序员必须具备全局观念。程序员的全局观念又是体现在哪里呢。


第一、团队精神和协作能力,具有工作的前瞻性
  把它作为基本素质,并不是不重要,恰恰相反,这是程序员应该具备的最基本的,也是最重要的安身立命之本。任何个人的力量都是有限的,即便如linus这样的天才,也需要通过组成强大的团队来创造奇迹,那些遍布全球的为linux写核心的高手们,没有协作精神是不可想象的。一旦进入系统的研发团队,进入商业化和产品化的开发任务,缺乏这种素质的人是不合格的。


第二、团队组织管理能力,照顾团队大局
  完成一个项目工程,需要团队的齐心协力,作为项目设计者或研发的主管人,就应当有能力最大化发挥团队的整体力量,技术管理由于其专业性质,不大同于一般的人事管理,因为这里面设计了一些技术性的指标和因素。首先是工作的量化,没有量化就很难做到合适的绩效考核,而程序量化又不是简单的代码行数可以计算的,因此要求技术管理人员需要能真正评估一个模块的复杂性和工作量。其次是对团队协作模式的调整,一般而言,程序开发的协作通常分为小组进行,小组有主程序员方式的,也有民主方式的,根据程序员之间的能力水平差距,以及根据项目研发的需求,选择合适的组队方式,并能将责权和成员的工作任务紧密结合,这样才能最大发挥团队的效率。一个代码水平高的人,未必能成为一个合格的项目研发主管,这方面的能力欠缺往往是容易被忽视的。


第三、规范化、标准化的代码编写习惯,能供团队人员研发使用
  代码的变量命名,代码内注释格式,甚至嵌套中行缩进的长度和函数间的空行数字都有明确规定,良好的编写习惯,不但有助于代码的移植和纠错,也有助于不同技术人员之间的协作。有些coding fans叫嚣高水平程序员写的代码旁人从来看不懂,这种叫嚣只能证明他们自己?根本不配自称程序员。代码具有良好的可读性,是程序员基本的素质需求。没有规范化和标准化的代码习惯,研发之间的协作是绝对不可想的。


第四、整体项目评估能力,从全局出发
  作为系统设计人员,必须能够从全局出发,对项目又整体的清醒认识,比如公司的资源配置是否合理和到位,比如工程进度安排是否能最大化体现效率又不至于无法按期完成。评估项目整体和各个模块的工作量,评估项目所需的资源,评估项目可能遇到的困难,都需要大量的经验积累,换言之,这是一种不断总结的累计才能达到的境界。在西方一些软件系统设计的带头人都是很年长的,比如40,50岁,甚至更老,他们在编码方面已经远远不如年轻人那么活络,但是就项目评估而言,他们几十年的经验积累就是最重要和宝贵的财富。中国缺这么一代程序员,主要还不是缺那种年纪的程序员,而是那种年纪的程序员基本上都是研究单位作出来的,都不是从专业的产品化软件研发作出来的,他们没有能积累那种产品化研发的经验,这也是没有办法的事情。

    上升到高一点的层面上来谈,对于我们提高班的每个人来说:这是迟早的事情,一定会发生在我们每一个人的身上,只是时间的问题而已。对于我们将来会作为产品级的架构师部门级的架构师公司级的架构师、软件工程师、高级工程师、测试工程师、项目经理、经理人等等。下面我就简单说一下产品级的架构师部门级的架构师公司级的架构师全局观念的形式,算是抛砖引玉吧!


对于产品级的架构师,他的全局观应该是协助产品经理规划产品,界定产品的范围,确定基本架构,组织开发团队高效的高质量的完成产品开发,通过各种技术管理手段保障软件架构随着生命周期一同演化,从而完成产品的技术实现。

对于部门级的架构师,他的全局观应该是协调部门中多产品的技术范畴,规划部门的基础技术架构,培训开发人员的技术技能,组建并保障技术团队的梯队化发展。

对于公司级的架构师,他的全局观应该是确保公司技术方向的正确性,探索未来的技术发展路线,在行业中巩固公司的技术地位,将技术转化为公司的核心竞争力。
总之,全局观需要的是全局而长远的考虑,站在更高的立场来分析问题解决问题。大者,站得高看得远,局者,抓住重点和根本,不争一地之失。此即我认为的架构师的大局观。


也许全局观念这种意识,真的是需要锻炼的、培养的,不是一朝一夕就能拥有的本领。用这句英文很形象描绘:Success is the sum of small efforts, repeated day in and day out. 成功就是日复一日那一点点小小努力的积累.

你可能感兴趣的:(优秀程序员的一种必备意识)