1. 程序员的职业发展方向:业务技术
程序员职业生涯发展到一定程度都会面临一个选择,是走业务+技术方向,还是选择纯钻研技术。程序员职业生涯发展的问题,这是所有程序员都在关心的问题,未来究竟要怎么走,30岁之后还能不能再做程序员。绝大多数程序员最终的职业目标可能都是CTO,做到CEO的人估计会比较少,也有一少部分人自己去创业去当老板,也有部分人转行了,当老板的人毕竟是少数,转行的人都不在这行做了,自然没什么好说的了。一般来说,程序员的发展基本上都会经历这么几条路径。程序员-系统分析员-架构师-技术经理-CTO,程序员-项目组长-项目经理-项目总监-CTO,程序员-产品设计师-产品经理-CTO。当然这只是一个大致的路径,不是所有程序员都必需要这么经历的,有些人可能跳过其中的一些步骤,也可能有些人会把中间的很多职位都做了。而最终做到CTO的程序员,也是非常少的一部分,原因很简单,这个世界上不许要那么多的CTO和CXO。也就是说,许多的程序员最终可能是做技术经理、项目经理或者项目总监之类的,那么到底我们职业生涯要选择哪一种呢?我觉得这个问题没有一个统一的答案,因为每个人的性格不一样,际遇也不一样,就像你从小希望当贪官,可是命运却偏偏让你做了一个程序员。所以应该根据你的兴趣、性格与际遇选择一条道路,比如说你正好有机会带一个项目,而你又不是很讨厌项目经理这个位置,那么你就可以选择向项目经理方向发展。实际上很多时候,有些公司并没有明确的技术经理、项目经理、产品经理之分,在许多的公司里,他们经常是由一个人承担。在外包公司里,通常会有项目经理和系统分析员(也可能是技术经理)。在一些非IT公司里,可能会是部门经理,而做自己产品的公司可能会分得比较详细一些。我大致说一下这三个职位的区别,让正在徘徊的程序员有一个大致的了解。项目经理是项目的直接负责人,这个角色相当于一个中间接口,不管是团队成员还是需求方(客户),或者是上级领导,有事都直接找他,所以这个职位着重于管理与沟通。一般来说,项目经理的工作重点在同客户沟通需求、项目进度的把控、团队的沟通方面,有些公司也会需要项目经理承担团队建设的工作,不过貌似很多国内公司都忽略了团队建设这个工作了。对于项目经理来说,重点会要求沟通能力、协调能力、危机把控能力、执行力、团队管理能力,着重于沟通、管理与计划。当然也有些公司还要求项目经历要参与招标谈判,这就要求项目经理有一定的商务谈判能力。技术经理有时候也可能叫系统分析员,一些小公司可能会整个部门有一个技术经理。技术经理承担的角色主要是系统分析、架构搭建、系统构建、代码走查等工作,如果说项目经理是总统,那么技术经理就是总理。当然不是所有公司都是这样的,有些公司项目经理是不管技术团队的,只做需求、进度和同客户沟通,那么这个时候的项目经理就好像工厂里的跟单人员了,这种情况在外包公司比较多。对于技术经理来说,着重于技术方面,你需要知道某种功能用哪些技术合适,需要知道某项功能需要多长的开发时间等。同时,技术经理也应该承担提高团队整体技术水平的工作。1143448846
2. 什么是程序员
程序员是从事程序开发、维护的专业人员。一般将程序员分为程序设计人员和程序编码人员,但两者的界限并不非常清楚,特别是在中国。软件从业人员分为初级程序员、高级程序员、系统分析员,系统架构师,测试工程师六大类。
程序员的岗位职责
1、对项目经理负责,负责软件项目的详细设计、编码和内部测试的组织实施,对小型软件项目兼任系统分析工作,完成分配项目的实施和技术支持工作。
2、协助项目经理和相关人员同客户进行沟通,保持良好的客户关系。
3、参与需求调研、项目可行性分析、技术可行性分析和需求分析。
4、熟悉并熟练掌握交付软件部开发的软件项目的相关软件技术。
5、负责向项目经理及时反馈软件开发中的情况,并根据实际情况提出改进建议。
6、参与软件开发和维护过程中重大技术问题的解决,参与软件首次安装调试、数据割接、用户培训和项目推广。
7、负责相关技术文档的拟订。
【能力3】熟悉多种系统架构。对于程序员来说,无论是在开发MIS、Web解决方案、分布式应用系统、嵌入式软件、驱动程序系统,也不管是在Windows或UNIX或Linux操作系统之下,编写控制台程序、原生窗口程序还是.NET程序,透彻理解一种系统架构或开发平台的全部功能,同时了解其他架构的运作机制,是十分必要的。这样不仅有利于编程工作的转换,也有助于掌握信息技术发展的一般走向。
【能力4】理解和运用UML/Extrerile Program-ming的能力。现在软件开发的时限越来越短,软件产品却越来越复杂和庞大。为了在较短时间内开发出高质量的软件产品,许多软件公司在软件开发的系统分析和系统设计阶段,在大型项目中采用面向对象的UML(统一建模语言),在中小型项目中采用Extreme Programming。程序员虽然不必参与软件系统的分析与规划,但是必须学会使用UML/EP模型的方式与系统分析人员、系统设计人员进行沟通与交流。这是在开发团队中协调工作、实现快速开发的有效手段。
【能力5】使用RAD编程工具的能力。实现快速开发软件、提高软件生产率的另一个手段是使用快速应用开发工具(RAD)。程序员要学会使用新一代开发环境所提供的全部功能和工具,学会在一个开发环境中撰写源程序、以可视化的方式检查程序代码的关系和验证代码的可靠度,并且在开发环境中与系统分析和设计人员进行沟通;学会在相同的开发环境里进行程序的单元测试与负载测试。程序员通过开发环境参与项目管理、版本管理和软件产品的商业化包装,从而提高整个团队的软件开发生产率。程序员还应该知道开发环境在幕后为用户所做的事情,从中学习更高级的编程技术。
【能力6】在编程实践中正确运用程序质量属性的能力。软件工程学的宗旨是采用一整套科学、系统的方法,提高计算机软件的质量和生产率。优秀的程序员能自觉地运用软件工程学的技术思想指导程序设计,对可靠性(正确性+健壮性)、效率、易用性、可读性(可理解性)、可扩展性、可复用性、兼容性、可移植性等软件质量属性做到了如指掌,并且努力做到能在编程实践中运用自如,这是开发高质量软件的不二法门。
3. 银行程序员是具体干嘛的
银行程序员在现代银行业中的角色日益重要,他们主要负责设计、开发、测试与维护银行的核心系统、交易系统和信息安全系统。随着银行业务的日益复杂化,信息和数据量急剧增加,确保数据处理的高效性和安全性成为关键任务。因此,银行程序员需要具备扎实的编程技能和深厚的计算机技术知识。
除了核心系统和交易系统的开发外,银行程序员还负责开发和维护各种客户端软件,例如数值分析软件和数据挖掘软件,以满足银行内部各类业务需求。这些软件不仅提升了银行的运营效率,还促进了数据分析和决策支持的能力。
在保障银行业务安全方面,银行程序员起到了至关重要的作用。他们需要不断更新和完善安全防护措施,确保银行系统免受外部攻击和内部风险的威胁。此外,银行程序员还积极参与推进银行业务的数字化转型,通过引入最新的技术手段和优化流程,提升银行服务的便捷性和客户体验。
银行程序员的工作不仅限于技术层面,他们还需要与业务部门紧密合作,确保技术方案能够满足实际业务需求。这要求他们具备良好的沟通能力和团队协作精神。通过不断学习和实践,银行程序员在推动银行业务基础设施建设和发展中扮演着不可或缺的角色。