程序员责任法案[关闭]


40

因此,我们都听说过《程序员权利法案》,而XP也有类似的概念。

这些天来,我们经常听到人们对人们的权利有很多了解,但对他们的责任却知之甚少,所以程序员的责任清单上应该写些什么。那是他们应该做的事情,他们可能会觉得不愉快,但是那会使程序员在职业上和负责任的行为与不这样做的人分开。

我主要对难吃的食物和那些不太可能发生的食物感兴趣。那是程序员倾向于回避和避免的,而不是90%的程序员实际上想要做的(例如始终重构和使用源代码控制)。

那么,程序员责任法案应包含哪些内容?


4
此外,我认为它符合准则1,2,4和6
斯蒂芬富拉尼

2
我认为这是一个重要的问题。
HLGEM 2010年

1
一个重要的后续行动可能是“如何培训自己成为负责任的程序员?”
Stephen Furlani 2010年

2
这个问题似乎只是在生成项目列表。尽管答案相当令人印象深刻(我赞扬那些将时间和精力投入到帖子中的回答者),但它们以意见为中心,问题的措辞使我感到民意调查。
Thomas Owens

5
@ThomasOwens强烈不同意“此问题不适合我们的问答格式”。这已经产生了有关开发人员测试,开发方法,自由职业和业务问题,质量保证和软件工程的答案,如果上述问题一直很严峻,我们真的开始不确定为什么我们甚至拥有这个站点。
2012年

Answers:


41
  • 程序员有责任推回糟糕的需求,而不是盲目地实现它们。这包括告诉客户他们想要的东西比其他选择更昂贵,或者存在特定的风险。它还包括以专业的方式传达坏消息-不要尖叫,称人们愚蠢,暗示他们愚蠢或其他幼稚的行为。如果他退后一步,他应该有一系列原因(不仅仅是“我不喜欢SQL Server,不会使用它”),还有一个替代方案。

  • 但是,程序员也有责任接受决策,并使用他们不喜欢的工具或设计(如果他们的推回不被接受)。如果在SSRS中请求了报告,则不能接受在Crystal Reports(客户端可能没有的报告)中提供报告。如果需要.net解决方案,那么在Haskell中交付它是不可接受的。如果团队中没有其他人使用您想要使用的工具或语言,那么如果管理层不同意使用特定工具或语言的最佳工具,那么使用它是不专业的。

  • 程序员有责任测试他的工作。(这不应该是唯一的测试,但是没有专业的程序员应该发出他尚未测试的代码。)这甚至包括测试您不希望经常碰到的代码分支。如果您有一组嵌套的IF,请测试所有可能的路由。

  • 程序员有责任优雅地处理错误和异常,并编写错误消息,使用户看到这些错误消息是专业,中立的,不会开玩笑或侮辱人。

  • 程序员有责任保护私有数据,保护他为公司编写的专有代码,并保护用户免受使用应用程序带来的灾难(甚至是自发的灾难)。

  • 程序员有责任确保他的代码可维护并且在源代码控制中。

  • 程序员有责任与他人进行协调,以确保他的更改不会对他们所做的事情产生不利影响。

  • 程序员有责任在设计阶段为工具或语言的客户推荐最佳选择,而不是他想使用和学习的工具/语言。

  • 程序员有责任与所有合适的人员一起工作,包括他不喜欢的人员。喜欢别人不是你的工作,和他们一起工作并保持礼貌是你的工作。

  • 程序员有责任生产在合理的时间内完成指定工作的产品。如果不符合时间表,则他或她有责任在已知的情况下尽快通知管理层。

  • 程序员有责任让项目管理人员了解完成工作的障碍。他们无法解决未知的问题。

  • 程序员有责任完成整个任务,而不仅仅是有趣的部分。每个工作都有一些无聊的部分,但仍然需要完成。这包括时间表和将讨论项添加到项目管理软件中。它包括文档,代码审查等内容。

  • 程序员有责任学习他所支持的业务领域,而不仅仅是编程概念。

  • 程序员有责任使自己的技能保持最新。

  • 当程序员陷入困境时,他有责任尽全力尽快解决问题。这可能包括向管理层传达坏消息,而不是试图隐瞒您刚刚删除了生产数据库中的关键表。

  • 程序员与任何其他工人都有相同的责任-按时出现,按约定的时间工作,提前请求休假时间,接听电话和电子邮件(很难阅读他们的电子邮件),填写以下表格人力资源等


