Questions tagged «communication»

有关程序员与参与软件开发的其他人之间的通信的问题。这可以包括利益相关者,管理层,最终用户,设计师,测试人员和其他开发人员。

19
您如何与非程序员分享您的技能?
有时我感觉自己像个音乐家,无法播放现场表演。编程是一项很酷的技能,并且用途广泛,但是很多事情发生在“镜头外”-在您的头上,办公室里,远离观众。 当然,您可以与其他程序员讨论编程,并且有对等编程,您确实可以创建可以向人们展示的内容,但是当涉及向非程序员解释时,您做了什么,或者如何做。您上班的日子有点棘手。 您如何让生活中的非程序员了解您的工作? 注意:这不是让非程序员了解开发过程的重复,因为该问题与管理客户期望有关。

17
我的沟通技能会浪费在软件工程职业上吗?[关闭]
我进入金融工程领域(在BA Math和BA Computer Science之后)大约5年(20%的分析/编程,80%的交流),并且以与人交流和讨论技术问题(即互动)的能力而感到自豪与团队)。我喜欢我的工作。去白板画抽象的想法和头脑风暴。 但是,由于种种原因,我想将自己的职业生涯过渡到一家技术公司(软件工程),但我非常担心自己会落入陈规定型的编程工作中,而程序员会戴着大大的耳机进行编码。我当然知道这只是一个刻板印象,但我之前(在初创公司)曾目睹过类似的环境,而且让我感到害怕的是,我会迁移到孤立的职业。 我喜欢通过算法进行编码和思考,但是我不想放弃与人的互动。我了解拥有沟通技巧只是一种积极的态度,但是我是通过过渡到软件工程来为自己的职业生涯失败做准备的。我希望听到任何澄清和/或建议。

19
当其他人构建了一个过于复杂的解决方案时,您在代码审查中怎么说?[关闭]
前几天,我审查了团队中某人写的代码。该解决方案不能完全发挥功能,而且设计过于复杂-意味着存储了不必要的信息,构建了不必要的功能,并且基本上,该代码具有很多不必要的复杂性,例如镀金,并且它试图解决不存在的问题。 在这种情况下,我问“为什么要这样做?” 答案是另一个人喜欢那样做。 然后,我问这些功能中的任何一项是否属于项目规范,或者它们是否对最终用户有用,或者是否有任何额外的数据会呈现给最终用户。 答案是不。 因此,我建议他删除所有不必要的复杂性。我通常得到的答案是“已经完成了”。 我的观点是,它没有完成,有错误,没有满足用户的要求,并且维护成本会比我建议的简单方法高。 一个等效的场景是: 同事花费了8个小时的手工重构代码,而这本可以在10秒内在Resharper中自动完成。自然,我不信任手工重构,因为它质量可疑且未经充分测试。 同样,我得到的答复是“已经完成了”。 对这种态度有什么适当的回应?

5
您如何解除牛仔编码器的武装?[关闭]
我发现了一个问题(团队中的牛仔代码),但它与“忍者编码器”的关系更大,而与我遇到的问题有关。 我有一个团队成员,他是“ 牛仔编码器 ”的真实代表。我确实知道不能改变人,但是是一种使他像“牛仔编码器”一样停止行为的方法吗? 他拒绝听取团队的意见,并且他最近停止了代码审查,单元测试,共享实施细节等。 是的,他可以快速“编码”,但是他的代码只是一个错误生成器。我和其他团队成员都处于“错误修复阶段”,其中80%的错误来自他的代码。我不想修复他的错误。管理层是盲目的,或者不想看到这一点,或者他们喜欢他的“速度”。 我(作为他年龄较小的同事,而不是老板)可以采取任何措施吗? 我该如何解除牛仔编码器的武装? 我觉得我是最后一个真正关心这个项目的人。

