程序员

从事计算机程序设计、开发、测试、维护的基层工作人员
展开 3个同名词条
收藏
0 有用+1
0
程序员(英文Programmer)是从事 程序 开发 、程序 维护 的专业人员, [1] 戏称自己是“程序猿”“码农”。 [5 ]
程序员负责编码工作,是软件开发团队的中坚力量。在软件实现阶段,程序员要完成从设计模型到程序代码的映射,进行程序代码的质量保证,并解决编程实践中遇到的多样化问题。 [4 ] 一般将程序员分为程序设计人员和程序编码人员,在中国,两者的界限并不非常清楚。特别是软件从业人员分为 初级程序员 、中级程序员、高级程序员(现为 软件设计师 )、 系统分析员 系统架构师 测试工程师 六大类。 [1] 因为计算机系统常用“1024”作为计量单位,10月24日被称为程序员节,这一天也成为一个社会关爱程序员群体的日子。 [2]
因为互联网行业技术迭代速度快、工作强度大,程序员往往被视为只能吃“青春饭”。除了少数前沿开发工作,多数程序员岗位更追求创新与经验的平衡。 [2] 行业技术迭代太快,学不动、跟不上,是程序员们最频繁提及的困境。对于大龄程序员来说,不论离开或是留下,都是改善自身职业和生活的一种尝试。有些人深耕技术,回归代码的乐趣,也有人通过转换赛道、开拓副业来调整状态。 [3]
中文名
程序员
外文名
Programmer
拼    音
chéng xù yuán
职    责
程序的 设计 开发 测试 维护
分    类
设计 人员、 编码 人员

目录

岗位职责

播报
编辑
1、对项目经理负责,负责软件项目的详细设计、编码和 内部测试 的组织实施,对小型软件项目兼任系统分析工作,完成分配项目的实施和 技术支持 工作。
2、协助项目经理和相关人员同客户进行沟通,保持良好的 客户关系
4、熟悉并熟练掌握交付软件部开发的软件项目的相关软件技术。
5、负责向项目经理及时反馈软件开发中的情况,并根据实际情况提出改进建议。
6、参与软件开发和 维护过程 中重大技术问题的解决,参与软件首次 安装调试 、数据割接、用户培训和 项目推广
7、负责相关 技术文档 的拟订。
8、负责对业务领域内的 技术发展 动态进行分析研究。

行业现状

