风调雨顺是指什么生肖(程序员在公司的工作一般是什么?)
程序员也分岗位,不同岗位的工作重点不相同。前端和后端不同,软件测试和软件开发也不同。但如其他答主所说,都离不开敲键盘。
下面就从软件开发和软件测试来说吧。
一、研发人员
软件公司发展初期,公司研发人员往往只有几个人,一般由1至2名资深程序员,带着3到4名初级程序员,从不同的技术需求角度进行配备。随着软件团队发展及开发对象的复杂性增强,软件研发团队中的研发人员数量及技能要求会发生变化,许多时候会根据项目、产品情况划分为若干项目或产品小组。
在一个研发团队中,通常包含如下角色的人员。
1. 研发组长
研发组长一般由具有3~5年软件开发经验,并在特定业务领域内有一定特长的人员担任,对软件系统从经验及创造性构建有着不同的理解,其是研发活动的关键性人物。
研发组长的核心工作如下:
(1)定义待开发的软件系统,组织研发团队会议,人员工作安排,绩效考核等。
(2)负责公司产品或项目需求调研、需求分析,设计与规划等,并完成相关文档,协调资源推动产品项目功能实施,跟踪进度。
(3)与相关团队保持有效沟通,提高产品质量。
(4)定期对自身产品及行业、竞争对手等进行数据分析,评估、优化用户体验和功能。
(5)跟进项目开发组对产品开发、及时解释产品功能细节或解决项目组提出的需求疑问。
(6)负责小组内的其他事情,完成经理授权、委托的其他任务。
(7)负责协调测试团队对软件系统开展测试工作。
(8)在部分公司研发组长可能同时担任配置组长的工作。
2. 美工/页面制作人员
通过与客户或产品经理沟通,设计软件产品或项目用户界面,项目初期负责系统DEMO制作。美工或页面制作人员就像房间装修设计人员,尽可能根据客户需要设计精美易用的软件界面。其常见工作如下:
(1)与产品组长密切合作,与研发人员沟通,将功能与设计相结合,确保设计的界面具有可用性和吸引力。
(2)将设计页面分解切图,根据界面设计规范编写HTML、CSS、JS源代码,形成稳定的静态页面。
(3)跟进项目研发过程,及时解决在研发过程中遇到的页面设计问题。
3. 系统架构师
系统架构师通常是待开发产品的设计规划师,类似房屋的框架设计人员,负责整个房屋结构设计。其核心工作内容如下:
(1)需求分析,确认和评估系统需求。
(2)将需求规格说明书分解为开发需求,细化子项目、子系统、组件和模块,明确各个模块间的逻辑关系,设计系统整体架构及搭建系统实现核心架构。
(3)澄清系统细节、解决主要难点,指导协助开发人员开展研发活动。
(4)把控项目架构,使设计的项目尽量高效率开发。
(5)培训与指导,架构工程师需要对整个团队进行技术培训,给与每个开发人员有效的指导,避免由于团队成员对系统设计的误解造成项目的延误。
4. 开发工程师
开发工程师,即一般意义上的程序员,像房屋建筑工人,负责实现架构师对系统的设计。其核心工作如下:
(1)负责项目模块的详细设计、编码和内部测试的组织实施。
(2)参与技术可行性分析和需求分析。需熟练掌握公司软件项目的相关软件技术和使用方法。
(3)负责修复测试工程师提出的缺陷。
一个小型研发团队往往包括一名研发组长或经理,1~2名美工或页面制作人员,1名架构师,3~5名开发工程师。此种类型的研发团队在自研或外包公司都存在。
二、软件测试
软件测试团队主要负责软件系统的所有测试活动,不同公司测试团队的存在形式可能不一样。通常有以下几种可能。
1、隶属于研发团队
公司无独立测试团队,测试工程师较少,属于研发团队,研发组长兼任测试管理者,相对来说测试重要性不高。
2、 有独立测试团队
公司成立独立测试团队,测试工程师通常在5人以上,有测试组长或经理,隶属于项目经理或研发经理管理。
3、 既有独立团队,又隶属于研发团队
有独立的测试团队,但测试工程师分散到项目组,俗称跟项目。这种情况测试工程师的管理及工作安排基本由研发组长负责。
上述3种情况是现在软件企业比较常见的测试团队建设现状。
测试人员构成
从不同的管理角度出发,测试部门人员构成可从这两个方面考虑:角色构成、技术构成。
1. 角色构成
从角色构成角度设计,一般包括以下几种角色:测试主管、测试组长、环境保障人员、配置管理员、测试设计人员、测试工程师等职位。
(1) 测试主管
测试主管负责测试部门的日常管理工作,负责部门技术发展、工作规划等,同时其是测试部门与其他部门的接口人,在其他兄弟部门需要测试部门协助或安排测试工作时,需先与测试主管沟通,提出申请。
(2) 测试组长
测试组长隶属于测试部门,由测试主管指派。接收到一个项目测试需求后,测试主管会根据项目实际情况,如项目技术要求、业务要求,指派合适的测试工程师担当测试组长角色,由其负责该项目的所有测试工作。有些公司称测试组长为测试经理。
(3) 环境保障人员
环境保障人员的作用是维护整个项目系统环境,如硬件配置及软件配置。一般公司不会配备环境保障人员,大多数由测试工程师兼做,也可能有专职的保障人员,但不隶属于测试部门。该角色一般是重叠的。
(4) 配置管理员
配置管理(Software Configuration Management,SCM)是软件开发过程中一个极其重要的质量管理环节,可以对需求变更、版本迭代、文档审核起到相当大的作用,因此,稍微正规一些的公司都会配备配置管理员(Configuration Management Officer,CMO)。
(5) 测试设计人员
测试设计人员一般由高级测试工程师担当,负责项目测试方法设计,测试用例设计,功能测试,以及性能测试步骤、流程、脚本、场景设计等。很多公司将该角色与测试工程师重叠,不严格区分测试设计人员与测试工程师角色。
(6) 测试工程师
测试工程师的实际工作内容大多数是执行测试用例,进行系统功能测试,经过多次版本迭代,完成系统测试。一般由初级测试工程师、中级测试工程师担当。
2. 技术构成
如果从测试人员具备的技术角度来考虑,主要包括:白盒测试技术人员、黑盒测试技术人员、自动化测试技术人员、项目管理技术人员等。
(1) 白盒测试技术人员
该职位需精通软件开发语言,一般需要有几年开发经验,能够进行底层代码评审、测试桩/驱动设计等,能够使用白盒测试工具对系统最小功能单元进行测试,找出代码、系统架构方面的缺陷。
(2)黑盒测试技术人员
黑盒测试技术人员一般要求具有一定的软件工程理论和软件质量保证知识,需要从系统功能实现、需求满足情况监察系统质量,需要掌握基本的软件开发语言、数据库基本知识、操作系统基本知识、测试流程以及相应的工作经验。
(3)自动化测试工程师
自动化测试工程师技能要求较高,需掌握软件开发知识、系统调优技能、接口测试工具(如Jmeter、Postman)、自动化测试工具(如Selenium、Appium),性能测试工具(如LoadRunner、JMeter),同时需要具备相当丰富的工作经验。目前国内这方面的人才比较缺,尤其是移动应用测试人才。
(4)项目管理技术人员
该角色要求掌握一般常用的项目管理知识,如配置管理、版本控制、评审管理、项目实施与进度控制等,不一定具备多强的测试技术,但需要有丰富的项目管理经验以及沟通协调能力,能够保证项目在一个可控的环境下稳定运作。