因此,我们都听说过《程序员权利法案》,而XP也有类似的概念。
这些天来,我们经常听到人们对人们的权利有很多了解,但对他们的责任却知之甚少,所以程序员的责任清单上应该写些什么。那是他们应该做的事情,他们可能会觉得不愉快,但是那会使程序员在职业上和负责任的行为与不这样做的人分开。
我主要对难吃的食物和那些不太可能发生的食物感兴趣。那是程序员倾向于回避和避免的,而不是90%的程序员实际上想要做的(例如始终重构和使用源代码控制)。
那么,程序员责任法案应包含哪些内容?
因此,我们都听说过《程序员权利法案》,而XP也有类似的概念。
这些天来,我们经常听到人们对人们的权利有很多了解,但对他们的责任却知之甚少,所以程序员的责任清单上应该写些什么。那是他们应该做的事情,他们可能会觉得不愉快,但是那会使程序员在职业上和负责任的行为与不这样做的人分开。
我主要对难吃的食物和那些不太可能发生的食物感兴趣。那是程序员倾向于回避和避免的,而不是90%的程序员实际上想要做的(例如始终重构和使用源代码控制)。
那么,程序员责任法案应包含哪些内容?
Answers:
程序员有责任推回糟糕的需求,而不是盲目地实现它们。这包括告诉客户他们想要的东西比其他选择更昂贵,或者存在特定的风险。它还包括以专业的方式传达坏消息-不要尖叫,称人们愚蠢,暗示他们愚蠢或其他幼稚的行为。如果他退后一步,他应该有一系列原因(不仅仅是“我不喜欢SQL Server,不会使用它”),还有一个替代方案。
但是,程序员也有责任接受决策,并使用他们不喜欢的工具或设计(如果他们的推回不被接受)。如果在SSRS中请求了报告,则不能接受在Crystal Reports(客户端可能没有的报告)中提供报告。如果需要.net解决方案,那么在Haskell中交付它是不可接受的。如果团队中没有其他人使用您想要使用的工具或语言,那么如果管理层不同意使用特定工具或语言的最佳工具,那么使用它是不专业的。
程序员有责任测试他的工作。(这不应该是唯一的测试,但是没有专业的程序员应该发出他尚未测试的代码。)这甚至包括测试您不希望经常碰到的代码分支。如果您有一组嵌套的IF,请测试所有可能的路由。
程序员有责任优雅地处理错误和异常,并编写错误消息,使用户看到这些错误消息是专业,中立的,不会开玩笑或侮辱人。
程序员有责任保护私有数据,保护他为公司编写的专有代码,并保护用户免受使用应用程序带来的灾难(甚至是自发的灾难)。
程序员有责任确保他的代码可维护并且在源代码控制中。
程序员有责任与他人进行协调,以确保他的更改不会对他们所做的事情产生不利影响。
程序员有责任在设计阶段为工具或语言的客户推荐最佳选择,而不是他想使用和学习的工具/语言。
程序员有责任与所有合适的人员一起工作,包括他不喜欢的人员。喜欢别人不是你的工作,和他们一起工作并保持礼貌是你的工作。
程序员有责任生产在合理的时间内完成指定工作的产品。如果不符合时间表,则他或她有责任在已知的情况下尽快通知管理层。
程序员有责任让项目管理人员了解完成工作的障碍。他们无法解决未知的问题。
程序员有责任完成整个任务,而不仅仅是有趣的部分。每个工作都有一些无聊的部分,但仍然需要完成。这包括时间表和将讨论项添加到项目管理软件中。它包括文档,代码审查等内容。
程序员有责任学习他所支持的业务领域,而不仅仅是编程概念。
程序员有责任使自己的技能保持最新。
当程序员陷入困境时,他有责任尽全力尽快解决问题。这可能包括向管理层传达坏消息,而不是试图隐瞒您刚刚删除了生产数据库中的关键表。
程序员与任何其他工人都有相同的责任-按时出现,按约定的时间工作,提前请求休假时间,接听电话和电子邮件(很难阅读他们的电子邮件),填写以下表格人力资源等
每个程序员都应使其他人可读其代码。
程序员负责所有用户提供的数据的隐私和安全。特别是密码,信用卡号,电子邮件地址和实际位置。
不要让用户失去工作。
这比听起来难得多……工作不仅仅是“文件中的数据”……这是用户花在软件上的任何时间。
例如,如果用户用29个有效项和1个无效项填写了您的30字段表单,请不要清除所有有效数据来抱怨1个无效项(哎呀,甚至不要清除无效项。) 。可能很长,只需要进行较小的更正,否则如果您清除它,用户将不记得它是什么了)
一个不明显但很重要的例子是Windows和几乎所有其他“文件管理器”软件都出了问题。...如果我花了半个小时仔细地按Ctrl-Click'ing来选择一组文件,而我不小心做了Click而不是按住Ctrl键单击,它不应清除所有以前选择的文件,使我重新开始。
他们又错了...如果我不小心按了Ctrl-A(而不是隔壁的Ctrl-S),它应该不会丢失我在文件中的位置并将光标放在开头。程序“丢失”在文件“工作”中的正确位置。
还有一个:TortoiseSVN的“提交”对话框中有一长串文件。在点击“提交”之前,您可以浏览文件列表,双击每个文件,在第二个对话框中查看其更改。为了快速执行此操作,有时我仅使用键盘,单击<Esc>
以关闭第二个对话框并返回第一个对话框。如果我不小心打了<Esc>
两次,它也会关闭第一个对话框,这使我忘记了我要处理的文件。
程序员有责任尊重其程序将在其上运行的系统。开发和测试完成后,该程序将被部署以用于其预期目的,并且通常需要其他人在其计算机上运行该程序。程序员需要记住这一点:他的程序是在别人的财产上运行,而不是在别人的财产上运行,并且需要在自己家中以客人的身份行事,而不是像占有房子一样闯入。
例如,他的程序不应:
照照镜子,可能会发现程序员本人的最坏素质。然后每天努力消除它们。
- 程序员的责任是创建能够满足程序员与客户之间任何合同中规定的要求,分析,设计和规范需求的软件。
- 程序员的责任是创建经济,可靠并在实际计算机上有效运行的软件。
- 程序员的责任是尽可能高效,道德合规地开展工作,并以最大的专业素养进行工作。
其中一些适用于“编程公司的”职责。
特别是当程序员来自其他平台/语言时。很难找到程序员为核心库提供的东西而苦苦挣扎,或者由于无知而滥用平台优势。
记录下来的代码供其他人使用非常重要,但是在可维护性方面,自我记录代码实际上可以节省数小时的无聊时间。
例如比较:
// validates if is leap year
if( year % 4 == 0 && (year % 100 != 0 || year % 400 == 0) ) {
doSomethingWithFebruary();
}
至
if( isLeapYear( year ) ) {
doSomethingWithFebruary();
}
程序员负责将产品积压中的用户案例转换为可工作的和可交付的软件增量
因此,管理人员应确保自己达到目标。
程序员行会的5条戒律
1.)每周和节假日检查他/她的密码。
2.)提供编程社区的需求。
3.)每年至少阅读一本编程书籍。
4.)每年至少参加一次编程会议。
5.)承担自己的错误。
我将“始终记录所做的任何假设”添加到列表中。:-)