播报
编辑
CSDN 、《程序员》主办的2007年开发者大调查2007年底已收到15000多份 有效问卷 ,已经是中国 调查样本 最多的开发者调查。在这次调查中,详细的分析了样本空间的分布状况,发现在庞大数目的有效问卷的参与者中有70%也就是接近一万一千名的参与调查者是IT的全职人员,14%的参与者是有过开发工作经验的学生,从这样的分布就可以看出来IT从业人员对专业知识的需求是巨大而迫切的, CSDN 作为专业的软件开发技术门户网站,已经是大家获取这些技术的主要手段。
一、选择 数据库技术 互联网技术 的人数总和占到了总人数的一半
2007年火热的SOA和 动态语言 各占13%和12%。其实这几大块技术分布他们之间都是有一定的联系的,互联网的发展近两年呈爆炸式的增长态势,中国的网民总数已经超过了1.4亿这样一个巨大的数字。
程序员
企业中业务的复杂程度越来越高, 商业竞争 不断增加企业的IT系统,使企业的 商业数据 呈几何 数量级 不断增长,在后台数据 中数据 的管理由之前的单一型数据变成了多纬度的复杂数据,所以可以同时管理 关系型数据库 和XML数据的混合型数据库已经成为主流。
面对企业不断增加新的IT信息系统,整合已经迫在眉睫,SOA成为必然的趋势,企业对人才的需求从单一型 技术人才 、业务人才跳跃到了 业务技术 复合型人才 ,这次的开发人员大调查令《程序员》杂志的调查者看到了这些技术焦点背后千丝万缕的关联。
二、几乎一半的 .NET 用户不参与 开源项目 RedHat+ Ubuntu 占有率 超过70%
程序员
应用到.NET平台上的开源项目,“大量使用”的比例数仅为8.68%,尚不足一成;“少量应用”的开发者人数比例为42.78%。“基本不用”的比例高达48.54%,与前二者之和几乎不相上下。
虽然开源的出现和发展,让软件没有垄断的未来日渐明朗;虽然 开源运动 经过多年的高速发展,现已聚集了相当的力量,开源的自由和给予理念逐渐深入到了企业的技术核心层面。但 微软 商业软件 为生,毕竟在微软技术领域中,开源项目通常都被看作是二等公民。很多开源项目对.NET社区产生了巨大的推动作用,微软公司很难提供任何实质性质的支持。
当前安装有 Linux 操作系统,数据中RedHatFedora占据 绝对优势 ——Linux使用者使用该版本占总数的49.49%。 Fedora 是RedHat推出的重要的一款 Linux版本 ,在每个 fedora 版本中都是集成最新的Linux软件,特别是 服务端 软件。
使用“RedHatFedora”关键词在百度网页中搜索得到7,090,000条结果,RedHatFedora在调查中占据Linux版本的半壁江山符合整个 Linux版本 的分布情况。
排在第二位的是 Ubuntu ,受支持数占到总数的23.92%;第三位的是SuSE占9.09%,接下来是 Debian 使用率 为5.92%。在这里面令人期待的 中国本土 Linux的让人大失所望。使用率仅占5.16%,几乎只有RedHatFedora的十分之一。
三、 Java 开发框架:6%的JSF欲撼动21%的Struts
JSF现在比较有优势的是对Ajax的集成,这一点走在了其他框架的前面。未来两年,JSF与Struts将展开JavaWeb框架的最终战争。 经过数年的“框架大战”,Java界的各种框架找到了自己应有的位置。Spring+Hibernate+Struts已成为Java开发的主流体系。在这个体系中,Spring+Hibernate的地位应该说短期内是难以撼动了。除了新兴的JbossSeam作为挑战者之外,几乎难有劲敌。
JavaB/S编程中历来战火最激烈的其实还在Web层,框架的数量最多,争议最大。一切由Struts而起,而Struts最终也坐稳了第一个时代的王座。在技术层面,Struts1.x已经被无数人抱怨过、批评过,但终于还是稳坐王位,这充分说明了习惯的力量。“ 稳定压倒一切 ”,这句话在IT技术领域仍旧适用。
详细的分析了Java开发框架的使用状况,发现主要使用的开发框架JSP占26%,Struts占21%, Hibernate 占17%,SpringMVC占11%, EJB 占7%,JSF占6%,SpringWebFlow和 POJO 各占4%,其它占4%。就这一调查数据,不难看出,Spring+Hibernate+Struts的优势地位还是相当的明显。
Struts和Hibernate几乎已经成了 JavaEE 应用的常规配置,21%的开发者用到Struts,用到Hibernate的开发者也有17%;在一个成熟的技术平台上,各个项目的 技术方案 会在很大程度上趋同——因为所有未知领域都已经被探明,各种问题都有对应的 最佳实践 ,架构师们可以参考的成功案例越来越多。就拿JavaEE来说,架构师们需要考虑的问题比之三年前已经简单多了,这就是成熟的价值。
程序员
有专家评论:“其实IT 应用技术 ,什么新鲜 玩意 并不难学,难的是标准化和规范化。每个程序员都有自己的思路和习惯,写出来的代码自然是五花八门。Java何以成为编程界的占重要地位,很重要的一点在于Java的规范化。这种规范化很高的语言适用于多人合作的 大型项目 ,便于沟通和理解,也就便于集成和维护。 Java世界为什么会框架横飞,说到底还是规范化的需要。纯JSP和Struts写Web谁快,摆明了是JSP。那为什么用Struts?原因在于100个人写出来的JSP,有100种写法;而100个人写出来的Struts,基本相似。Struts之成功,正缘于其在JavaWeb层的规范化方面所做出的贡献。
然而长江后浪推前浪,Struts1.x的技术缺陷毕竟是隐患。Sun力推JSF,打算一雪Web层框架缺失之耻。未来两年,JSF与Struts将展开JavaWeb框架的最终战争。
JSP经过几年风雨洗礼依然把持 头把交椅 ,看来所有的框架 表示层 都离不开JSP而存在,而作为JSP的手足兄弟JSF也是仅次Spring之后又一个后起之秀。
如今JbossSeam在2009年之后就退出了历史舞台,JSF在国内使用者也寥寥无几了,而大红大紫的SSH框架也被Spring+SpringMVC+Mybaties主流所代替了。

职业要求