7
喜欢笑话错误消息。情况已经很糟糕了,没有必要比这更严重了-至少尝试让我发笑的同时给我打一个错误!
汉尼拔·莱克特博士

2
我质疑开发人员在所有情况下亲自测试他的代码的责任...我要重新声明一下,以确保他的代码得到测试 ...如果组织拥有专业的测试人员(包括自动化人员和人工人员)并且制定了可靠的流程为了确保代码已经过测试,我不明白为什么开发人员必须亲自进行测试。如果我要开发新功能或修复错误,请确保自己进行测试,否则我将不知道自己是否完成工作。但是,如果我要进行大型重构,则对整个产品进行详尽的回归测试对我来说是没有意义的。
JoelFan 2010年

我没有说回归测试,但是您应该对更改进行单元测试,以确保更改能够达到您的预期。
HLGEM 2010年

2
错误消息中没有感叹号怎么办...即“日期无效!”
JoelFan 2010年

1
这些需要不分性别。使它们成为当务之急将使其变得更容易,例如,应改为“测试您的工作”,而不是“程序员负责测试其工作”。
锡吉尔2014年

42

每个程序员都应使其他人可读其代码。


@凯文·D:这一种责任。您有责任产生易于理解的代码。
doppelgreener 2010年

1
@Axidos,这是因为一旦我意识到自己做了什么,便更改了答案。
dan_waterworth 2010年

我将删除原始评论,因为它不再相关。
凯文D

1
“可读”是谁?我的“同龄人”(即受过类似教育并具有与我类似的经历的人)?有人谁是真正受过良好教育的艺术和科学?还是没有比达特茅斯(Dartmouth)BASIC更先进的业务的飞天猴子(flying code Monkey)?
约翰·R·斯特罗姆

7
@John,在这种情况下,其他人意味着其他程序员。在句子中:“长颈鹿比其他的大。”我们不认为其他的意思是飞行的猴子。“其他”是指“尚未提及的更多同类”。
dan_waterworth 2010年

22

程序员负责所有用户提供的数据的隐私和安全。特别是密码,信用卡号,电子邮件地址和实际位置。


这确实属于系统架构师的范畴。在许多企业场景中,程序员对数据存储没有发言权或控制权。当我要做的只是访问而不是创建数据库时,如何对数据库中的电子邮件地址负责?
Neal Tibrewala 2010年

2
我想Facebook人员不需要就上述大部分职责进行申请。:)
MetalMikester 2010年

4
-1那是太多的责任。
彼得·特纳

6
也许对于大型系统,一个程序员可能无法决定。但是对于一个或几个程序员工作的绝大多数站点,绝对需要正确存储数据。不需要哈希时无需加密,无需自定义算法,也无需担心安全性。真实,经过测试的安全性。
Malfist 2010年

@尼尔:系统架构师只是另一个程序员。当然,对于大型项目,他可能不会进行任何编程,但这并不意味着他不是程序员。而且,这仅适用于大型项目;在2人或3人项目中,程序员通常负责数据库的某些部分或全部。确保安全地保存数据是他的责任。
configurator 2010年

20

不要让用户失去工作。

这比听起来难得多……工作不仅仅是“文件中的数据”……这是用户花在软件上的任何时间。

例如,如果用户用29个有效项和1个无效项填写了您的30字段表单,请不要清除所有有效数据来抱怨1个无效项(哎呀,甚至不要清除无效项。) 。可能很长,只需要进行较小的更正,否则如果您清除它,用户将不记得它是什么了)

一个不明显但很重要的例子是Windows和几乎所有其他“文件管理器”软件都出了问题。...如果我花了半个小时仔细地按Ctrl-Click'ing来选择一组文件,而我不小心做了Click而不是按住Ctrl键单击,它不应清除所有以前选择的文件,使我重新开始。

