15

我想知道你作为一个程序员所做的不是编程,而是你的任务所必需的(例如:本地设置、服务器设置、部署等)。我很想知道人们正在执行多少与编程无关的任务。

例如,在进行 Web 开发项目时,我经常:

  • 安装服务器
  • 管理用户权限/访问服务器
  • 执行备份
  • 配置 IIS/Apache
  • 设置 FTP 站点

在非网络项目中,我经常:

  • 编写构建脚本
  • 设置源代码管理工具/程序
  • 可能还有更多我没有想到的东西

有些任务比其他任务与编程更相关(例如编写构建脚本),但其他任务超出了我的专业领域(想到了域设置)。只是想知道有多少人在他们的工作中执行与编程无关的任务。

4

19 回答 19

24

可悲的现实是,非技术人员看着技术人员并期望他们了解与技术相关的一切,而不了解技术中存在我们可能一无所知的专业。

我经常认为它非常像专门研究某一学科的医生。所有医生都有医学领域的基本知识,但不知道其他专业的细节(心脏病专家对麻醉学了解不多,反之亦然)。

因此,虽然我认为人们期望技术专家无所不知是不合理的但我确实认为他们期望我们在技术方面有所了解是合理

我认为这个问题的一个更重要的方面是,人们应该对他们应用技能的特定领域(金融、制造等)了解多少。我认为这非常重要,因为拥有这些领域知识使他们作为程序员更有价值,因为他们可以深入理解问题,从而为他们提供更全面的解决方案。

于 2009-02-03T22:39:11.180 回答
5

预期的?几乎什么都没有,但是当你知道的更多时,每个人总是很高兴。

你在编程的狭隘范围之外了解得越多,你对你的雇主就越有价值。

我遇到的事情:

  • 需求收集
  • 编写用例
  • 评估测试计划
  • 与供应商谈判
  • 税收法
  • 收入确认规则
  • 关于用户行为方式的想法
  • 基本经济理论
  • 可用性指南
  • 不同国家消费者行为的差异
  • 系统管理(完整的系统管理员)
  • 数据库配置、优化、设置(基本上是 DBA)
  • 监控系统
  • 网络原理和技术(你会惊讶于数据包跟踪在调试某些东西时是多么方便......)
  • 能够评估别人写的商业计划书
  • 图像处理
  • 如何分散情况并避免争论
  • 如何逼迫某人并让他们在不想做某事时做出承诺
  • 如何选择战斗
于 2009-02-03T22:43:08.767 回答
3

我认为我在编程工作中使用最多的非编程技能是写作。能够解释想法、设计、算法等真的很重要,而且你永远不能指望亲自去做(或有时间)。我花费大量时间编写设计文档和其他文档,以便其他工程师可以了解我的代码和算法。所以我真的很感谢我在学校有很好的写作课,可以把一个句子放在一起。:-)

于 2009-02-03T22:44:29.390 回答
2

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

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

于 2009-02-03T22:40:26.713 回答
1

好吧,由于程序员的主要工具是他的计算机,我认为假设一些专业知识是公平的。您描述的大多数这类事情对于不熟悉计算机的人来说是困难的,但对于了解该领域并知道如何查找和阅读文档的人来说却很容易(即使没有以前的经验)。

在一个组织良好的大型企业或项目中,我希望有人更具体地熟悉这些管理事务来处理它们。但是,如果没有足够的人来保证全职工作,那么我认为让任何有能力的人来做这件事是不合理的;在这方面,程序员可能处于领先地位。

于 2009-02-03T22:37:39.857 回答
1

我发现用户发现的绝大多数“错误”都是安装应用程序的系统的配置问题。让开发人员了解常见的机器和网络设置错误是非常可取的。

例如,如果应用程序发送电子邮件作为其操作的一部分,那么让开发人员了解 DNS 和 SMTP 配置很有用。

当然,这取决于您的业务规模,大型组织可能会通过使用其他专家来保护开发人员免受此影响。

于 2009-02-03T22:40:07.573 回答
1

