热门标签 | HotTags
当前位置:  开发笔记 > 开发工具 > 正文

为什么大多数程序员无法独立完成大一点儿的软件

问答网站“知乎”上有个关于程序员能力的问题引来了截然不同的回答。提问人表示疑惑:大多数程序员是否有能力独立完成一个稍显复杂的桌面软件?在此,我们挑选出两种观点中的代表性回答

问答网站“知乎”上有个关于程序员能力的问题引来了截然不同的回答。提问人表示疑惑:大多数程序员是否有能力独立完成一个稍显复杂的桌面软件?在此,我们挑选出两种观点中的代表性回答。

程序员谢旭阳表示:一个做桌面程序的程序员应该很容易做一个“稍显复杂的桌面软件”。这就好像一个做Web的程序员做一个“稍显复杂的网站”也是很容易的。当然这个“复杂”只是指功能等技术逻辑上的复杂,如在UI方面还有更高要求,那应该由专门的美工来负责,而在推广营销方面还应与市场人员配合。

而一位拥有十年开发经验的程序员给出了否定观点的回答。

程序猎人:程序员也有分工:桌面程序、网络程序、移动终端程序、大型机编程、小型机编程、单片机编程……即便同是做桌面程序开发,在不同操作系统下,代码写法也有很大不同。术业有专攻,一直钻研其他领域的人,哪怕是高手也可能对桌面程序的运行机制和构建方法不熟悉,从而无法独立完成这个任务。即使在一个专做桌面软件的公司里,也可能有大部分程序员无法独立编写一个稍显复杂的桌面软件。

“程序猎人”不仅给出了回答,还对背后的原因进行了深层次的分析。他认为,做事情兢兢业业、并且做事时肯主动动脑思考前因后果、愿意主动扩大自己工作责任范围的人总是很少,他称这类人为“主动哥”。大多数人都习惯于只做被分配的任务,并按照被吩咐的做法去做,对扩展自身工作范围和知识没有什么兴趣,仅在被分配了新的工作内容时才去学习,他称这类人为“被动哥”,并表示这个世界的大部分财富是“被动哥”创造的,大部分工作是他们完成的。他们中不乏好人、热心人,但因为求知欲的缺乏会导致他们长期保持在某一状态。

而以Windows桌面编程为例,如果一个“被动哥”被分配只需编写一些函数调用其他人开发好的API,并通过其他人写好的框架来做测试,那么他很可能在完全胜任工作的前提下不了解任何Windows桌面程序从头建立的方法。自然就不可能独立完成一个桌面软件了。从大工业生产来看,这一点对公司是有利的,因为工作的成败将不仅仅取决于某几个员工,而且随时可以替换任何一个被动哥,也就意味着随时可以找到成本更低的人才。日本很多软件公司中的程序员都是这种状况。相对来说,中国的一些看似不太成熟的公司反而好些,里面的人什么都得做,哪怕是超级被动哥也什么都会了。另一方面,主动哥往往容易得到上级的赏识,很快便从程序员升级为设计者、架构师、管理者、顾问……长此以往沉淀在程序员阶层的大多是被动哥,那么大多数程序员无法独立做出一个像样的东西也就不足为奇。

另外,这位热心网友还介绍了目前软件公司普通程序员的工作情况,以下是他的文字摘录:

大部分情况下,普通程序员并不负责设计,仅负责编写代码并进行最小限度的单元测试,同时在被要求的情况下撰写相关文档。这类程序员常常是对着详细设计书进行代码翻译工作,对于一个有思想有抱负的人来说很枯燥乏味。我曾经见到过快要达到伪代码级别的设计书。如果拿在手里的不是打印出来的纸张,随便写个宏什么的,基本都能把代码生成出来的。但也不排除设计书做的不完整或者质量低下的情况,这时候就需要向设计者发问,并承担一部分设计工作,这种情况相对会有趣一些。但对知识不丰富且没有设计经验的人来说,这项工作是个噩梦。尤其跨国协作时,要用外语探讨时,有些外语不好的人就彻底缴械了,三天两头请外语好的人吃吃喝喝的……当然还有另外的一些高级程序员,进行着分工更高层一些的工作。比如:设计师、架构师、顾问等。作为设计师,相对接近程序员一些。要把架构师定下来的东西更进一步细化,设计成程序员能实现的东西。当然对于一些小公司和小项目,以上角色互有穿插,甚至一人全兼。

