我们在这里不会谈社交媒体上的影响力,这需要动用种类繁多的运营和技术手段。本篇文章里要解决的问题非常简单:如何才能让他人跟随你的建议行动。
上级对下级的影响力就一定天然成立吗?虽然权力阶梯存在,但并不意味着权力绝对有效。因为强制力虽然可以保证事情得以发生,执行效果却并不掌握在 leader 手中。我们都明白如果团队成员并不认可和理解接下来的愿景,他们会做的只是取悦般地服从而已:我不会花心思把它做得更好,它的成功与否也与我无关。
我们每个人一定见过一种类型的角色,虽然他们不具有特殊头衔,但是他们的意见总会被认可,他们的建议常常被采纳,甚至你会发现当同事们遇到麻烦时第一时间想到的找他们寻求帮助——这便是影响力的魅力。相反,我相信在我们每个人的职业生涯中,有无数经理以及领导是被我们所厌恶或者阳奉阴违地对待的。我曾经阅读过一本非常好谈领导力的图书:You Don't Need a Title to Be a Leader,这个标题在这里稍作修改依然成立:You don’t need a title to have influence.
在讨论如何影响「他们」之前,我们首先要搞清楚「他们」究竟是怎样一类人群——只不过是一群程序员不是吗?——这恰恰是他们的特殊之处。与传统文职人员或者蓝领工人都不尽相同,虽然软件制造如今看来是与劳动密集型产业无异,“极客精神” (geek) 的特质依然保留在他们的骨子里。
如果你在 google 中搜索 ”how to manage geeks”,有一篇经久不衰的文章会出现搜索结果前列:Opinion: The unspoken truth about managing geeks. 这篇发布于09年文章里观察到的现象以及得出的结论现在看来毫不过时。采用文章中的原话一言以蔽之就是:
IT pros will prefer a jerk who is always right over a nice person who is always wrong.
与其他行业的人员相比不同之处在于,程序员服从的并非某个头衔或者某套流程,这里服从的本质上是对他人发自内心的尊重,而尊重来源于对一个事实的判断:你可否把事情做对。这个前提是如此地重要,以至于让工作中的其他内容都显得黯然失色。正如我在引用的原文中所说的那样,哪怕你是个混蛋也无所谓。在该前提下程序员的种种行为用传统的职场观念来衡量起来是匪夷所思的,例如程序员之间的争吵通常围绕的是更好的解决方案是什么,而不是谁来做以及如何能干得更少;上级的建议也不会是必须遵循的金科玉律,他们会按照自己的想法实施,不幸的是他们的想法永远都是对的。
与需要巧言令色讨好其他职位的角色不同,赢得程序员尊重的标准答案仅此而已。然而对于外行而言如果你意识不到这条潜规则的存在,你会在和程序员打交道的过程中步履维艰。
当我们意识到这个事实之后,便有了塑造影响力的方向。
把事情做对并无诀窍可言,它等同于在考验你的综合能力。你对业务理解要正确,用代码表达业务要到位。然而这听上去像是人人都应该做到及格线,只是昭示着你来到了这个圈子而已。我们如何借此来扩大我们的影响力呢?
我的建议是「专精」:你的答案要比他人更接近正确才行。
刚刚我们一直在回避一个问题,即对于「正确」的定义。当我们在聊「正确」的时候,我们其实聊的是实实在在的东西,代码的正确性包含它的复杂度、可维护性以及执行效率等等。并且它们是绝对的,在解决同一个问题时如果你的代码行数更少、运行时间更快、可读性更好,那胜出便当之无愧。
如果上面的叙述还过于抽象的话我们不妨看这么一个例子:如果有人建议在你所在的前端项目中引入端到端测试,你会如何考虑?「正确」要解决的第一重问题是要不要做;第二重问题是我应该如何去做。
在解决第一重问题时,我们需要知道:
这四个问题看起来平平无奇,但每一个问题的背后都涵盖巨大的信息量。例如最后一个问题当在考量端到端测试在项目中的可行性时,我们既需要对这项技术的横向(与其他测试技术之间的差异)和纵向(目前的技术生态和业内实践)知识都有所了解,对当前项目的现状也要掌握得一清二楚,因为维护成本高昂的端到端测试并不适用于快节奏的交付项目。
如果提出建议的人只是偶然间在某篇文章中读到了「端到端测试」这么一个时髦的技术词汇(buzzword)而抛出来讨论,恰巧你又有实践端到端测试的经验,并且不认为当下是一个引入端到端测试恰当时机,那么你便可以有理有据的反驳他,影响力于是在此彰显。
从这个影响力落地的例子不难看出达成「专精」并无他法,它等同于你在某个领域内知识积累的厚度。而如何达成这个目标呢?我们其实是在尝试回答一个纯粹又古老的问题:如何让自己从新手成长为专家?每个人都有自己的答案。
去他的“酒香不怕巷子深”——如果你现在已经「身怀绝技」,请务必要让别人看见。没有对话施加影响力自然也就无从谈起。那如何被看见呢?每天的工作按部就班,团队内的技术趋于稳定,没有机会给到我。
我的建议是不要被动地等待机会,而是为自己创造机会。
你要相信缺陷是永远存在的,我们每个人都在编码过程中经历过妥协,过去的妥协便是未来的改进之处。作为每天接触代码一线人员识别到它们并不难,识别并修复它们是最好的机会。你不妨选择一些你擅长的领域先把自己投资进去:之所以称之为「投资」是因为你可能需要动用到工作之外的时间去整理它们、寻找解决方案以及准备材料说服大家。
并非每一次提议都会得到支持,你的预期是应该把拒绝作为常态。这种拒绝大部分时候不是来自对于你建议的否定,而是没有足够的资源把你的提议落地。但是没有关系,在和团队分享的过程中正确性已经得到了大家的肯定,影响已经发生。反观整个过程也是你技术成长的痕迹。
如果你宁愿等待机会,那么你需要考虑这样一个问题,当机会来临时你可否抓住它?现状并不是看到机会之后我再去完善我的知识体系,而是我不断地积累知识体系去静候每个机会的降临。
我有带有Logo图像的公司模型has_attached_file:logo我用他们的Logo创建了许多公司。现在,我需要添加新样式has_attached_file:logo,:styles=>{:small=>"30x15>",:medium=>"155x85>"}我是否应该重新上传所有旧数据以重新生成新样式?我不这么认为……或者有什么rake任务可以重新生成样式吗? 最佳答案 参见Thumbnail-Generation.如果rake任务不适合你,你应该能够在控制台中使用一个片段来调用重新处理!关于相关公司
我很好奇.NET将如何影响Python和Ruby应用程序。用IronPython/IronRuby编写的应用程序是否会非常特定于.NET环境,以至于它们实际上将变得特定于平台?如果他们不使用任何.NET功能,那么IronPython/IronRuby相对于非.NET同类产品的优势是什么? 最佳答案 我不能说任何关于IronRuby的东西,但是大多数Python实现(如IronPython、Jython和PyPy)都试图尽可能忠实于CPython实现。不过,IronPython正在迅速成为这方面的佼佼者之一,并且在PlanetPyth
文章目录前言1.AI的发展历程2.我是如何接触到人工智能的概念和产品的3.对于ChatGPT的一点看法4.AI对大学毕业生的职业发展的利与弊5.对于AI的思考和问题前言随着ChatGPT的爆火,生成式AI,大模型的人工智能被越来越多的人注意到,同时他也带来了许多问题。本文将对几方面进行探讨。1.AI的发展历程远古时期在公元前第一个千禧年,中国,印度和希腊哲学家都提出了一些推理的研究理论,比如亚里士多德(Aristotle)进行了演绎推理三段论的完整分析,欧几里得(Euclid)所著Elements是一种形式推理的模型,MuḥammadibnMūsāal-Khwārizmī,发明了代数学,即我们
我试图了解MRIRuby1.8和JRuby之间不同线程模型的实际影响。作为开发者,这种差异对我意味着什么?另外,MRIRuby1.8中是否有任何实际代码示例会由于不同的线程模型而在JRuby上具有更差的性能特征? 最佳答案 状态ruby1.8有绿色线程,这些线程可以快速创建/删除(作为对象)但不是真正的并行执行,甚至不由操作系统调度,而是由虚拟机调度ruby1.9有真正的线程,由于操作系统调用,创建/删除(作为对象)很慢,但由于GIL(全局解释器锁)一次只允许一个线程执行,所以这些都不是真正的线程并行JRuby也有操作系统调度的真实
产前母亲的生活压力事件与后代神经发育不良相关联。研究人员表示,关联的生物学机制大部分是未知的,但在体内发生的一种化学反应——DNA甲基化,即一个小分子甲基被添加到DNA上——可能起着一定作用。这些发现可为了解胎儿环境如何可能影响神经发育、代谢和免疫功能提供新发现。辛辛那提大学的一项新研究探索了怀孕期间母亲的压力对婴儿神经发育的影响。该研究分析了12个独立队列超过5,500名参与者的相关数据。“我们的研究是第一个利用如此大规模样本量分析整个表观基因组的,我们不只关注压力相关基因,还探索了所有可研究的表观基因组位点,”辛辛那提大学医学院环境和公共卫生科学系的AnnaRuehlmann博士说。该研究
更详细地说,我有一个模块Narf,它为一系列类提供基本功能。具体来说,我想影响所有继承Enumerable的类。所以我在Enumerable中includeNarf。Array是默认包含Enumerable的类。然而,它不受Narf延迟包含在模块中的影响。有趣的是,在包含之后定义的类从Enumerable获取Narf。示例:#ThismoduleprovidesessentialfeaturesmoduleNarfdefnarf?puts"(from#{self.class})ZORT!"endend#IwantallEnumerablestobeabletoNarfmoduleEnu
当我使用respond_with并传递文字哈希时,它给了我错误:syntaxerror,unexpectedtASSOC,expecting'}'`respond_with{:status=>"Notfound"}`但是,当我像这样将文字散列括在括号中时:respond_with({:status=>"Notfound"})函数运行顺利。为什么括号会有所不同?哈希不是封闭调用吗? 最佳答案 调用方法时,方法名后面的左大括号被解释为block的开始。这优先于作为散列的解释。规避此问题的一种方法是使用括号将解释强制执行为方法参数。例如,
Rails在标准库中与Ruby的logger类捆绑在一起。可用的日志级别是::debug、:info、:warn、:error和:致命的。我想知道如果我在我的Rails应用程序中添加大量日志记录并将日志级别设置为:debug用于开发和测试,在生产中运行时关闭日志记录或设置在更高级别,例如config.log_level=:fatal? 最佳答案 简短的回答是,日志记录总是会对性能产生影响,尤其是在记录到磁盘时。但是,有一些微妙之处。首先,使用:debug级别将比:fatal有更大的性能损失,因为正在评估和写入日志输出的字符串数量要多
我目前使用软制表符(即空格)来缩进我的Ruby代码,如果我使用硬制表符会在解释代码时提高性能吗?我假设读取一个制表符比解析4个空格字符更快(但可以忽略不计)。 最佳答案 您是否了解源代码解释所涉及的所有阶段?只有第一个,词法分析,必须处理空白,在空白的情况下,“处理”意味着“忽略它”。这个阶段只占总时间的一小部分,它通常使用正则表达式完成并且几乎具有线性复杂度。将其与解析进行对比,比较起来可能需要很长时间。解释只是在某种程度上可行,因为这两个阶段(加上第三个阶段,字节码生成,在使用字节码的实现中)比重要程序的实际执行要少得多。这个不
我只是在学习ruby并试图理解block中执行的代码的范围。例如,我希望能够创建一个block来影响它附加到的方法,如下所示:deftest(&block)block.call()ifblock_given?puts"intest,foois#{foo}"puts"intest,baris#{bar}"endtest(){foo="thisisfoo"bar="thisisbar"}在这种情况下,我根本不想修改block——我希望能够使用简单的变量引用而不使用参数来编写它。只有修改上面例子中的'test'方法,才能访问block中定义的变量吗?同样,目标是不修改block,但能够在