程序媛想事儿 2019-04-13
这是来自一位美女程序员Ali Spittel的观点,至少可以看看美女喜欢和怎样的男程序猿打交道:
当我想与我希望的程序员合作时,我更多地考虑非技术技能,而不是技术技能,是什么非技术技能使得某人成为一名优秀的同事的。实际上,本文中的所有技能都有助于促进代码优秀化。大多数对编程之外的职业也非常有帮助,但我将专注于为什么它们对程序员特别有用。
同理心
要打造一款出色的产品,你必须把自己放在用户的脚下(从用户角度思考)。设想他们将如何使用你的产品?哪些功能对他们有帮助?您的计划如何帮助他们或改善他们的生活?如果- 相反 - 你的产品是如何伤害他们或对他们的生活产生负面影响?您的追求的道德含义是什么?
同理心对于您的许多程序至关重要 - 如果产品不安全,那么用户信息可能被第三方使用。如果无法访问它们,那么将限制使用人数。如果它们运行缓慢或需要大量带宽来运行,那么用户将离开,并且具有较慢互联网或移动用户的区域中的人将无法运行它们。似乎每天都有一篇文章公布了自己公司已经实施的一些有害算法,比如YouTube算法激进alt-right,亚马逊创建性别歧视招聘算法(他们最终没有使用),或AI误导黑人女性。请在编写代码时想想每个人!
此外,同理心有助于成为团队成员和导师。把自己放在经理或其他开发人员的角度。他们为什么要做出决定?你能做些什么来帮助他们?拥有同理心肯定会提高你成为有效队友的能力。如果您是雇主,您可以保留您的员工更长时间,如果您表现出同理心,他们将是更有效的工作者。
对其他程序员有耐心,特别是那些正在学习新事物的程序员。提醒自己一些真正难以学习的东西以及感受到的东西。他们可能感觉相似。对他们粗鲁会减少他们的进步,或迂腐只会是有害的,并使他们更难应付这个学习过程。
你的言行都会有真正的后果 - 你可以用它来制定积极的变化或伤害某人。不只是面对面的沟通- 在线沟通也很重要。你可能认为自己很有趣或只是放松一下,但实际上你可能会对某人的生活造成非常不利的影响。由你来决定如何采取行动,以及如果你伤害某人就要通过道歉消除某些伤害。
解决问题
当我教人们编写代码时,我发现有很多人在解决问题时比代码本身更难。能够将问题分解为较小的问题然后解决,所有这些较小的问题需要大量的练习。善于解决问题可以帮助你成为一个更强大的程序员。
此外,对于大多数问题会有多个解决方案。我们作为软件开发人员的大部分工作是思考这些不同的解决方案并选择最好的解决方案。实施起来更快吗?或者它运行效率更高?还是会更便宜?所有这些都是重要的问题(算法或模式是两个角度思考方向),选择正确的解决方案是软件开发中具有挑战性但重要的部分。
合作
你作为程序员与其他人合作的机会非常高。即使您是自由职业者或企业家,您也必须与其他开发人员,业务人员,经理,开源贡献者,利益相关者以及无数其他人合作。学习如何与不同的人和他们的个性很好地合作是至关重要的。
有很多东西可以促进良好的合作。首先是要知道一个人不能做所有事情,或者至少做好一件事。不同的人拥有不同的技能,观点和生活经验,这些经验在组合起来比单独的更强大。不要觉得你总是需要“把团队利益放在你的心上”,或者成为每个人的一切。如果你允许其他人也做出贡献,你可以做得更好。
向其他人寻求帮助,并愿意帮助别人。你不需要成为一切的专家,不同的人将成为不同领域的专家。依靠其他人,如果你遇到困难,请务必寻求帮助,这样你就不会长时间陷入困境。有人请你帮忙时,愿意帮助他们。通过很好地解释,您可以学到很多东西,并且您将能够加强您对该主题的了解。如果您处于管理职位,请确保为人们提供指导和有效协作的时间!
同样,不要与人交谈时立即驳回他们的观点。如果他们的意见没有被重视或考虑在内,他们将来可能不太可能做出贡献。当人们分享他们的想法时积极倾听 - 而不是考虑你自己的回答或为什么你自己的想法在这次会谈时更好,试着想一想为什么他们的方法也很好或者如何实施。
然后,一旦你实施了他们很棒的想法,就要对这些想法给予赞扬。这样才不会让员工的效率变得低效,因为我的团队中我的想法被我的团队中的其他人超越了,或价值不足和不值得采用。
沟通
当您与其他人合作时,无论这些人是同事,客户,使用您的项目的人员,经理还是您管理的人员,良好的沟通都至关重要。提供有关事情进展的正确最新信息,目前项目所处的位置,以及您对事情的诚实和善意的看法。如果你粗鲁或没有建设性,人们将不太愿意接受反馈。但是,如果你不诚实或用谎言掩盖真相,那么你可能看不到积极的变化。这里肯定有一个很好的路线。
我生命中的一个现实生活中的例子:我有一个人读过我的一篇博文,写了一封很长的信,讲的是因为我的语气,我听起来有多愚蠢。我通常会使用很多惊叹号,并试着在我的帖子中发出令人兴奋的声音 - 这是在发布一个可能令人生畏或无聊更有趣的主题时的非常有意的尝试。这个人在这封电子邮件中从性别歧视角度说了一些非常有害的事情。话虽这么说,我可能可以缩小感叹号的使用,也可仍然让人们对编程感到兴奋。如果这个人更具建设性地进行批评,那么我会更容易接受这一点。
如果事情进展不顺利,请务必这样:要诚实地说需要推迟截止日期,或者工作中的某些事情不顺利。如果你说出来,你将有更好的机会改变它并为自己创造更好的环境。
包容性
我曾经在夏令营担任攀岩教练和辅导员,我和大多数人一起工作的年龄组是中学女生。他们是我曾经和我一起工作过的最喜欢的人,但是,据说,中学生通常不是最接受差异的人,也不是那种集体不团结的人。我们曾经在一个大圈子里开始游戏,然后一个顾问告诉这个圈子的人们他们“不在圈子里”,他们将不得不根据他们没有被告知的一些特征离开游戏。并且无法控制。仍然在圈内的人会玩游戏,圈外的人被排除在外,只需从远处观看。
这项活动非常有效地向这些女孩展示了由于你无法控制的原因被遗弃的感觉,我仍然在回想它。作为成年人,我们仍然将人们排除在外,并根据他们无法控制的某些特征将他们排除在外,但如果我们让他们回到圈子并让他们做出贡献,那么我们的产品会吸收更多样化的体验并且更好。有很多关于更多不同团队表现更好的研究,但从个人的角度来看,想一想被遗弃在圈子里并试图让你的圈子更大而不是更小的感觉。很可能,你的很多用户可能是传统上被排除在技术圈子之外的人。我可以从我自己的经验告诉你,作为一个团队中唯一一个与另一个女人在一起的团队,在我的编程生涯中约占5%的人,真的很难成为像你这样的人。
这也与同理心联系在一起 - 确保您为各种各样的用户制作程序。不只是健全的人或具有尖端互联网或技术的人。您将能够吸引更多人。
耐心
在编程时,你需要耐心等待的第一个人就是你自己。编程很难,有时你会遇到错误或难以克服的问题。如果它总是很容易,那么你就不会挑战自己,而且你并没有成长为程序员。有韧性继续解决问题而不是在困难时放弃。但是,也知道你可以休息一下,然后在一段时间内回到这个问题。也许休息可以帮助您更有效地解决问题,或者在您回到它时以不同的方式看待问题。
另外,请耐心等待其他人。事情可能需要一段时间才能学习,人们并不完美。犯错误和失败可能是学习过程中最重要的一些经历,所以要考虑到这一点,而不是创造一个风险或正变为不安全的环境。了解不同的东西可以更轻松地为不同的人点击,并且知道学习可能需要一段时间。
创造力
作为一名程序员,我最喜欢的是我可以利用自己的创造力来构建其他人可以从中受益的东西。你可以在盒子外面思考,创造出非常酷的东西。
拥有创意对于提出新功能,界面和应用程序非常重要。有人因为创意界面而购买我为公司建造的产品的许可证,而且我的投资组合网站因其创造力而备受关注。
除此之外,许多问题需要创造力来解决。几乎每个编程问题都有不止一个解决方案,并且提出解决这些问题的创新方法通常可以带来优化的解决方案。
谦逊
你可以从其他程序员那里学到很多东西 - 一个人在代码世界中无法知道一切或接近它的任何东西。接受建设性的批评而不是防御性的批评。您可以从反馈中改进代码与自己,否则陷入困境就不会从中得到成长。你并不总是对的,你应该接受别人的想法。
信心度
另一方面,也要有信心。我承认这对我来说可能是最困难的一个,在我职业生涯中每次表现评估都是我的第一件事。我可以(也可能会)单独撰写关于这个主题的完整博客文章,但相信自己并对自己的能力充满信心是非常重要的。
首先,请相信您可以参与项目。当你被分配困难时,不要把自己放在更容易的项目上或怀疑自己。尝试尽可能多地解决它,然后寻求帮助来解决最困难的部分。
此外,不要觉得有必要研究一切作为第一手段。在谷歌搜索答案之前,请相信自己尝试一些事情。或谷歌部分问题而不是整个事情。通过在开发过程中尝试一些事情并查看它们是否有效,如果您无所畏惧。您可能会对您知道这么多感到惊讶。
我做的另一件事是跟踪我的胜利。我的计算机上有一个文件,里面有我做过的很酷的东西,以及人们对我说的非常好的事情。当我度过艰难的一天或怀疑自己的时候,我会回到它并且通常对我正在做的事情感到更自信。(奖励自己的多巴胺)
适应性
编程仍然是一个新世界,它正在以超快的速度发展。能够在事情发生变化时适应变得至关重要。当一个新的框架,库包或语言接管时,重要的是能够学习它(理所当然)。如果我们仍然在Fortran中编写代码,我们的行业将会有很大的不同; 当事情发生变化时,我们需要能够进化和适应。
此外,项目的目标职位和功能通常会发生变化,尤其是客户工作时。当发生这种情况时,我们必须调整并合并这些请求(再次,在合理范围内)。
参与社区
社区对于编程非常重要 - 会议,博客文章,社交媒体和聚会对于学习和成长非常重要。此外,开源软件及其周围的社区是该行业的命脉。能够与人们建立联系并建立联系对于教育,关联您的经历和寻找新的机会非常重要。
即使你是一个内向或不喜欢亲自社交的人,也有很多令人敬畏的在线社区,你可以从中学到很多东西。而且,即使在公司内部,拥有一支有强大纽带的团队也会帮助人们更好地共同工作。
结论
这些技能通常被称为“软技能”,但我觉得这是简化的。这些技能对于编写代码和成为一名优秀的同事非常有帮助。它们比了解特定的语言,库包或框架要重要得多,甚至远远超出了技术。
所有这些技能对于作为程序员和人员来说非常重要。话虽如此 - 没有人是完美的,每个人都有成长的空间。所以继续成长,并尝试采取小步骤,以更好地利用这些非编程技能,我也会这样做!