他们又错了...如果我不小心按了Ctrl-A(而不是隔壁的Ctrl-S),它应该不会丢失我在文件中的位置并将光标放在开头。程序“丢失”在文件“工作”中的正确位置。

还有一个:TortoiseSVN的“提交”对话框中有一长串文件。在点击“提交”之前,您可以浏览文件列表,双击每个文件,在第二个对话框中查看其更改。为了快速执行此操作,有时我仅使用键盘,单击<Esc>以关闭第二个对话框并返回第一个对话框。如果我不小心打了<Esc> 两次,它也会关闭第一个对话框,这使我忘记了我要处理的文件。


5
尽量不要让键盘快捷键与分配给各个键的功能彼此相反(例如,CTRL-C和CTRL-V,无法告诉您要复制多少次,如果我打算粘贴时复制了,反之亦然)
HLGEM 2010年

5
@HLGEM,自相矛盾的是,设计此方法的人可能以为他通过将它们彼此相邻来帮我们一个忙
JoelFan 2010年

4
他不是吗?我的意思是,您没有Emacs的全部功能,但是您无需大量动手就可以复制和粘贴。
compman 2010年

1
使用Total Commander。右键单击以选择,然后右键单击以取消选择。除非在更改当前要监视的文件夹的同时导航到其他地方或长时间失去焦点,否则您不会丢失选择。
configurator 2010年

1
对于最后一个示例(Ctrl-A在文件中丢失了我的位置),最近我发现了一种可在许多程序中使用的局部解决方法... Ctrl-Z,Ctrl-Y ....将撤消我对文件内容,然后“重做”,结果内容与以前相同,我位于编辑位置。这不一定与我误将Ctrl-A之前的光标所处的位置相同,但它通常足够接近...这当然不能为程序在Ctrl-A上的不良行为辩解...这只是部分解决方法并花了我一段时间
JoelFan 2010年

15

程序员有责任尊重其程序将在其上运行的系统。开发和测试完成后,该程序将被部署以用于其预期目的,并且通常需要其他人在其计算机上运行该程序。程序员需要记住这一点:他的程序是在别人的财产上运行,而不是在别人的财产上运行,并且需要在自己家中以客人的身份行事,而不是像占有房子一样闯入。

例如,他的程序不应:

  • 未经用户同意更改全局设置。(包括共享库管理问题。)
  • 未经用户同意,删除或修改属于用户或其他程序的数据。
  • 未经用户同意自行更新。
  • 使其本身很难卸载。
  • 使自己难以关闭。
  • 如果程序无法通过容易犯错的许可证检查,请自行禁用或以任何方式干扰计算机的正常运行
  • 假定它是在系统上运行的唯一重要程序,并相应地占用系统资源。(当然,对于实际的单任务计算机或可以合理预期用户单独运行的程序(例如沉重的全屏游戏),可能会有所例外。)
  • 当用户在其他程序中执行其他操作时,将使用弹出窗口在用户面前跳出。(我在看着你,Yahoo Messenger!)

1
我真的很喜欢那些既是用户又是程序员的人。我在码头上弹跳的图标是引起我从未遇见的人愤怒的第一大原因。
Agos 2010年

7
除了“未经用户同意自行更新”外,我都喜欢它们。我发现Chrome更新本身的方式令人耳目一新-我喜欢仅寻找新功能。但是,其他程序的执行方式却令人讨厌。我在看Java,在看你,在Acrobat Anything。不要问我,如果我要天天更新你的。我说过一次,做个提示!
configurator 2010年

2
如果程序要自动更新,则至少应在第一次时征得用户的同意。
gablin

TortoiseSVN的另一种违规行为...对其执行几乎所有操作都会导致系统停止运行
JoelFan 2010年

@SpashHit:嗯?我每天都使用TortoiseSVN,但我从未注意到...
梅森·惠勒2010年

8

软件工匠宣言中

作为有抱负的软件工匠,我们通过实践和帮助他人学习工艺来提高专业软件开发的水准。通过这项工作,我们开始重视:

  • 不仅可以使用软件,还可以使用精心制作的软件

  • 不仅响应变化,而且稳步增加价值

  • 不仅是个人和互动,还是专业人士社区

  • 不仅是客户协作,而且是富有成效的合作伙伴

