作为程序员,你在编程以外的领域需要了解多少知识?

15
我想知道作为程序员,除了编程之外还需要做哪些工作(例如:本地设置、服务器设置、部署等)。我很好奇人们会执行多少与编程无关的任务。
例如,在Web开发项目中,我经常会:
  • 安装服务器
  • 管理用户权限/访问服务器
  • 执行备份
  • 配置IIS / Apache
  • 设置FTP站点
在非Web项目中,我经常会:
  • 编写构建脚本
  • 设置源代码管理工具/流程
  • 可能还有其他一些我没有想到的事情
有些任务与编程更相关(如编写构建脚本),但其他任务则超出了我的专业领域(例如域设置)。只是想了解有多少人在工作中执行与编程无关的任务。

@David Belanger:作为一个希望SO-proper保持“纯粹”的人,这个问题不适合。但如果它是在另一个地方的维基问题(即不在这里),那么它就适合。 - George Stocker
以你的问题为例,它一开始很好(询问程序员在编程之外做什么),但后来变得主观化,变成了“在你看来...是好事还是坏事?”这是一个编程问答网站。如果你想要讨论,标记为wiki,也许会保持开放状态。 - George Stocker
Gortok,感谢您详细解释为什么该主题被关闭。在大多数情况下,主题会被关闭而没有详细的解释。 - Chuck Conway
@Gortok:我预料到会有人反思自己是否喜欢做非编程工作,因此加入了他们是否认为这是好事的部分。我已经编辑了帖子,删除了更主观的部分,并标记为维基。 - Zero Cool
在这种情况下,我提名重新开放。但是,我不是很喜欢这类问题,通常不会将它们标记为重新开放。请不要个人化,这并不意味着我不喜欢您。 - George Stocker
显示剩余3条评论
19个回答

24
悲哀的现实是,非技术人员看待技术人员时期望他们了解所有与技术有关的事情,却不理解在技术领域中存在着专业化,我们可能对其中某些方面一无所知。
我常常认为这很像一名专攻某个学科的医生。所有医生都具备基本的医学知识,但不会了解其他专业的具体情况(心脏病专家不会像麻醉科医生那样了解麻醉学)。
因此,虽然我认为人们期望技术人员知道一切是不合理的,但我也认为当涉及到技术时,期望我们知道一些东西是合理的。
我认为这个问题更重要的方面是,一个人被期望了解他们应用技能的特定领域的程度(金融、制造等等)。我认为这是极其重要的,因为拥有这个领域的知识使他们作为程序员更有价值,他们可以深入理解问题,并因此提供更全面的解决方案。

我完全同意更多的知识能使你变得更加有效,因为有了这些知识。当发生这种情况时,会有一种深刻的满足感。谢谢您的回复。 - Zero Cool
@David Belanger:感谢您提出这个问题。 - casperOne

5

期望的收获?几乎没有,但是当你了解更多时,每个人都会非常高兴。

在编程的狭窄范围之外,你知道的越多,你就越有价值。

我遇到过的一些事情:

  • 需求收集
  • 编写用例
  • 评估测试计划
  • 与供应商谈判
  • 税法
  • 收益确认规则
  • 关于用户行为的想法
  • 基本经济理论
  • 可用性指南
  • 不同国家消费者行为的差异
  • 系统管理(成为一个全面的系统管理员)
  • 数据库配置、优化、设置(基本上成为一个DBA)
  • 监控系统
  • 网络原理和技术(当调试某些东西时,你会惊讶地发现数据包跟踪是多么方便...)
  • 能够评估别人编写的商业计划
  • 图像处理
  • 如何化解局面并避免争论
  • 如何将某人逼得做出不想做的事情
  • 如何选择战斗

我知道这已经关闭了,但我希望可以投多次赞! - thursdaysgeek

3

我认为在我的编程工作中,我最常用的非编程技能是写作。能够清晰地解释思想、设计和算法等非常关键,而且你不能总指望亲自解释(或者有时间)。在工作中,我花费了很多时间编写设计文档和其他文档,以便其他工程师能够理解我的代码和算法。所以我非常感谢我在学校里接受过好的写作课程,并且能够组织好句子。


2

可能取决于您所在公司的规模。作为主要在中小型企业工作的人,我还负责:

数据库创建、管理和调整 支持我启动的内部应用程序 管理网站证书 设置外部托管 当然还有更多


抄我的答案 :-( ... 给你加一分 - tsimon
是的,作为一名网站开发人员,我经常被要求帮助进行图形设计、视频转换、网络摄像头设置、电子邮件营销、账户设置、远程访问等等。你说出来的我都可能会做。我认为很少有非技术业务能够像我们想要的那样专业化。 - Dana

1

嗯,由于程序员的主要工具是计算机,我认为可以假定有一些相关专业知识。对于那些你描述的大多数事情,对于不熟悉计算机的人来说可能很难,但对于了解该领域并且知道如何查找和阅读文档的人来说,这些任务会变得相对容易(即使之前没有经验)。

在一个大型、组织良好的企业或项目中,我希望更熟悉这些行政工作的人来处理它们。然而,如果这些任务不足以支持一个全职工作,那么让任何有能力的人来完成这些任务是不过分的;而在这方面,程序员可能处于领先地位。


1
我发现用户发现的绝大多数“错误”实际上是应用程序安装的系统配置问题。拥有了解常见机器和网络设置错误的开发人员非常理想。
例如,如果一个应用程序在其操作中发送电子邮件,那么拥有对DNS和SMTP配置有知识的开发人员将非常有用。
当然,这取决于您的企业规模,大型组织可能可以通过使用其他专家来保护开发人员免受此类问题的影响。

1

我意识到我从来没有被雇用来做实际的工作,而是作为一个问题解决者。无论是通过代码、软件还是网络上的某些东西找出问题所在并加以修复,这似乎是客户想要的主要印象。


0

这将根据您所处的位置而有很大不同。我曾与一些不懂这些知识的人和一些专家合作过。

了解这些将对您非常有帮助。通常最好了解您的代码运行环境。如果不了解上下文,您会感到无助。

此外,通常存在与代码无关但与配置相关的错误,例如由于Apache配置而未显示页面。如果您不了解环境,则在调试时非常受限。


0

在工作场所周围,人们可能会期望程序员成为他们的IT HelpDesk人员...这种情况在我身边发生过。唉。


0
在我的工作单位,所有的开发人员都需要能够使用Subversion,并且必须能够在他们的计算机上设置和配置Apache和Tomcat。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接