程序员(英文Programmer)是从事程序开发、程序维护的专业人员,别名“程序猿”“码农”。[1][2]
程序员职业群体的发展与信息技术革命息息相关,其兴起和发展历程展现了科技时代下职业形态的演变与变迁。截止2018年统计数据显示程序员群体有以下显著特征:性别构成以男性为主、年龄结构上以年轻化为特点、集中在中国国内一线城市及互联网产业发展迅猛的城市、收入水平较高。[3]一般将程序员分为程序设计人员和程序编码人员,但在中国两者的界限并不非常清楚。根据工作内容的繁简难易、轻重大小及所需资格,程序员可分为初级程序员、中级程序员和高级程序员。[4]10月24日被称为“程序员节”或“码农节”,[5]这个节日的意义之一是为了让社会关注程序员们的身心健康以及各项权益,从而促进互联网领域的健康发展。[6]
随着年龄增长,程序员可能会面临生理机能上思维敏锐度和记忆力的自然衰退,同时,由于互联网行业的快速发展和工作强度特性,程序员这个职业面临年龄、自身需要不断学习和职场晋升的挑战。[7][8]
定义
程序员(英文Programmer)指的是一种职业,一个群体,一个以程序的设计,开发等工作为主的新兴职业群体。[3]
在职业分工上,尽管存在程序设计人员与程序编码人员的传统区分,但在实际工作中,尤其是在中国的软件行业中,这两类角色的职责往往相互交融。[1]
职责使命
程序员不仅是各类应用程序背后的驱动力量,更是推动数字技术落地、塑造人们数字生活体验的关键群体。[9]
工作范围
程序员的工作范围广泛,从基础的软件开发、测试,到高级的系统架构设计、性能优化,再到新兴的人工智能算法开发、云计算技术应用等,[9]具体有开发、设计、运维、运营和内容等。[4]
职业定位
程序员的角色并不仅仅局限于编写代码,他们还需要具备一系列综合能力,如沟通、项目管理、问题反思、人才培养和团队协作等,许多程序员在职业生涯中会选择不同路径,既可以沿着专家路线不断提升技术层级,也可转向管理岗位,通过领导团队创造更大业务价值。[9]
从业规模
程序员作为一个全球范围内庞大且不断壮大的职业群体,其从业规模随着信息技术行业的快速发展而持续扩大。根据工信部数据显示,截至2020年底,中国软件业从业人数为698 万人。GitHub数据显示,2021年中国开发者规模达755万。[10]
起源
第一位程序员是爱达·奥古斯塔·拉夫拉斯伯爵夫人(Ada Augusta Lovelace,1815~1852),1842年爱达在剑桥大学帮助巴贝奇研究分析机,并给予巴贝奇极大的鼓舞。爱达根据巴贝奇的理论设计并改正其中的错误,建议用二进制存储取代原设计的十进制存储。她指出分析机可以像雅各织布机一样进行编程,并发现了进行程序设计(Pragram design)和编程(Programming)的基本要素,还为某些计算开发了一些指令,例如可以重复使用某些穿孔卡片,即现代的“循环"程序和“子程序”。由于她在程序设计上的开创性工作,被誉为是世界上第一位程序员。[11]
后来有一种新语言以Ada的名字命名,这也就是 Ada 语言的来历。[11]
发展
20世纪中叶,随着计算机技术的发展,首台电子计算机ENIAC诞生,科研人员利用ENIAC编写了复杂的指令序列来进行计算任务,标志着程序员职业的初步形态。[12]随着计算机技术的不断进步,高级编程语言的出现极大地简化了程序设计的过程。FORTRAN、COBOL、LISP和C等语言的发明,使得更多非硬件专家也能参与到编程工作中来。到了20世纪60年代至70年代,随着小型计算机和微处理器的普及,程序员群体进一步扩大,并开始专业化分工。[13]
伴随80年代个人计算机和90年代互联网的兴起,程序员的角色变得更加多元化和关键。在这个阶段,操作系统、数据库管理系统、Web技术和移动应用等领域得到了飞速发展,产生了Java、Python、C++、JavaScript等广泛应用的编程语言,程序员不再仅仅局限于大型组织内部,越来越多的独立开发者和创业公司在软件行业崭露头角。[13]
现状
程序员作为一个职业群体,其崛起与发展与信息科技的快速演进密切相关。随着科技时代的推进,特别是在全球范围内逐渐形成的“全民编码”文化现象中,程序员这一群体规模得到显著提升。例如,在美国,自2017年12月起,已有约两万名教师在幼儿园至十二年级阶段开展了编程课程教学,全民代码知识的普及使得编代码迅速普及。[3]
进入21世纪,云计算、大数据、人工智能和物联网等新兴技术领域的崛起,催生了更多种类的程序员职位,如数据科学家、机器学习工程师、全栈开发者等。与此同时,开源社区的壮大和敏捷开发理念的推广,改变了程序员的工作方式和协作模式,促进了全球范围内的技术共享和快速迭代。[14][15]
职业特点
截止2018年统计数据显示程序员群体呈现出以下特征:
性别构成
程序员群体主要以男性为主,女性极少。一项调查揭示,程序员群体中男性与女性的比例接近12:1。[3]
年龄结构
程序员群体以年轻化为特点,35岁以下占据主导地位。大约半数的程序员年龄分布在25至29岁区间内,而35岁以上的程序员占比不足一成。[3]
地域分布
公司属性
程序员就业的主要载体为民营企业。大部分程序员在民营企业任职,自由职业者的占比接近一成,国有企业中的程序员比例不足10%。[3]
编程语言技能
收入水平
程序员普遍享有较高的薪资待遇。大部分程序员年薪位于9至30万元区间,平均月薪超过1万元,相较于其他行业薪酬水平明显偏高;年薪达到40万元以上的程序员,其平均年龄约为36岁。[3]
按工作繁简难易
根据工作内容的繁简难易、轻重大小及所需资格,程序员可分为初级程序员、中级程序员和高级程序员。[4]高级程序员工作是把文字描述的需求说明书变成流程图,判断是否分叉,框图描述后,变成概要设计说明书。中级程序员把概要说明书变成详细说明书,最后再由初级程序员把详细的说明书变成一行行的程序。[16]
按工作内容
程序员根据工作内容的不同,大概分为四种类型:第一种是一线的开发工程师,也就是人们常说的‘码农’,他们的工作主要以执行为主,完成功能的开发即可;第二种是架构师,除了执行外,还要理解业务、技术,能抽象出既满足业务又符合技术逻辑的架构;第三种是技术专家,技术专家一般会在相关领域有较深的积累和经验,例如人工智能(AI)、大数据等,具有一定的深度,能解决业务痛点、难点甚至是行业痛点、难点问题。第四种是技术管理,在技术深度的基础上拥有更宏观的视野,把握和理解公司战略,结合实际带领团队找到对应的业务技术方向。[17]
正确理解计算机语言
详尽研读相关的技术文档,包括但不限于命令的使用手册、函数的详细说明、类的参考指南等,以确保对各类编程元素的功能与应用场景有清晰的认识;深入剖析每一个“命令”或指令的内在功能及其执行后预期的结果,通过深入研究其工作机理,实现对其精确把握;借助大量的实践操作来强化记忆和深化理解,通过编写代码并观察运行效果,将理论知识转化为实践经验;不断充实计算机基础知识,包括学习计算机组成原理、操作系统、编译原理、数据结构、数据库原理等相关领域,这些基础理论知识能够提供一个宏观且深入的视角,帮助开发者准确理解和应用各种编程命令;定期进行知识回顾与整合,形成系统化的认知框架,逐步全面而熟练地掌握目标编程语言;充分利用开发环境提供的各种随机参考资料,积极学习关于开发环境的各项知识和技术,以便更好地运用该环境进行高效编程与调试。[18]
编程规范化
格式层面:确保代码具有层次清晰的外观。利用空行和缩进来划分不同的逻辑部分,增强视觉上的区分度。同时,通过对齐方式,使程序结构更易于识别和理解,尤其对于顺序相关的语句或语句块,应按执行顺序排列,并可适当标注序号。强调函数的入口和出口一致性,避免滥用goto指令,仅在特定场景下合理使用。结构层面:追求程序结构的简洁明了。设计时选用恰当且精炼的控制结构,关联性强的变量应当紧邻放置。各个函数应具备明确的功能描述、参数列表、返回值含义及必要的使用说明。遵循合理的顺序组织算法流程,并为关键的变量和常量添加注释,特别是首次出现且含义不直观的变量以及可能引起误解的常量。注释方面:注释应视为详细设计不可或缺的部分,包含函数的功能描述、参数、返回值、作用范围以及内部语句块的功能和执行顺序。此外,还需对复杂算法进行说明,并对所有变量和特殊含义的常量加以注解。命名规范:建立统一的命名规则以提升代码可读性及调试效率。推荐采用匈牙利命名法(动作-对象结构),语法层面:确保代码无歧义且易于理解。充分理解和严格遵循所用编程语言的语法规则,避免臆测和随意使用。优先选择简单的语法结构而非复杂的,使用单层语句而非复合语句,并通过括号明确表达式组成部分和运算优先级,同时用花括号{}包围紧密相关的语句块。函数调用:正确理解和使用函数。明确函数的功能、返回值意义、参数要求(类型、是否为输入/输出参数)、以及涉及的内存、文件、句柄等资源管理。在函数调用时,务必正确传递参数、有效使用返回值,并妥善处理函数调用过程中所分配的资源,如适时释放内存、关闭文件或释放句柄等。[18]
会搭建良好的程序架构
宏观层次布局明确:在高层次设计上,程序架构应清晰呈现出B/S架构、三层架构或多层架构的特点,每一层级的功能定位明确,便于维护和扩展。模块间关系简洁:不论是层次之间还是模块之间的相互依赖和交互应尽可能简化,减少耦合度,提高模块独立性,确保模块间的接口清晰,便于组装和复用。流程控制有序:从整体架构到局部模块的设计,均需体现程序流程的基本控制结构,即顺序执行、条件选择和循环迭代,确保程序逻辑连贯,易于理解和追踪。调用与资源利用均衡对称:在功能调用(如读/写操作、请求/响应过程)以及资源管理方面,程序架构应体现出平衡性和对称性,保证资源的有效利用和程序状态的一致性。函数设计规整:遵循良好的函数设计原则,每个函数应具备单一入口和单一出口的特性,避免过多的分支出口和嵌套调用,从而使得函数功能更加聚焦,易于测试和维护,同时也符合程序设计中的高内聚、低耦合理念。[18]
掌握清理和优化程序策略
分模块清理:这是一种代码整理和优化的方法,主要针对代码的可读性和维护性进行改进。该阶段包括对代码的各个部分(即分块)进行逐一梳理,确保命名规范清晰易懂,注释详尽准确,以方便其他开发者阅读与理解。同时,也会调整代码格式,使之符合业界或项目团队所遵循的编码风格标准,从而提升整体代码质量。循环优化调试:这是一个迭代式的改进过程,涵盖了从发现并修正错误到逐步提升代码执行效率的一系列步骤。首先,通过调试识别并纠正程序中的错误,随后对程序逻辑和执行顺序进行优化,力求消除潜在的运行错误以及性能瓶颈。这一循环会反复进行,直至软件功能完全满足预设的需求和性能指标,在每次调试后都进行再次优化,以达到最高的代码质量和运行效率。
文化素质
在早期计算机编程行业的兴起阶段,由于领域尚处发展阶段,对从业者的背景要求相对较为灵活,企业愿意接纳具有一定学习能力和决心的新手,即使他们的实际工作经验有限或无相关经验。然而,随着计算机科学领域的普及和人才市场的日趋饱和,拥有大学学历的重要性日渐凸显,成为了求职者进入该行业的有力资质。[19]
为了甄选合适的编程人才,人力资源管理者通常会实施能力评估测试,以验证应聘者是否具备潜在的编程技能和问题解决能力。不少企业在正式录用新员工之前,还会安排其参加外部计算机学校或内部培训课程,培训周期可以根据需求从几周至数月甚至一年不等。[19]
高等教育体系中,除了传统的四年制本科教育,许多大专院校也提供为期两年的课程,例如数据处理、计算机编程以及其他相关的技术学科。而在四年制大学及综合性高校中,计算机科学系通常设有各类与计算机紧密相关的专业,旨在全面培养学生的编程及相关技能,为他们未来的职业生涯奠定基础。[19]
对于要求具备大学学历的雇主而言,虽然在专业选择上并无严格限制,但数学和计算机科学专业的毕业生因其扎实的基础理论知识和应用技能而备受青睐。除此之外,诸如商务管理、会计、工程学或物理学等其他专业的毕业生同样有机会在计算机编程行业中找到立足之地。政府部门对于程序员的招聘标准也与私营企业大体相当,注重候选人的教育背景和技术能力。[19]
素质要求
团队合作能力:在项目开发过程中,要求所有层级的工作人员具备扎实的团队协作精神和能力。无论个体能力多么出众,单凭一己之力无法全面应对复杂项目的需求。因此,在项目开发中强调团结一致、协同作业的原则至关重要,避免过度依赖个人单打独斗。[20]模块化思维能力:程序员在编写程序时常遇到重复劳动的现象,可以通过模块化设计提高效率。将重复性的工作抽象为独立的模块,允许在后续项目中便捷地重复使用。在研发初期注重模块化的设计与实现,可以大幅度减少不必要的工时消耗。[20]自我测试的习惯:程序员应当确保自己编写的代码片段在提交之前经过了严谨的测试,确认无误。在测试阶段,关注两个主要方面:正常调用条件下的功能测试,确保程序在正常操作环境下稳定运行;以及异常情况测试,由于在编程阶段,程序员对于自己代码中可能遇到的各种异常情况最为熟悉,此时进行针对性的测试可以取得更好的效果。[20]
薪资待遇
程序员是全球公认的高收入职业之一,根据2022年智能招聘平台Code Submit统计分析显示,美国、瑞士和以色列位居程序员平均薪资排行榜前三甲,丹麦、加拿大、挪威、澳大利亚、英国、德国和瑞典亦位列前十。在中国,程序员的平均年薪为23790美元(折合约16.11万元人民币)。[21]
综合各国编程语言薪资情况来看,Golang和Ruby通常被列为高薪编程语言类别,而JavaScript和PHP则在薪资排行中处于相对低位。[21]