播报
编辑
一般的程序员都有在专业领域的学习,还有很小一部分程序员是自学的,尽管一些专业性的学校或者 综合大学 可以提供,但是也需要一些别的途径来提供相关的人才。尽管学历是比较重要的,但是公司经常把重点放在应聘者的工作经验上,很多刚从大学毕业的大学生虽然有引人注目的学位证书,但是他们找不到工作是因为他们缺乏经验。一个程序员虽然没有正规的学历,但是如果一个人拥有程序设计的深厚知识背景或者丰富的工作经验的话,那么他的机会要比有学历的 应届毕业生 大得多。所以要尽量抓住有用的工作和实习机会,这样的话在毕业后你就会发现,多实习让你有更多的经验,在找工作的时候就有更多的机会。
对于职业程序员,另外一个重要的方面就是,程序员需要不断提升自己的业务技术,他的技术必须一直保持在一个较高的水平,并且要不断发展,程序员也要寻找贸易的机会,要参加研讨会,在周刊上发表文章和接受 职业教育 ,这些使程序员在自己的领域中分级或者不断并排前进。

必备技能

播报
编辑
做为一名程序员至少熟练掌握两到三种 开发工具 的使用,这是程序员的 立身之本 ,其中 C/C++ 和JAVA是重点推荐的开发工具,C/C++以其高效率和高度的灵活性成为开发工具中的利器,很多 系统级 的软件还是用C/C++编写。而JAVA的 跨平台 和与WEB很好的结合是JAVA的优势所在,而JAVA即其相关的技术集JAVAOne很可能会成为未来的主流开发工具之一。其次,能掌握一种简便的可视化开发工具,如 VB ,PowerBuilder,Delphi,CBuilder,则更好,这些开发工具减小了开发难度,并能够强化程序员 对象模型 的概念。另外,需要掌握基本的 脚本语言 ,如shell, perl 等,至少能读懂这些脚本代码。
熟知数据库
为什么数据库是如此重要?作为程序员,他们自然有自己的理由:很多 应用程序 都是以数据库的数据为中心,而数据库的产品也有不少,其中 关系型数据库 仍是主流形式,所以程序员至少熟练掌握一两种数据库,对关系型数据库的关键元素要非常清楚,要熟练掌握 SQL 的基本语法。虽然很多数据库产品提供了可视化的数据库管理工具,但SQL是基础,是通用的数据库操作方法。如果没有机会接触商业 数据库系统 ,可以使用免费的数据库产品是一个不错的选择,如mySQL,Postgres等。
了解操作系统
当前主流的操作系统是Windows,Linux/ Unix ,熟练地使用这些操作系统是必须的,但只有这些还远远不够。要想成为一个真正的 编程高手 ,需要深入了解操作系统,了解它的内存管理机制、进程/ 线程调度 、信号、 内核对象 系统调用 协议栈 实现等。 Linux 作为开发源码的操作系统,是一个很好的学习平台,Linux几乎具备了所有现代操作系统的特征。虽然Windows系统的内核实现机制的资料较少,但通过互联网还是能获取不少资料。
懂得 网络协议 TCP/IP
在互联网如此普及的现代,如果您还没有对互联网的支撑协议 TCP/IP协议 栈有很好的掌握,就需要迅速补上这一课, 网络技术 已改变了软件运行的模式,从最早的 客户/服务器 结构,到当代的WEBServices,再到未来的 网格计算 ,这一切都离不开以TCP/IP协议栈为基础的网络协议支持,深入掌握TCP/IP协议是非常必要的。至少,需要了解ISO七层协议模型,IP/ UDP /TCP/HTTP等常用协议的原理和 三次握手 机制。
明白DCOM/CORBA/XML/WEBServices存在的意义
随着技术的发展,软件与网络的无缝结合是必然趋势, 软件系统 的位置无关性是未来计算模式的重要特征之一, DCOM /CORBA是当前两大主流的 分布计算 的中间平台,DCOM是 微软 COM( 组件对象模型 )的扩展,而 CORBA 是OMG支持的规范。XML/WebServices重要性不言而喻,XML以其结构化的表示方法和超强的 表达能力 被喻为互联网上的“ 世界语 ”,是 分布式计算 的基石之一。
不要将 软件工程 与CMM分开
大型软件系统的开发中,工程化的开发控制取代 个人英雄主义 ,成为软件系统成功的保证,一个编程高手并不一定是一个优秀的程序员,一个优秀的程序员是将出色的编程能力和开发技巧同严格的 软件工程思想 有机结合 ,编程只是软件生命周期中的其中一环,优秀的程序员应该掌握 软件开发 各个阶段的 基本技能 ,如市场分析, 可行性分析 需求分析 结构设计 详细设计 软件测试 等。
需求理解能力
程序员要能正确理解 任务单 中描述的需求。在这里要明确一点,程序员不仅仅要注意到软件的功能需求,还应注意软件的 性能需求 ,要能正确评估自己的模块对整个项目中的影响及潜在的威胁,如果有着两到三年项目经验的熟练程序员对这一点没有体会的话,只能说明他或许是认真工作过,但是没有用心工作。
模块化 思维能力
作为一个优秀的程序员,他的思想不能局限在当前的 工作任务 里面,要想想看自己写的模块是否可以脱离当前系统存在,通过简单的封装在其他系统中或其他模块中直接使用。这样做可以使代码能重复利用,减少重复的劳动,也能使 系统结构 越趋合理。模块化思维能力的提高是一个程序员的技术水平提高的一项重要指标。