我意识到我从来没有被聘为实际工作,而是作为解决问题的人。无论我是弄清楚发生了什么,然后通过代码、软件或网络上的东西来修复它,这似乎都是对客户想要什么的主要看法。

于 2009-02-03T22:51:56.143 回答
0

这将根据您所在的位置而有很大差异。我曾与对这些东西一无所知的人以及专家一起工作过。

了解这一点会对你有很大帮助。一般来说,了解代码运行的环境总是更好。不了解上下文会让你有些无助。

此外,通常存在与代码无关但与配置相关的错误,例如由于 apache 配置而导致页面未显示。如果您不了解环境,那么您在调试方面会非常不利。

于 2009-02-03T22:35:19.673 回答
0

工作场所周围的人可能希望程序员成为他们的 IT HelpDesk 人员……这发生在我身边。啊。

于 2009-02-03T22:39:49.180 回答
0

在我工作的地方,所有开发人员都应该能够使用 Subversion,并且必须能够在他们的 PC 上设置和配置 Apache 和 Tomcat。

于 2009-02-03T22:40:03.907 回答
0

最大的挑战不是与启动和运行环境相关的技术问题,而是在小商店中有效开发软件所需的领域知识。对我来说,我在一个大部分孤立的开发环境中从事来自各种来源的许多不同项目。这意味着我需要快速掌握项目的领域,以便有效地开发解决方案。过去,我从事印刷会计解决方案、活动目录管理、研究调查数据库以及目前为慈善组织提供准 CRM 解决方案的工作。我希望我只需要知道设置我的开发和构建环境的具体细节。

于 2009-02-03T22:41:13.763 回答
0

这通常取决于公司的规模。在一家小公司,你必须知道如何做所有事情,包括系统管理员和网络管理员,即使你的工作专注于编程。

在一家大公司,你可以看到宇宙的一小部分,而他们通常不喜欢你在你的盒子外面偷看。您不仅不需要学习所有东西,而且如果您尝试,他们通常会对您不满意。

但是,您对机器、它们的工作原理以及它们在操作环境中的运行方式了解得越多,就越容易诊断问题和编写更好的软件。您对编写应用程序的领域了解得越多,就越能更好地区分用户的需求和他们的愿望。

作为一名软件开发人员,最酷的事情之一就是你有一个终生的借口可以将你的鼻子伸入技术和各种业务领域。如果你已经转移到几个不同的行业,你往往会被各种有趣的花絮压得喘不过气来。总是有更多的东西要学...

保罗。

于 2009-02-03T22:43:37.083 回答
0

让自己接触其他技术是件好事,但我真的认为不完全公开自己不是这些领域的专家(尤其是域设置)这一事实对你来说是个坏主意。我曾与那些认为自己可以完成所有任务但最终做得很差的人一起工作,以至于他们花费了所有的时间(和金钱)试图把它做好,顾问的报酬会比他们高出好几倍.

我曾在一家公司工作,负责“与计算机相关”的所有事情,包括域、PC、数据库、自定义软件、构建、MS Office、PowerPoint、Quickbooks……;开发和建造的中型公司;和一家大公司,我只专注于我的项目的 .Net 代码(其他人处理数据库,另一个人处理报告)。

迄今为止,中型公司一直是最好的体验(在大公司中相当新),在那里我被赋予了足够的责任来感到有用,并且可以轻松地与其他所有人联系以询问有关其他任务的问题。

于 2009-02-03T22:45:58.683 回答
0

你并不孤单。我报名的职位是“ASP.NET Web 开发人员”……但是,我的工作包括:

  • Windows 服务器管理
  • 有限的 Linux 管理(运行 top 以监控 CPU 利用率和更改 apache 配置)
  • LDAP 管理/调优
  • MS SQL Server 2005 管理/调优
  • 数据库开发
  • 水晶报表开发人员
  • Perl 脚本
  • C# Win32开发
  • C# / ASP.NET Web 开发
  • 管理 Windows 服务器的用户访问权限
  • 有限的网络故障排除

在一家不断追求最高“运营效率”的公司中,我的任务清单每天都在增长。我也没有编出那个清单。上面提到的所有项目,我在这家公司工作的过去 3 年里,要么接触过,要么支持过。

