第一阶段:编码机器
这是最低级的阶段,程序员拿到详细设计文档,上面连许多方法接口都定义好了。重构一些代码,写一些实现,调用一些既定的API,然后花许多时间在各种各样的场景测试上面。从做的工作上看,这都不能算程序员,最多,只是编码技巧卓越的码农而已。因为它几乎扼杀了一切创造力,但是这很常见,比如在一些对日外包公司,就是如此。
第二阶段:独立的实现者
程序员得到的只是粗略的设计文档,也许注明了外部接口的清单,还有框架和基础设施的API,需求已经澄清清楚,接下去要做的就是发挥聪明才智把软件实现设计好,把代码写好,测试通过。这项工作可以在安静和独立的环境中完成,因为没有什么是不够明确的,那些本不清楚的部分,项目经理、架构师和产品经理已经搞定了。这样的环境下可以诞生许许多多OO设计优秀、代码清晰简洁的程序员,但是这始终只是在做一个残缺的项目而已。很多程序员新手都是从这个阶段开始的,但是程序员如果只会代码层面的设计、编码和测试,并不能算一个完整的程序员,也许连一半都算不上。
第三阶段:项目沟通者和管控者
程序员要和需求工程师,甚至客户澄清需求,分析可行性;需要自行分析设计项目中的技术难点;参与决定和管理迭代周期和计划表;组织和参与项目组内运作跟踪会议。编码以外的事情会占用一些时间,这些时间大多来自沟通的成本。如果说,前两个阶段还未能明显看出沟通的重要性的话,那么到这个阶段,一个不能良好沟通的程序员,将成为项目组运转的瓶颈。国内至少有一半的软件公司的程序员做项目应该处于这个阶段。
第四阶段:从做项目到做产品
从做项目跨越到做产品,想想容易,做起来很困难。做项目需要更多倾听用户需求,但是做产品更注重思考,思考用户的痛点和产品的定位远重于倾听用户表述。从项目周期上看,做项目关注在拿到需求并实现交付的过程,但是做产品需要把更多精力花在产品定义、设计,还有长时间的产品维护上。做产品的程序员,必须要和客户沟通,必须要维护自己开发的软件,获知用户和市场的反馈,如此才能体会到什么功能才是迫切需要的,该怎样把技术、业务和实际产品的实现结合起来。
第五阶段:产品成长的见证人
也许很少人能够参与从零开始,经过创意、市场分析到产品设计的过程,在明确要做什么之前有大量的时间会花在产品探索性的工作上面。也许会做很多的产品原型,也许某些版本和功能在A/B测试之后就被放弃了,更有些产品在流传开来以前就销声匿迹了,或者很快就死在抄袭和山寨手里。产品的更迭和换代总是千辛万苦,而看得到的部分往往如此简单,但是谁知道它的历史有多曲折呢?
文章系本人原创,转载请保持完整性并注明出自《四火的唠叨》
相关推荐
- 提供了大量的学习资源和进阶材料,帮助读者深入理解每个主题,并能够独立完成相关的项目。 #### 三、教学特色 - **编程实践**:书中提供了大量的编程示例,通过Python等语言的实际操作加深对统计概念的理解。 - ...
2. **自信心**:由于工作成果完全取决于自己的努力,程序员往往拥有很强的自信心,这也让他们更加倾向于创业或独立完成项目。 3. **预期价值**:程序员通常会将自己的劳动价值与软件的价值联系在一起,这使得他们...
根据给定的文件信息,我们可以提炼出一系列与C语言进阶相关的知识点,下面将对这些知识点...上述知识点仅为冰山一角,实际进阶过程中还需结合大量实践和项目经验,才能真正掌握C语言的精髓,成为一名优秀的C程序员。
通过参与不同规模的项目,可以锻炼开发者解决实际问题的能力,了解项目从设计到部署的全过程。 8. 学习资源:对于想要进一步提升Java后端技术和架构能力的开发者,可以加入技术交流群,获取免费的学习资料,包括...
课程旨在通过系统的教学,帮助学员掌握Java的基础知识,进阶特性,以及实际项目开发经验,从而具备独立解决复杂问题的能力。 首先,课程将从Java语言的基础入手,包括但不限于以下知识点: 1. **Java语法基础**:...
但从标题“程序员的十层楼”推测,这份文档可能旨在通过一系列编码示例或编程规则来隐喻性地描述程序员的成长过程或者编程技能的不同层次。以下是对该文档中所涉及知识点的解读: ### 一、程序员成长的十个阶段 1....
二、基础掌握:经过一段时间的学习后,程序员逐渐掌握了编程的基础知识,能够独立完成一些简单的项目。他们不再满足于只是跟随教程编写代码,而是开始思考如何优化程序性能。此时,他们可能会遇到一些进阶问题,如...
在这个进阶教程中,我们将深入探讨如何利用LINQ to SQL提升代码的效率和可维护性。 首先,我们来理解LINQ的核心概念。LINQ提供了一种内置于C#和VB.NET的语言结构,使得查询表达式可以直接嵌入到代码中,而不是作为...
C程序员的成长之路是一条不断学习、实践、反思和进阶的过程。从基础到专业,再到专家,每一步都需要付出努力和时间。但只要保持对编程的热情,勇于面对挑战,就一定能在C编程的世界里找到属于自己的位置。希望这份...
- Java具有简单性、面向对象、健壮性、安全性、平台独立性等特点。 2. **Java开发环境搭建** - 安装JDK(Java Development Kit):这是Java开发的基础,包括了Java运行时环境(JRE)和Java开发工具。 - 设置环境...
虚拟环境是在Python开发中经常使用到的技术,它允许开发者为每个项目创建独立的运行环境,避免了不同项目间依赖冲突的问题。 12. 容器(Collections) Python中的容器指的是那些能够包含其他对象的对象,如列表、元组...
标题《嵌入式C语言进阶之道》和描述部分提到了文章将介绍嵌入式C语言的编程风格、模块化编程、常用关键字、MISRA C 2004规范以及安全编程等内容,同时会讨论一些嵌入式C语言的小技巧。以下是对这些知识点的详细说明...
【程序员技术练级攻略】...总之,程序员技术练级是一个系统性、渐进式的过程。从脚本语言入手,逐步扩展到系统、网络、数据库等领域,同时保持对新技术的关注和学习,才能在编程世界中不断升级,成为一名优秀的开发者。
【标题】"Accp5.0 S2项目指导二"主要涵盖了ACCP(北大青鸟认证的计算机程序员)课程的第二个阶段项目实施的深入指导。这个阶段的学习旨在帮助学员掌握更高级的编程技能和项目管理知识,以应对复杂的软件开发挑战。 ...
3. 数据独立性高:数据独立性包括数据的物理独立性和逻辑独立性,即用户的应用程序与数据库中数据的物理存储和数据的逻辑结构均相互独立。 4. 数据由数据库管理系统统一管理和控制:利用数据库可以对数据进行集中...
虚拟环境是Python编程中推荐的一种环境隔离方式,它允许开发者创建一个独立的Python环境,使得项目依赖清晰,避免不同项目间的依赖冲突。 在Python的容器 Collections中,包含了一些更加高级的数据结构,如Counter...
- **源码**:源码是程序员编写的未经编译的原始代码,它是程序的起点,通过编译器转化为可执行文件。 2. 插入成员: - **成员变量**:用于存储数据,每个实例都有自己独立的一份成员变量副本。 - **成员函数**:...