4
在IRC频道中提问时的礼节[关闭]
许多较大的OSS项目都维护IRC渠道以讨论其用法或开发。当我因尝试并未能在网络上找到信息而陷入使用项目的困境时,我试图弄清楚该怎么做的一种方法是进入IRC频道并询问。 但是我的问题总是被渠道中的人们完全忽略了。如果我进入时保持沉默,那么仍然会保持沉默。如果正在进行通话,则通话不会打扰。我将频道开放了几个小时,希望也许有人最终会吸引我,但是什么也没发生。 因此,我担心自己会以某种我不理解的方式粗鲁,或者违反一些潜规则而被忽视。我试图使我的问题讲究礼貌,讲究语法,并试图表明我已经尝试了显而易见的解决方案以及为什么它们不起作用。我了解到,我显然对频道上的人们完全陌生,但是我不确定如何解决此问题。我是否应该在频道中潜伏一个星期而不说什么?这似乎也很荒谬。 我发送的典型消息可能是“大家好-我一直在尝试让Foo正常工作,但是我一直在获取BarException。我尝试重置Quux,但这似乎无济于事。关于我可以尝试的建议?”

12
如何向新雇主解释我的5年精疲力竭?[关闭]
五年前,我失去了长期专注的能力,因此失去了以专业效率进行编码的能力。 我知道为什么会发生,我理解了它是如何发生的,除了能够重新建立自己的镇定,从而放松的注意力之外,我还克服了最初的想法(植根于童年时代),当时我的思想偏向于总体形势。我的理解并非植根于心理学家告诉我的话,我实际上是对它们一视同仁。我非常有信心能够提高生产力,甚至可能比精疲力尽。 我也从未对代码失去兴趣,也从未试图恢复自己的能力而迷路。我不断更新自己的知识(我总是可以相对轻松地学习与编码相关的知识,只是不应用它们),因此可以说我是一个比以前更好的开发人员,即使我那几年的平均LOC数量很小低。 另一方面,我现在拥有一部传记,其中包括在多尔工作的时间多于工作的时间。 什么能说服您作为雇主为我提出申请的机会?我不认为我应该将整个主题排除在外。 编辑:我想我应该补充一点,我没有开始从童年时代开始寻找原因,这是使我找到原因的解决方案。可惜的是,我没有尽全力去修复公司(这家公司在我离开时已经瓦解,并在一年后彻底瓦解),这深深地植根于这样一个事实:我小时候就放弃了修复父母的关系,错误地分配这是我本人在同情心上的失败,而不是一个完全没有希望的案例,而且我真的没有找到一种方法来解释这一点,而不必提及童年。不过,我完全可以这样说,而不会哭泣。 就是说,是的,我知道我现在是作为朋友而不是雇主给你们写信,这就是为什么我通过使用一次性帐户.oO(...)对您表示不信任的原因 是的,我打算在应用任何地方之前先发布一些OSS代码。 编辑2:我是德国人,打算在一家德国公司申请,所以“创意真相”绝对不是一个选择。 关于选择的答案:我选择了Renesis而不是Pierre,因为尽管后者在激励方面做得很出色,但我不应该放弃,并给我加分以加强我的社交技能部分,Renesis实际上回答了我的问题通过总结所涉及的关键因素。

11
在履历表上提及我的网志对求职有帮助还是有害?[关闭]
我有一个博客,主要用于记录我所遇到的问题的解决方案,这些问题很难找到答案。在大多数情况下,我通过Google搜索的在线文档提供的信息过多,因此我在第三个Google匹配的第五页上找到了问题的答案。 (或者,如果我在这里问这个问题,我要么没有得到答案,要么就因为提出“可以很容易地用谷歌搜索答案”的问题而被抨击。) 我经常在这个博客上查找一些东西,以提醒自己如何解决问题,并且它也从其他人那里获得了不错的点击率。 无论如何,我想知道在履历表中提及这个网志对求职有帮助还是伤害我?主题遍及整个地图。 我希望它显示的是 我是找到问题解决方案的人 我在工作中使用了许多不同的技术 我不怕应对挑战 我担心的是,它表明 这个人有麻烦吗? 为什么这个人不愿为这个东西写博客?