作为架构师,往往要做出很多艰难的抉择——是使用这种技术还是那种、是用这种平台还是那种平台、是牺牲功能还是牺牲性能?作为顾问,其实很多真正喜欢闷头搞技术的人一不小心当了顾问之后都大惊:我这跟搞推销的有啥区别?啥时候才能让我再次打开久违的IDE(集成开发环境)或者记事本(拽点的人用Vim),敲两行代码啊。因为顾问的主要工作是研究客户的业务,并提出一个可以满足客户业务需求的IT解决方案。他们对IT技术可以说无所不知但又对任何一种都不深入。(当然也有一些超人,在完成任务的基础上自行抽时间钻研某方面技术。遇到这种人,就膜拜吧。)让普通技术人员眼花缭乱的各种名词是他们忽悠客户最好的武器。然后就是去客户现场忍着各种不爽做讲演了。

对于程序员新手如何提高开发能力,这位拥有十年开发经验的热心网友建议“做个‘主动哥’而不要做‘被动哥’”。首先,大量的实践练习绝对是必须的。而实践之外重要的一点,是多动脑思考,哪怕工作本身不需要头脑,也不要停止思考。想一想做这件事的前因后果,有什么可以改进的地方或者提高效率的地方。长此以往,经过同样的时间,你会比“被动哥”多学会很多东西,并具备很多能力。简而言之,要提高开发能力,就要做到勤奋和善于思考。




推荐阅读
  • 汇编语言:编程世界的始祖,连C语言都敬畏三分!
    当C语言还在萌芽阶段时,它首次接触到了汇编语言,并对其简洁性感到震惊。尽管汇编语言的指令极其简单,但它却是所有现代编程语言的基础,其重要性不言而喻。 ... [详细]
  • 我的读书清单(持续更新)201705311.《一千零一夜》2006(四五年级)2.《中华上下五千年》2008(初一)3.《鲁滨孙漂流记》2008(初二)4.《钢铁是怎样炼成的》20 ... [详细]
  • 1、什么是过滤器管道使用竖线(|)将两个命令隔开,竖线左边命令的输出就会作为竖线右边命令的输入。连续使用竖线表示第一个命令的输出会作为第二个命令的输入,第二个命令的输出又会作为第三个命令的输入, ... [详细]
  • Windows环境下Python和pip命令无法识别的解决方案
    本文详细介绍了在Windows操作系统中遇到Python和pip命令无法识别的问题时的解决方法,帮助初学者快速配置Python开发环境。 ... [详细]
  • Linux系统快捷键大全及使用技巧
    本文详细介绍了Linux系统中的各种快捷键,包括命令行和VIM编辑器中的常用快捷键,帮助用户提高操作效率。同时,文章还提供了关于字体配置、软件安装等方面的实用信息。 ... [详细]
  • 整理于2020年10月下旬:总结过去,展望未来Itistoughtodayandtomorrowwillbetougher.butthedayaftertomorrowisbeau ... [详细]
  • importjava.io.*;importjava.util.*;publicclass五子棋游戏{staticintm1;staticintn1;staticfinalintS ... [详细]
  • 本文详细介绍了笔记本电脑上多种实用的快捷键,包括屏幕调整、图形设置、分辨率更改、驱动更新、导航操作、音量控制及屏幕锁定等,旨在帮助用户更高效地使用笔记本电脑。 ... [详细]
  • 本文记录了在Windows 8.1系统环境下,使用IIS 8.5和Visual Studio 2013部署Orchard 1.7.2过程中遇到的问题及解决方案,包括503服务不可用错误和web.config配置错误。 ... [详细]
  • 心理学经典:《思考致富》
    《思考致富》是由美国著名成功学大师拿破仑·希尔撰写的一部重要著作,该书基于希尔长达20年的深入研究和访谈,探讨了个人成功的核心要素。书中不仅揭示了成功的关键,还提供了一系列实用的方法和策略。 ... [详细]
  • empty,isset首先都会检查变量是否存在,然后对变量值进行检测。而is_null只是直接检查变量值,是否为null,因此如果变量未定义就会出现错误!检测一个变量是否是null ... [详细]
  • 在Ubuntu 16.10 (x86) 上安装 WordPress 4.7.115
    本文介绍如何在Ubuntu 16.10 (x86) 系统上安装WordPress 4.7.115,包括下载、解压、配置等步骤,确保安装过程顺利进行。 ... [详细]
  • 如何处理PHP缺少扩展的问题
    本文将详细介绍如何解决PHP环境中缺少扩展的问题,包括检查当前环境、修改配置文件以及验证修改是否生效的具体步骤,帮助开发者更好地管理和使用PHP扩展。 ... [详细]
  • 本文详细介绍了在 CentOS 7 系统中安装 Python 3.7 的步骤,包括编译工具的安装、Python 3.7 源码的下载与编译、软链接的创建以及常见错误的处理方法。 ... [详细]
  • 构建个人多节点Linux环境(CodeSheep)
    本文介绍如何通过虚拟机搭建一个多节点的Linux环境,这对于学习、实验和项目部署都具有重要意义。文章详细讲解了网络IP设置、节点间通信等关键步骤。 ... [详细]
author-avatar
干杯随风一刀_893
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有