热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

你是开发工程师、程序员还是码农?

不管是CPPer,Javaer,还是PHPer等等,不少开发人员经历过这样的困惑:我到底是工程师(SDE,orDeveloper),程序员(Programmer),还是Coder(编码员)呢?这个问题看上去似乎没有什么意思,甚至不过是一次无聊的名词解释。但是,我们以这里作为所有话题的起点,是因为任何观点并没有绝对的对与

Developers are from Mars, programmers are from Venus, so where are coders from?

不管是CPPer,Javaer,还是PHPer等等,不少开发人员经历过这样的困惑:我到底是工程师(SDE,or Developer),程序员(Programmer),还是Coder(编码员)呢?

这个问题看上去似乎没有什么意思,甚至不过是一次无聊的名词解释。但是,我们以这里作为所有话题的起点,是因为任何观点并没有绝对的对与错,决定最终选择的恰恰是看问题的角度——身份当然是其中的一个重要影响力。屁股决定脑袋,这样的道理无需赘述。

好吧,还是先回到这个话题上来。

软件开发工程师(SDE,or Developer)是我们大多数软件开发人员的职业称呼。既然是一个职业称呼,其身份与职业自然有密不可分的关系。作为一个开发工程师,其主要职责是在有限的时间内开发出具有实际实用价值的应用程序。

这里面至少包含两点。

其一,开发目标。开发工程师的开发目标是使用,没有使用价值的程序是没有意义的;

其二,开发成本。既然是职业称呼,开发工程师的工作往往由商业因素驱动,其开发特点突出表现为大量的功能需求和有限的成本。因此需要开发工程师具备在各种需求(包括时间成本等等)之间寻求平衡的能力。

程序员(Programmer)常常被简单地被归结为一群追求技术的狂热分子,他们更多地由兴趣驱动,开发一些有挑战性的东西。这样说也许并不确切,但毫无疑问,程序员这个名称给人更多的技术感和理想色彩,以至于很多人把他作为自己引以为豪的称号。我也喜欢自诩为程序员,甚至很多IT公司那些数年未写一行代码的技术主管也喜欢自诩为程序员。

程序员开发习惯的一个显著特点是追求极致:最新潮的方法,最小的二进制文件大小,最少的代码量,最强大的功能……时间?唔,开发时间从来不是程序员工作的决定因素,它甚至根本不被考虑;执行时间倒是个重要因素,所有程序员听到这个就像猫闻到腥味一样。

看上去,软件开发工程师和程序员是多么截然不同的两种人。难怪有人说,软件开发工程师来自火星,程序员来自金星。

另外一些人给两种称呼设置了等级,似乎程序员经过一段时间的成长才能成为一个软件开发工程师。当然,我不认同这样的说法:不同的追求导致不同的发展而已。

尽管我们给两种称呼映射了两种截然不同的行为,然而实际上,这两种行为常常同时出现在同一个人的身上:你可能上班时像个开发工程师,下班则更像个程序员;他可能对待一些问题时像个开发工程师,对待另一些问题时则更像个程序员。

很多软件项目开发周期过长,一个重要原因就是由于软件开发工程师在开发当中融入了过多的个人乐趣,开发出了很多个人认为很酷其实不必要的功能。而一个程序员哪怕是捣鼓一个只有他自己才用的软件,他也需要在他力所能及的范围(成本)内开发出自己满意的功能。

与上面两种称呼不同,Coder(编码员)常常被称作软件业的蓝领工人(戏称“人肉编码机”)。没有人愿意做这样的蓝领工人,因为软件业里的体力劳动者几乎就是笨蛋的代名词。

其实,绝大多数开发人员会常常扮演编码员的角色。想想你拷贝一大段代码,修修改改完成一个功能,然后又拷贝另一大段代码,修修改改完成另一个功能的经历,这不正是个Coder的角色么?要将这些“体力编码”的片段跟“脑力编码”的片段分割开来,派给两种开发人员去做显然是不切实际的。

即便存在Coder这样的职业,只是从事将设计翻译为代码的“体力”工作,他们的工作也仍然是举足轻重并值得尊敬的。任何一个成功的软件项目,除了得益于其成功的设计,编码的质量一样不可或缺。

如果你真的领导着一些商业性项目开发,你应该会深深体会到编码质量对一个项目举足轻重的影响,而一个编码质量令人放心的开发人员在任何组织里都不会是简单的Coder角色。

再次强调,不管是SDE,程序员,还是Coder,我尝试做出一些定义并不是为了让你从无数开发人员当中区分出谁属于哪一类型。恰恰相反,我认为对于绝大多数开发人员而言,他并不是一直扮演某一种角色,而是在不同时候,不同的方面,表现为不同的角色。