5
记录产品设计决策依据的有效方法是什么?
在我们公司,我们不使用任何产品设计文件。我们共有三名员工,因此所有产品设计讨论都当面或在Slack上进行。(我们还在基本的Slack软件包上,该软件包仅允许查看最新消息。) 我们的产品仍处于早期阶段,我们经常重新访问几个月前确定的设计元素。 我们经常痛苦地面临的一个问题是忘记了为什么要做出产品设计决策。这导致浪费了数小时来重读相同的地面。 我们如何有效记录设计决策背后的基本原理? 我们的工作流程基于Pivotal Tracker。我想到的一种解决方案是,将所有相关设计决策的依据记录为对用户故事本身的评论,但这似乎并不可靠。 要100%清楚:我不是在谈论代码的设计。我说的是由代码实现的产品设计。换句话说,我不是在谈论诸如“我们应该使用合成而不是多重继承来构造这个类吗?”之类的决策。我正在谈论诸如“我们应该要求用户在登录之前确认用户的电子邮件地址吗?”之类的决定。 该文档的目的是允许企业查看做出决策的原因的记录,以帮助做出有关同一主题的进一步决策。

7
如何改变草率的公司文化?[关闭]
有时,当我遇到需要解决的问题时,我发现解决该问题的最简单方法是编写一个小程序作为个人工具。我没有使它具有超级可用性或超强健性,因为我是唯一要使用它的人,而且我没有时间完善和全面测试它。 然后,一位同事看到了程序并提出了要求,因为他遇到了同样的问题,并且该工具可以提供帮助。我给他“这不是很漂亮,但可以完成工作”的免责声明,让他拥有。 我知道的下一件事,我的上司打电话给我,告诉我他正在尝试使该软件在客户的计算机上运行,​​但显示X错误消息。WTF ??该软件尚未发布,我也没有被告知需要发布。但是出于某种原因,我的上司认为它足够好,并在不通知原始开发人员的情况下发布了它。 现在,使用可以轻松解决此特定问题MessageBox.Show("DO NOT GIVE TO CLIENTS!");。但是,该问题表明存在更深层次的问题:我们的公司文化马虎。马虎软件可以,马虎进程也可以。不必担心未来-只需投入足够的精力使其几乎不能立即使用,将二进制文件放入.zip文件中,然后发货即可。足以胜任政府工作。 这是一家拥有10名全职员工的小型公司,正在成长,并且已经存在了一段时间。不要误会我的意思;我喜欢在这里工作,也喜欢公司。不要告诉我跑步;我想成为使公司变得更好的一部分。您如何开始为这种文化带来良好的变化?

9
如何处理关于“过早优化是万恶之源”的误解?
我遇到了很多人,他们在原则上反对任何在英语中通常被认为是“优化”的东西,他们经常逐字引用(部分)引用“过早的优化是万恶之源”。作为他们立场的理由,暗示他们将我所说的一切解释为“过早的优化”。但是,这些视图有时是如此可笑地根深蒂固,以至于它们几乎消除了任何与最纯粹的“天真的”实现方式有关的算法或数据结构偏差……或者至少与它们之前的工作方式无关。在听到“性能”或“优化”的消息后,人们如何才能像这样使人们再次“张开耳朵”?我该如何讨论对性能有影响的设计/实现主题,而又不会让人立即想到:“这个人想花两周时间来编写十行代码?” 现在,在这里以及在Web的其他角落已经讨论了 “是否所有优化都是过早的并因此有害的”的立场,并且已经讨论了如何识别优化何时过早并因此有害的立场,但是不幸的是,现实世界中仍有一些人不愿意挑战自己对反优化的信念。 以前的尝试 几次,我试图提供Donald Knuth的完整报价,以解释“过早的优化是不好的”↛“所有的优化都是不好的”: 我们应该忘记效率低下的问题,例如大约97%的时间:过早的优化是万恶之源。然而,我们不应放弃我们那临界的3%的机会。 但是,在提供完整报价时,这些人有时有时会变得更加确信我在做的是Premature Optimization™,并深入研究并拒绝听。好像“优化”一词使他们感到害怕:在某些情况下,我能够通过避免使用“优化(e | ation)”一词来提出实际的性能改进代码更改,而不会被否决。和“性能”(这个词也很吓人),而是使用“替代架构”或“改进的实现”之类的表达方式。因此,这似乎真的是教条主义,而不是他们实际上是对我的批评进行评估,然后视其为不必要和/或过于昂贵而将其驳回。