职业困境
随着年龄增长,程序员可能会面临生理机能上思维敏锐度和记忆力的自然衰退,同时,由于互联网行业的快速发展和工作强度特性,程序员这个职业面临年龄的挑战。根据统计数据,互联网行业尤其是程序员群体呈现明显的年轻化态势,35岁以下从业人员占比远高于全国同年龄段就业人口比例。尽管有一半“大龄”程序员仍然坚守在一线技术岗位,或转型为架构师、研究员、技术专家等角色,但仍有人因行业年轻化趋势遭受裁员或被迫离职。[7]
行业技术快速迭代,需要程序员不断学习新技术,不少程序员因时间和精力的局限使其难以跟上行业发展步伐。加之工作内容的重复性与高强度加班,不少程序员对工作的热情逐渐减退。[8]
行业内部存在一种普遍看法,即35岁之后仍在一线编码的程序员可能遭遇职业瓶颈。“大龄”程序员如果无法通过技能提升转变为架构师、研究员和技术专家等角色,有人会选择离职、创业或转行至教育培训、企事业单位、自媒体等行业。[8]
相关节日
1024程序员节,是程序员的共同节日,也被称为“码农节”。[5]
1024是2的十次方,二进制计数的基本计量单位之一,是程序员每天都在打交道的数字。同时,1024MB是1GB,而1GB与1级谐音,也有一级棒的意思。再加上每年10月24日是“联合国日”(1947年起),也是世界发展信息日,所以这一天对于程序员来说非常有纪念意义。[5]
相关争议
2024年初创公司Cognition推出了全球首位AI软件工程师Devin,其能自主学习新技术,自己改Bug,甚至成功通过一家AI公司面试。虽然研发团队表示,Devin的任务是帮助人类进行编程,让程序员解决更难更有趣的问题,并非要取代程序员,但仍然引发未来AI时代是否需要程序员的广泛讨论。不少从业者担心Devin这类AI程序员技术可能会让人类程序员失去工作。[22]
百度董事长兼首席执行官李彦宏曾表示,以后不会存在“程序员”这种职业。但是360集团创始人周鸿祎则认为人工智能时代将更需要程序员,“我依然认为优秀的工程师、程序设计人才,是不能被取代的。”同时清华大学战略与安全研究中心特约专家朱荣生认为“未来编程行业可能会受到一定冲击,但是人在这其中的作用不可或缺。”[22]
参考资料 22
- 数字世界|什么是程序员? — 今日头条
- 参考 2
- 参考 3
- 参考 4
- 1024程序员节来了!程序员们齐许愿:头发多多,BUG少少 — 今日头条
- 幽默的程序员节 诠释了互联网的当下与未来 — 今日头条
- 35岁是道坎儿,互联网行业容不下“大龄青年”? — 百家号
- 程序员的369个灵魂发问 — 今日头条
- 青年程序员:“码农”过了35岁还有价值吗? — 百家号
- 2022程序员职场生态:超七成本科生起薪破万,跳槽首选智能汽车和芯片行业 — 百家号
- 参考 11
- 参考 12
- 参考 13
- 开源:数字技术扩散促进数字技术创新 — 光明网
- 科技|12 位专家谈 2021 年人工智能的发展趋势 — 51cto
- 参考 16
- 走进青年程序员:“码农”过了35岁还有价值吗? — 光明网
- 参考 18
- 参考 19
- 参考 20
- 各国程序员平均年薪排行榜:中国16.11万 排名19位 — 今日头条
- 全球首位AI程序员诞生 人类程序员会失业吗? — 今日头条