也就是说,在追求左边的项目时,我们发现右边的项目必不可少。


8

照照镜子,可能会发现程序员本人的最坏素质。然后每天努力消除它们。

  1. 没有学习任何新知识
  2. 不寻求扩展技能
  3. 不对新人开放,坚持旧习惯
  4. 不关心您的工作质量
  5. 不寻求提高工作质量
  6. 做一个9到5的员工,没有热情
  7. 对事物没有自己的看法
  8. 接受别人的意见而不会质疑
  9. 相信你已经学到了一切
  10. 不容忍任何批评
  11. 不收听外部输入
  12. 以自我为中心,了解所有人
  13. 人格消极,批评别人

+1,但是用这种方式措辞会使它相当消极。
dan_waterworth 2010年

1
我发现#13非常具有讽刺意味,因为从本质上讲,这实际上是您在这里所做的事情。
达斯汀·拉森纳

6
  • 程序员的责任是创建能够满足程序员与客户之间任何合同中规定的要求,分析,设计和规范需求的软件。
  • 程序员的责任是创建经济,可靠并在实际计算机上有效运行的软件。
  • 程序员的责任是尽可能高效,道德合规地开展工作,并以最大的专业素养进行工作。

其中一些适用于“编程公司的”职责。


4
  • 程序员应了解并使用所使用的核心库和平台。

特别是当程序员来自其他平台/语言时。很难找到程序员为核心库提供的东西而苦苦挣扎,或者由于无知而滥用平台优势。

  • 程序员应创建自我记录代码

记录下来的代码供其他人使用非常重要,但是在可维护性方面,自我记录代码实际上可以节省数小时的无聊时间。

例如比较:

// validates if is leap year
if(  year % 4 == 0 && (year % 100 != 0 || year % 400 == 0) ) { 
     doSomethingWithFebruary();
}

if( isLeapYear( year ) ) { 
    doSomethingWithFebruary();
}

4

编程是一种职业,而不是一种技能。这意味着程序员有责任在最新的工具,技术和技术上保持与时俱进。

这可能意味着退回管理人员,让他们有时间进行持续的学习和培训,或者自己动手做。


2

1)清楚地说明,要解决任何问题,都必须在性能,成本,时间和质量之间进行权衡。

2)完善相关文档,无论是发布说明还是测试计划。(文档会随公司类型和规模而变化)

3)为他们的工作要求正确的工具(很多人抱怨这件事,但从来没有以合理的理由接近老板以得到他们所需的东西)

...其他人无疑会跟随。


2

对任何问题提出疑问-程序员应负责查询可能需要系统执行或处理的任何事情。这可以包括询问用户可能认为是愚蠢的问题,因为有许多站点专门显示用户可以执行的操作。 每日WTFSharkTank是几个例子,尽管我敢肯定还有其他例子。


1

程序员负责将产品积压中的用户案例转换为可工作的和可交付的软件增量

因此,管理人员应确保自己达到目标。


1

这是我的建议。

  1. 程序员应该要求程序员权利法案中规定的工作条件,以免降低职位标准。

(对于“程序员”,我的意思是“程序员”,而不是“周末黑客”,因此隐含了程序员应该做的所有标准工作。)


-1。我认为责任不是“需要”权利的责任。
Craige

1

程序员行会的5条戒律

1.)每周和节假日检查他/她的密码。

2.)提供编程社区的需求。

3.)每年至少阅读一本编程书籍。

4.)每年至少参加一次编程会议。

5.)承担自己的错误。


“每周和节假日检查他的代码”吗?你是说每小时一次,对不对?
configurator 2010年

@configurator我的意思是说这些只是给自己打电话给程序员的最低要求。但越多越好签账
Peter Turner 2010年


0

程序员不应该执行或实施任何不道德或违法的事情,例如编写病毒或入侵他人的系统(除非要发现安全漏洞,然后将其告知受害者,以及他或她可以做些什么来避免这种情况发生)被任何恶意黑客利用)。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.