5
如何解释为什么设计选择好?[关闭]
已关闭。这个问题需要更加集中。它当前不接受答案。 想改善这个问题吗?更新问题,使其仅通过编辑此帖子来关注一个问题。 4年前关闭。 随着我成为一名更好的开发人员,我发现我的许多设计技能更多地来自于直觉而非机械分析。这很棒。它使我可以阅读代码并更快地体会到它。它使我可以轻松地在语言和抽象之间转换设计。它使我可以更快地完成工作。 缺点是,我发现很难向队友(更糟糕的是,管理层)解释为什么特定的设计是有利的。特别是在最佳实践方面落后于时代的队友。“这种设计更具可测试性!” 或“与继承相比,您应该更偏向于组成。” 直奔他们的脑袋,进入我的兔子洞,试图让所有人都了解软件工程的最新进展。 我当然会在实践上做得更好,但是与此同时,这会浪费很多时间和/或糟糕的设计(这将导致以后浪费时间进行修复)。当好处对听众来说并不完全明显时,我该如何更好地解释为什么某种设计会更好?

4
如何劝阻刚刚学习技术并想在任何地方使用它的客户?[关闭]
已关闭。这个问题是基于观点的。它当前不接受答案。 想改善这个问题吗?更新问题,以便通过编辑此帖子以事实和引用的形式回答。 4年前关闭。 我的客户最近发现了什么是URL重写,而没有完全了解它是什么,它如何工作以及它的优缺点。现在,他要求对当前项目的实际要求和对旧项目的更改进行许多奇怪的更改,以实现他认为的URL重写。 一方面,我很生气,被要求去做没有实际意义的事情,而不是做真正的工作。另一方面,我无法告诉我的客户,尽管他对该主题感兴趣,但他对主题一无所知。 我认为许多人遇到过这样的情况,即他们的经理或客户刚刚学会了一个新的流行词或新技术,他如此喜欢它,而不是想要在每个项目的任何地方都使用它,而是重写整个代码库以使用新的东西。东西等 另外,我最近阅读了一些有关Programmers.SE的文章,人们在谈论有关XML的话题时,向他们讲述了他们的经历,一些管理人员会要求在每个项目中引入XML,以便向所有人证明他们已经使用过XML。 因此,那些处在类似情况下的人,您如何管理它?

