`
xiaoer_1982
  • 浏览: 1864330 次
  • 性别: Icon_minigender_2
  • 来自: 北京
文章分类
社区版块
存档分类
最新评论

为什么程序员没有成为飞行员那样体面的工作

阅读更多
为什么程序员没有成为飞行员那样体面的工作
  对很多人来说,这个标题未免有些不靠谱。但是这两个职业并非没有可比性。
早期的程序员也都是一些精英,通常是一些职业数学家,培养一个程序员的成本
并不比飞行员低多少。早期电子计算机的成本也非常高,为昂贵的计算机配置优
秀的程序员是情理之中的事情。
  随着摩尔定律的不断应验,计算机的成本越来越低,界面也变得越来越好。
似乎程序员地位的下降是理所当然的事情。但是笔者认为,这并非是程序员失势
的根本原因,而是软件工业的功利性造成的。下文中提到的飞行员,都是指战斗
机飞行员。
  驾驭比空气重的飞行器,可能是最有挑战的工作之一。培养一个飞行员需要
大量的时间和金钱,而且需要飞行员本身具有非常高的反射神经和身体素质。而
且,优秀飞行员和菜鸟飞行员的差距非常巨大——在二战中,一个优秀的飞行员
可以击落数十架敌机,有的王牌飞行员的纪录甚至达到了三位数。
  编程并不比驾驶飞机简单多少,也许一个小学生都能写出 hello world,但是
一个优秀的程序员需要掌握许多专业技能。好的程序员需要非常好的逻辑思维能
力和应用数学功底,同时还需要手指具有非常好的灵活性。一个优秀的程序员敲
击键盘的速度并不会比文字录入员慢多少。高级程序员能完成的事情对于初级程
序员很可能是不完成的,或者需要的时间超过了一两个数量级(或者需要初级程
序员成长为高级程序员)。
  市面上可以买到一打的模拟飞行软件和五花八门的飞行摇杆。此外,很多人
都可以负担遥控飞机的价码,能够远程控制真正的飞行器。驾驶真实的飞机并不
会比编程有趣,大多数时候仅仅是从一点到另一点,即便是战斗机驾驶员,也不
过是在视距外用导弹锁定敌人。但是飞行员在大众眼中是一种非常有传奇色彩的
职业,毕竟有无数的小说、诗歌和电影谱写了飞行员的传奇。
  市面上充斥着各种编程指南,但是并没有什么类似于模拟编程软件这样的东
西。在大众眼中的程序员几乎不存在,他们所熟知的无非是米特尼克这样的肥胖
的黑客。而在中国,程序员几乎成了高科技民工的代名词。
  飞行员从来不是孤身奋战的,维持一个飞行员需要很多地勤人员。飞行员需要
了解自己的飞行器,但是他们并不需要自己维修飞行器。飞行器很可能是世界上最
复杂的一些电子机械混合体,只有资深的工程师可以维修这样的东西。此外,为了
实施飞行任务,飞行员在执行任务时需要地面的指挥,还需要地面雷达站等单位提
供数据链支持。一架航空母舰上面有数千人,飞行员不过百数人。
  程序员就没有那么幸运了。有人说程序员像一些孤独的骑士,但是笔者认为这
个比喻并不恰当——骑士还有随从和一个所属的组织。程序员似乎是全知全能的,
他们需要自己安装开发软件,学习各种奇怪的软件,撰写文档,编制和调试程序。
我很少看到程序员向他所在公司的信息专家(IT Specialist)寻求帮助,反过来的情
况倒是很多。笔者认为,正是因为缺乏分工,制约了程序员的才华。如果把他们当
作飞行员,那么他们不得不自己制定飞行方案,用简陋的工具建造和修理飞行器,
最后还需要承担一切责任。
  每个飞行员都是可以被替换的,任何一个飞行员都可以完成给定的任务。
但是,从某种角度上来看,每个飞行员都是独一无二的,是不可已被替代的。
空军对飞行员的重视远远超过了对飞行器的重视,因为他们很清楚,飞机可以按
计划大批量地生产,但是飞行员不能。
  严格的软件方法学希望把程序员变成流水线上的工人,认为只要有严格的管理
手段和工作流程,程序员可以成为一些可以被替换的“零件”。正因为如此,软件工
程中出现了所谓的软件架构师,无非是认为一个好的空军指挥官可以让蹩脚的飞行
员使用高性能的飞机就能取得制空权。幸运的是,XP 一类的先进方法学把程序员重
新推向了前台,并且提出了结对编程的概念——空军采用长机、僚机组合已经有几
十年历史了。
  飞行员总是可以享受新技术带来的便利,例如彩色的 HUD 和头盔瞄准仪等。
当然,他们永远可以信赖自己的操纵杆,无论它是电传控制、液压控制还是机械控
制的。总的来说,虽然飞行员需要面对非常复杂的输入设备,但是它们都是被精心
设计的。这些输入设备可以让飞行员在最短的时间内完成对突发事件的响应。决不
会有一个飞行员依赖层次化的用户菜单或者用户手册。
  程序员则要悲惨得多,他们至今还在使用原始的输入设备。程序员依赖一种为
了减缓输入速度而发明的键盘布局,或者说臭名昭著的 QWERTY 键盘。从某种程
度上说,键盘这种设备比驾驶舱中的按钮恶劣的得多,因为上面的每个键都是类似
的,没有任何特别的提示和保护装置。相当一部分程序员在纯文本编辑器中编写代
码,而且其中一部分程序员可能是程序员中的精英。虽然现代的 emacs 和 vim 已
经能根据文法分析用醒目的色彩提示不同的符号的含义,但是它们并不比七八十年
代的文本编辑器先进多少。很多人认为一个程序员选择 emacs 这种原始的编辑器是
因为其独立精神,但是笔者认为是因为所谓的集成开发环境通常还不如这些纯文本
编辑器好用。现代的集成开发环境提供了很多优秀的特性,遗憾的是为了应用这些
特性,程序员不得不经常在键盘和鼠标这两个截然不同的输入设备之间切换。至少
目前为止,一个高级程序员使用简陋的 notebook 也比使用集成开发环境的初级程
序员强很多。至少对笔者而言,使用集成开发环境并不能提高自己的开发效率。我
见过很多优秀的程序员在开发时身边都放着许多厚厚的参考书,幕上也全都是各种
形式的开发文档。程序员经常在锁定目标之后再去查询手册,了解如何才能将导弹
发射出去。
  正因为这样,笔者认为有必要改变现状。正因为此,笔者认为最重要的是程序
员需要像飞行员一样进行思考,而像飞行员一样思考需要像飞行员一样工作,而这
只能从人机界面入手。作为一个实践者,笔者已经买了由著名的 Logitech 生产的
Extreme 3D Pro 飞行摇杆,琢磨如何使用它进行体面的编程工作。

本文来源:http://nullgate.spaces.msn.com/Blog/cns!30F50C1BF7F56351!228.entry

分享到:
评论

相关推荐

    程序员-工作日志示例

    工作日志是程序员日常工作中不可或缺的一部分,它可以帮助程序员更好地管理自己的时间、提高工作效率、记录工作进度、总结工作经验等。本文档是一个程序员工作日志示例,旨在帮助程序员更好地管理自己的工作,提高...

    程序员工作经验之谈总结工作经验

    作为一名程序员,工作经验的价值在于不断积累和提升个人技能。在面试过程中,面试官通常会通过一些基础问题来评估应聘者的编程功底,例如询问冒泡排序等基础算法。这并不是为了测试候选人是否知道这个特定的算法,...

    程序员转正述职报告 程序员转正述职工作规划.docx

    * 程序员转正述职报告的主要内容包括职业规划、职业发展和工作总结 * 程序员转正述职报告的目的是为了总结试用期的工作经验和学习体验,并对未来的职业发展进行规划 二、java 开发语言和环境 * java 开发语言是...

    2021年前端程序员的年终工作总结.docx

    8. 知识积累:前端程序员通过一年来的学习和锻炼,积累了许多的知识和经验,为自己的未来工作和学习奠定了坚实的基础。 9. 个人经验:前端程序员通过对自己的总结,明白了自己的经验和收获,也明白了自己的不足之处...

    为什么程序员是一个伟大的职业

    首先,创新是程序员工作的重要组成部分。在软件开发领域,创新不仅仅是艺术和音乐的专利。程序员通过创建前所未有的功能和解决方案,推动技术的边界。面对复杂的问题,他们需要运用创造性思维,寻找最佳的结构和细节...

    程序员项目交接文档

    程序员项目交接文档概要 IT 项目交接文档概要是程序员在项目交接过程中的重要文件,它对项目的开发、测试和维护起着至关重要的作用。本文档概要将对程序员项目交接文档的主要内容进行概要介绍。 人事模块是程序员...

    程序员如何成为大牛

    如何让自己成为大牛,也许这篇文章改变你以后的人生。

    程序员汇报工作必备PPT模板

    1. **模板类型**:“程序员汇报工作必备PPT模板”是一款专为程序员设计的工作汇报模板,适用于各类会议、年终总结等场合。 2. **设计特点**:该模板采用简约风格,运用了四种颜色进行微立体设计,使得整体视觉效果...

    程序员工作日报

    从这份工作日报中,我们不仅看到了一个程序员日常学习和工作的缩影,也深入理解了WCF作为现代服务通信框架的重要性和其在ASP.NET环境下的应用方式。同时,JavaScript中的Array对象及其方法push()和shift()的介绍,为...

    《Java程序员》

    从生存、制胜、发展三个方面入手,为大家展示出程序员求职与工作的一幅3D全景图像。本书中既有在公司中的生存技巧,又有高手达人的进阶策略,既有求职攻略的按图索骥,又有入职后生产环境的破解揭秘。 本书中浓缩了...

    为什么你选择成为程序员.docx

    ### 为什么选择成为程序员 #### 一、概述 选择成为一名程序员的原因因人而异,有的人是因为对编程和技术的热爱,有的人则是出于对未来职业发展的考量。无论是哪种原因,选择成为程序员都意味着进入了一个充满无限...

    什么样的人适合做程序员?程序员应该具有什么样的素质程序员四大禁忌

    那么,什么样的人适合成为程序员呢?程序员应具备哪些素质?同时,又有哪些禁忌需要避免呢? 首先,程序员需要耐得住寂寞。编程工作往往需要长时间集中精力,沉浸在代码的世界里,这需要一种静心专注的能力。静不下...

    10x程序员工作法笔记.xmind

    10x程序员工作法笔记

    程序员的工作经验分享大合集+个人经验+创业血泪史+工作几年的一些感悟+程序员如何高效学习

    个人独家收藏,小编愿意在这里和大家分享程序员的工作经验。 一位程序员工作10年总结的13个忠告+一名程序员的十年工作经历+程序员(工作十几年)的创业血泪史,万字长文,与君共勉!+程序员工作几年的一些感悟+...

    程序员述职报告工作总结模版

    标题中的“程序员述职报告工作总结模版”提示我们,本文将主要关注程序员在工作中进行述职报告和工作总结的关键要点。述职报告是员工向管理层汇报工作成果、分析问题和提出改进方案的重要方式,而工作总结则是个人对...

    程序员个人工作自我评价总结.doc

    【程序员个人工作自我评价总结】 作为一名程序员,个人工作评价与总结是评估自身职业发展和技能提升的重要环节。从给出的部分内容来看,这位程序员在自我评价中涵盖了以下几个关键知识点: 1. **快速适应与学习...

    Python-程序员找工作黑名单换工作和当技术合伙人需谨慎啊

    标题“Python-程序员找工作黑名单换工作和当技术合伙人需谨慎啊”揭示了这一主题,它提醒我们,在职业发展过程中,不仅要注意哪些公司可能列入程序员的“黑名单”,而且在考虑换工作或成为技术合伙人时也要格外小心...

    程序员专用 编程输入法

    标题中的“程序员专用编程输入法”指的是专门为程序员设计的特殊输入法工具,旨在提升编码效率。这类输入法通常具有以下特点: 1. **快捷代码输入**:程序员输入法能够通过快捷键、组合键或者自定义短语来快速输入...

    UNIX程序员手册

    《UNIX程序员手册》是一部经典的技术文献,为程序员和系统管理员提供了深入理解UNIX操作系统的必备知识。手册分为多个部分,通常包括“1”、“2”和“3”,分别涵盖不同的主题。 1. 第一部分(通常标记为"UNIX...

    程序员的工作总结-述职报告

    【程序员的工作总结-述职报告】 在程序员的工作中,总结与述职报告是个人成长与团队协作的重要环节。以下是对这份报告的详细解读: 1. **工程部PDA运维系统** - 这个系统包含了三个主要功能模块:工单管理、消息...

Global site tag (gtag.js) - Google Analytics