话虽这么说,在一个好的开发商店里,你应该有一个特定的任务。俗话说,万事通……万事通。

于 2009-02-03T22:49:57.553 回答
0

这在很大程度上取决于您正在编程的内容。如果您正在开发低级设备驱动程序,那么了解底层硬件至关重要。如果您正在开发一个独立的 Java 应用程序,那么您对所使用的 JVM 和库的了解越多越好 - 但并不是绝对有必要了解很多。

一般来说,您对系统环境了解得越多越好。你的同事和管理层希望你知道多少取决于他们。

无知终将受到惩罚。如果不是你的同行和管理层,全世界都会这样做。查看任何一周的头条新闻或风险摘要,了解对系统环境的无知导致软件故障的示例。

于 2009-02-03T22:50:51.217 回答
0

[咆哮模式开启] 哈,Excel 和 Word 的诅咒。

工作之余——尤其是朋友和家人,但有时在咨询或交付软件时,任何和所有非技术人员都希望您了解这些。当有人要求您查看他们在 Office 的某些方面遇到的一个小问题时,就会有一种内部的抱怨。并且因为它是客户,并且您希望显得乐于助人,所以您同意。

这只是一个全面的期望,因为你是一名开发人员,你对配置电子表格、修复 Word 模板以及任何和所有其他办公室技术人员任务具有天生的知识,此外,你可以将目光投向一些配置不当的 Office 混乱并立即诊断问题是什么。

我只能设法整理一个电子表格来安排我的重复发票并设置一个 Word 模板来编写它们。我也经常告诉人们——但从来没有人听过。

于 2009-02-03T22:54:45.703 回答
0

这在很大程度上取决于您当前正在开发的软件类型

例如,当我为当地政府开发软件时,我必须学习诸如

  • 登记动物(宠物)的规则是什么。什么是注册类型,适用哪些折扣,未按时注册的处罚是什么
  • 市政费是如何计算的。每年如何提高利率(实际上,提高每年利率的算法及其实现是我迄今为止遇到的最复杂的任务)。
  • 建筑许可证是如何发放的。可以执行哪些类型的检查。谁参与发放建筑许可证的过程(业主、建筑商、建筑师、官员等)
  • 水表多久读一次。如何将水表分配给物业,水表上有多少个刻度盘,如何将水表从一个物业上拆下并连接到另一个物业
  • 有哪些不同的养老金类型。根据养老金类型授予的不同折扣是什么。
  • 有哪些不同类型的收据。存在哪些不同类型的终端打印机(用于打印小收据的那些)以及如何打印到它们。
  • 什么是房产,地层子级,将房产划分为“地块”的规则是什么......

嗯,这只是我在项目的 2 年中学到的非编程知识的一部分。最不幸的是,现在我搬到了另一家公司,我几乎没有机会使用这些知识。

于 2009-02-03T23:04:48.333 回答
0

我的职位是“高级软件工程师”。事实上,在过去几年的大部分时间里,我很少进行软件开发,但确实做了很多:

系统和网络管理

使用 HTML 进行静态网页开发(我不考虑那种编程,虽然我做过 PHP、CGI 和 JavaScript)。

正如其他人所说,服务台之类的东西,虽然不像过去那么多。

作为“任务负责人”,我应该具备一些人事/管理技能,尽管这通常会涉及编写月度报告。我也时不时地沉迷于 CMMi 的东西,这在理想的世界中可能有点相关,但通常只是保存记录,以便雇主可以竞标需要它的新合同。

在科学实验室工作,需要了解一些科学知识,特别是如果您想/需要编写代码进行科学计算。

在(美国)政府机构工作,有很多文书工作,需要了解很多政府法规(例如信息自由法)

幸运的是,我最近进行了内部调动,我正在做更多的开发工作,而不是其他东西!

于 2009-02-03T23:23:24.193 回答
0

就个人而言,我发现知道更多总是好的,它为下一个层次铺平了道路。生活中最艰难的事情是在整合点。字面上地。人们非常注重专业,但不要忘记您需要能够跨越两个领域的人。

于 2011-06-15T02:20:10.523 回答