4
这种简单的XOR加密通信绝对安全吗?
说爱丽丝和彼得每个人都有一个4GB的USB闪存棒。它们相遇并保存在两个记忆棒上,两个文件名为alice_to_peter.key(2GB)和peter_to_alice.key(2GB),其中包含随机生成的位。他们再也见不到面,而是通过电子方式进行交流。爱丽丝还维护一个名为的变量,alice_pointer而彼得维护一个名为的变量peter_pointer,这两个变量最初都设置为零。 当爱丽丝需要向彼得发送消息时,她会这样做(n消息的第n个字节在哪里): encrypted_message_to_peter[n] = message_to_peter[n] XOR alice_to_peter.key[alice_pointer + n] encrypted_payload_to_peter = alice_pointer + encrypted_message_to_peter alice_pointer += length(encrypted_message_to_peter) (为了获得最大的安全性,可以删除密钥的使用部分) 彼得接收encrypted_payload_to_peter,读取alice_pointer存储在消息开头的内容,然后执行以下操作: message_to_peter[n] = encrypted_message_to_peter[n] XOR alice_to_peter.key[alice_pointer + n] 为了获得最大的安全性,在读取消息后还要擦除密钥的已用部分。 编辑:实际上,使用此简单算法(无完整性检查和身份验证)的这一步骤会降低安全性,请参阅下面的PaŭloEbermann帖子。 当彼得需要向爱丽丝发送消息时,他们用peter_to_alice.key和进行相反的操作peter_pointer。 通过这种简单的模式,他们可以在未来50年中每天在两个方向上发送2GB /(50 * 365)=〜115kB的加密数据。如果他们需要发送更多的数据,则可以使用更大的密钥,例如,使用当今的2TB HD(1TB密钥),则可以在未来50年内每天交换60MB!实践中有很多数据。例如,使用压缩技术可以进行一个多小时的高质量语音通信。 在我看来,攻击者无法在没有密钥的情况下读取加密的消息,因为即使他们拥有一台速度非常快的计算机,用蛮力他们也可以在限制之下获取所有可能的消息,但这是一个天文数字消息,攻击者不知道是实际消息。 我对吗?这个通信方案真的绝对安全吗?如果它是安全的,它是否有自己的名称?XOR加密是众所周知的,但是我正在使用两侧都使用大密钥来寻找这个具体的实际应用程序的名称吗?我很期待这个应用程序是我之前发明的。:-) 注意:如果绝对安全,那就太神奇了,因为使用当今低成本的大型存储设备,进行安全通信要比使用昂贵的量子密码学便宜得多,并且具有同等的安全性! 编辑: 随着存储成本的降低,我认为这在将来会更加实用。它可以永远解决安全通信。今天,您不确定是否有人会在一年后成功地攻击现有密码,并使通常昂贵的实现变得不安全。在沟通发生之前的许多情况下,当双方亲自见面时,就该生成密钥了。我认为这非常适合军事通信,例如,潜艇之间可以具有带有大钥匙的HD,而军事中心可以为每个潜艇配备HD。在日常生活中也很实用,例如控制您的银行帐户,因为创建帐户时会遇到银行等。

10
我如何才能向重要的非技术利益相关者做一个好的演讲?
在本月底,我必须就我自己一直在从事的软件项目做一个介绍,从根本上决定我是否会在我是临时雇员的公司中获得全职工作目前。我将向我们的部门总裁和两位副总裁作演讲。与其他两位副总裁相比,总裁的编程知识更少,而最终我需要留下深刻的印象。 在演示中我需要传达的最重要的内容是什么?我的经理已经告诉我要强调以下几点: 我正在朝着正确的方向指导这个项目,并且完全掌控一切。 我正在按计划完成这个项目。 在演讲过程中,我还应注意哪些其他事项,以使自己尽可能具有应聘价值?我正在考虑强调我在设计水平上为减少软件中的风险和不确定性所做的努力(我想两件事对上级人士非常重要)。 我特别担心的一件事是在演示文稿中找到技术细节和非技术细节之间的恰当平衡。如果我不提供任何技术细节,我们部门的总裁将不知道软件中的所有“幕后”功能,但是如果我技术性太强,他可能会迷失方向而无法理解演讲中的重点。 任何提示将不胜感激。

8
我该如何应对一个经理,他总是干扰我的工作,但并不真正了解我的工作?
我们所有人都有他们,都是来自销售部门的经理,或者是十年前或更早以前才看过代码的经理,但认为他们知道如何编写代码。 我能做些什么来给我留下我对他的干预表示感谢的印象,但请保持尽可能短的时间以便我继续工作? 或者,我是否应该更多地与经理互动,以现代编码技术和实践对他/她进行教育?毕竟,了解这些内容的经理将能够在讨论项目及其时间表时与客户和更多的高级管理人员进行明智的交谈。

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.