我们区分这些类型,只是为了阐述观点时,有一个角色的定位。但是,你知道,世界是复杂的,而人不会是一成不变的。

本文地址:http://www.nowamagic.net/librarys/veda/detail/129,欢迎访问原出处。


推荐阅读
  • Python 异步编程:深入理解 asyncio 库(上)
    本文介绍了 Python 3.4 版本引入的标准库 asyncio,该库为异步 IO 提供了强大的支持。我们将探讨为什么需要 asyncio,以及它如何简化并发编程的复杂性,并详细介绍其核心概念和使用方法。 ... [详细]
  • 理解存储器的层次结构有助于程序员优化程序性能,通过合理安排数据在不同层级的存储位置,提升CPU的数据访问速度。本文详细探讨了静态随机访问存储器(SRAM)和动态随机访问存储器(DRAM)的工作原理及其应用场景,并介绍了存储器模块中的数据存取过程及局部性原理。 ... [详细]
  • MySQL 数据库迁移指南:从本地到远程及磁盘间迁移
    本文详细介绍了如何在不同场景下进行 MySQL 数据库的迁移,包括从一个硬盘迁移到另一个硬盘、从一台计算机迁移到另一台计算机,以及解决迁移过程中可能遇到的问题。 ... [详细]
  • 并发编程:深入理解设计原理与优化
    本文探讨了并发编程中的关键设计原则,特别是Java内存模型(JMM)的happens-before规则及其对多线程编程的影响。文章详细介绍了DCL双重检查锁定模式的问题及解决方案,并总结了不同处理器和内存模型之间的关系,旨在为程序员提供更深入的理解和最佳实践。 ... [详细]
  • 本文探讨了如何通过最小生成树(MST)来计算严格次小生成树。在处理过程中,需特别注意所有边权重相等的情况,以避免错误。我们首先构建最小生成树,然后枚举每条非树边,检查其是否能形成更优的次小生成树。 ... [详细]
  • 深入理解Java中的volatile、内存屏障与CPU指令
    本文详细探讨了Java中volatile关键字的作用机制,以及其与内存屏障和CPU指令之间的关系。通过具体示例和专业解析,帮助读者更好地理解多线程编程中的同步问题。 ... [详细]
  • 本章将深入探讨移动 UI 设计的核心原则,帮助开发者构建简洁、高效且用户友好的界面。通过学习设计规则和用户体验优化技巧,您将能够创建出既美观又实用的移动应用。 ... [详细]
  • 利用存储过程构建年度日历表的详细指南
    本文将介绍如何使用SQL存储过程创建一个完整的年度日历表。通过实例演示,帮助读者掌握存储过程的应用技巧,并提供详细的代码解析和执行步骤。 ... [详细]
  • 自学编程与计算机专业背景者的差异分析
    本文探讨了自学编程者和计算机专业毕业生在技能、知识结构及职业发展上的不同之处,结合实际案例分析两者的优势与劣势。 ... [详细]
  • SQLite 动态创建多个表的需求在网络上有不少讨论,但很少有详细的解决方案。本文将介绍如何在 Qt 环境中使用 QString 类轻松实现 SQLite 表的动态创建,并提供详细的步骤和示例代码。 ... [详细]
  • 阅读本文大约需要3分钟。微信8.0版本的发布带来了许多令人振奋的新功能,如烟花特效和改进的悬浮窗,引发了用户的热烈反响。 ... [详细]
  • 深入理解Java泛型:JDK 5的新特性
    本文详细介绍了Java泛型的概念及其在JDK 5中的应用,通过具体代码示例解释了泛型的引入、作用和优势。同时,探讨了泛型类、泛型方法和泛型接口的实现,并深入讲解了通配符的使用。 ... [详细]
  • 作为一名程序员,从大学步入职场后,常常感受到一种难以言喻的空虚感。这种感觉或许源于对生活的不满、职业发展的瓶颈,或是日常琐事带来的压力。本文将深入探讨这种复杂的情感,并尝试寻找解决之道。 ... [详细]
  • 深入解析:阿里实战 SpringCloud 微服务架构与应用
    本文将详细介绍 SpringCloud 在微服务架构中的应用,涵盖入门、实战和案例分析。通过丰富的代码示例和实际项目经验,帮助读者全面掌握 SpringCloud 的核心技术和最佳实践。 ... [详细]
  • 本文深入探讨了C++对象模型中的一些细节问题,特别是虚拟继承和析构函数的处理。通过具体代码示例和详细分析,揭示了书中某些观点的不足之处,并提供了更合理的解释。 ... [详细]
author-avatar
狠毒的水瓶_617_223_489_321
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有