职业困境

播报
编辑
老虎、Bill、自己,中国程序员的困境也来自三个方面
困境之一: 老虎的威胁 。程序员要面对的饿老虎实在不少,比如说老板,好像就是程序员的天敌,什么“不懂技术却指手画脚”、什么“得到与付出不相当”似乎是程序员最常见的牢骚,这个问题不可能得到真正的解决。
困境之二: Bill的竞争 。一般说来中国的程序员大都是吃“ 青春饭 ”的,大部分程序员的黄金时代是20~35岁。到了35岁左右,一批又一批年轻程序员会给你带来巨大的竞争压力。首先由于软件行业的飞速发展,很多自己以前学的东西逐渐升级换代,而许多程序员由于长期于工作,学习新知识的效率必然下降。其次自己干了几年,薪水要求自然就高了,而年轻程序员工资又低、干活又快,当然会成为老板的首选;第三,35岁基本都已经成家了,要支撑家庭的生活负担,几乎连从头再来的勇气都不会有了。中国的老话说“长江后浪推前浪,前浪死在沙滩上”,这个历史的规律在 软件开发 行业体现的尤其明显和残酷,很多程序员必然要面对的结果就是降薪乃至失业。
困境之三: 自我的实力 。都知道人最难战胜的是自己,所以自我也就是程序员需要超越的最大障碍。大多程序员都把 系统分析员 和项目经理作为自己的 职业目标 ,但这些目标的达成,需要个人素质、市场机遇等多个方面的条件,太多的程序员就是在高不成、低不就的状态中蹉跎了岁月。对于系统分析员,特别需要以下几方面的素质: 客户需求 分析能力、系统架构与 设计能力 、模块分解设计能力、项目流程控制能力、 项目风险评估 能力等,而对于项目经理则更注重 项目管理 方面的能力如团队 组织能力 、沟通 协调能力 、分析 问题解决 问题的能力以及良好的 职业道德 等,而这些素质和能力往往只能依靠程序员个人的学习和努力。看到越来越多的程序员开始学习项目管理的课程,真的有点为他们担心,因为现在的项目管理培训只能停留在理论和考证的程度,既没有素质方面的训练,又缺少实际 软件开发项目 的案例,学习的结果远远不能达到预期的效果。

薪资待遇

播报
编辑
经济学 的层面上来看,软件人才也是 劳动力商品 中的一种,是由 价值规律 决定的,有需求才会有市场,才会有人愿意为他们支付工资。当前,包括中国在内,全球都在争夺IT人才,当IT人才的 社会总需求 大于 总供给 时,不可避免就会出现人才升值的现象。

日常工作

播报
编辑
确认通过审查方案的目标, 输入数据 分析师 ,监事,和客户的输出要求的项目要求。
安排项目要求在编程序列分析要求;准备 工作流程图 和使用 计算机知识 的能力,题材, 编程语言 逻辑图
编码 工作流程 信息转换 计算机语言 的项目要求。
通过输入 编码信息 的计算机 程序
确认程序操作进行测试, 修改程序 序列和/或代码。
准备写 操作指令 供用户参考。
保持 历史记录 ,通过记录方案的制定和修订。
维护客户的信息和保护保密的业务。
技能/资格:一般的编程技巧,分析信息,解决问题, 软件算法 设计,软件 性能优化 ,注重细节,软件设计,软件调试,软件开发基础, 软件文档 ,软件测试。程序员其实分为很多种,大家开发的语言可能不尽相同,但是都是有他们的共同点。