jjzjj

工程师成长到最后,最重要的到底是什么?

叶庭云 2024-07-14 原文

文章目录

🍉 CSDN 叶庭云https://yetingyun.blog.csdn.net/


一、前言

工程师成长到最后最重要的到底是什么?

原文来源:https://chinese.catchen.me/2023/02/engineer-career-growth-endgame.html。这篇文章讨论了一个关于工程师成长的问题,即工程师成长到最后最重要的是什么。对于新人来说,他们往往认为自己需要更多的知识才能变得更加优秀。然而,随着时间的推移,“隐性知识” 的重要性会逐步凸显出来,就是那些难以言传的知识。要想成为真正优秀的工程师,需要懂得自己需要什么,并找到正确的人(人生导师)来帮助自己训练。

作者陈广琛(网名 Cat Chen):程序员、作者、演讲者、职业教练。曾就职于 Robinhood、Facebook、豌豆实验室、Yahoo、百度,就任工程师及经理。华南师大附中及中山大学校友。

有一个问题我最近在 career coaching 时连续被不同的人问了几次,第一次被问到时我想到什么就说什么,但被连续问了几次之后我觉得我需要好好思考一下。这个问题问的是,「工程师成长到最后,最重要的到底是什么?」。先看看 GPT-4 的回答,如下所示:

刚刚进入互联网行业的新人,往往觉得自己懂得还不够多,别人比自己厉害、比自己资深,是因为别人比自己懂得更多。按照这个逻辑进行推导,正确的目标自然是让自己懂得越来越多。再往前推导,既然每一个人的时间是有限的,那必须优先弄懂那些重要的事情,因此有了上述这个问题。大家都不想走弯路,希望找到直达终点的直线。


二、主要内容

我觉得这个问题的答案并不是清晰可知的,因为清晰可知的事情迟早会被大家优化到极点。能够通过面试进入大厂的人,都聪明和勤奋到一定程度。如果存在这样一条直线,大家都或多或少地都沿着这条直线全力往前跑,最终跑出来的结果会存在一定的差别但不会存在巨大的差别,尤其是不会存在那种走直线比走曲线所应该获得的巨大优势。

那真正能够产生差异的是什么?那必然是一些别人没办法直接告诉你的事情。这是可以通过反证法证明的。如果有人能够教会你如何能够获得别人不能获得的巨大优势,他会选择教你吗?为什么?大家很容易产生一种错觉,「比我厉害的人肯定懂得比我多,这跟在学校里一样,但是他们不愿意教我所以我不如他们厉害。他们联合起来保守秘密,阻止我们获得他们拥有的知识」。

按照这样的假设,比你厉害的人当中只要有一个人守不住秘密,这种知识早就传播开来了。而且教授这种知识肯定是能赚钱的,所以比你厉害的人其实都有动机通过教授这种知识来赚钱,他们不可能真的联合起来保守秘密。这就可以反证,不是别人拥有你没有的知识而且不愿意教你,现实更有可能是他们没办法教你,或者说教你的成本太高所以不知道花时间去教

有一个概念叫做「隐性知识」,英文叫做「tacit knowledge」,指代的是那些难以言述的知识。隐性知识类似于通过深度机器学习训练出来的一个模型:它可以用,它大多数时候是正确的,少数时候会出错。你没办法通过人和人之间很容易就能沟通的若干条规则把它描述清楚,因为能描述清楚的话就不需要用到机器学习了,用规则系统就可以了。你没办法很好地预测它什么时候对什么时候错,你也不太能解释它错的时候为什么出错了。

面对这样的模型,你可以选择把它整个拷贝走。但如果你不能拷贝呢?(因为人类还没有进行人脑到人脑拷贝的技术,也不确定这样的技术是否真能被发明出来。)如果你能使用这个模型但不能拷贝这个模型,你可以根据这个模型作为基准和反馈从零开始训练一个相似的模型。这也是现在已知的传播隐性知识的方法:找一个把某件「只能意会不能言传」的事情做得非常好的人,你在进行训练时请他提供反馈,最终你训练出来的结果不可能跟他完全一样,但你的目标也只是获得相似效果而已。至于能否训练出来,以及要训练多久才能达到你想要的效果,这都是要尝试过才知道的。


三、总结

让 ChatGPT 帮助总结了文章的三个要点:

  • 隐性知识的重要性:隐性知识指那些难以言传的知识,类似于通过深度机器学习训练出来的一个模型。隐性知识的重要性在于它能够提高工程师的实践能力和应对问题的能力,但却难以通过书本等显性知识途径获得。
  • 找到正确的人:想要获得隐性知识,就需要找到正确的人来帮助自己训练。这些人通常是那些能够把某件「只能意会不能言传」的事情做得非常好的人。通过请他们提供反馈等方式,最终可以获得相似的效果。
  • 真正意识到自己需要什么:工程师成长到一定的阶段后,需要意识到自己需要什么,包括需要哪些隐性知识以及需要找到哪些人来帮助自己训练。为了实现这一点,可以寻找那些真心关注自己成长的人,并请他们花时间观察自己工作,询问他们认为自己的成长需要什么。

现实就是这样子的:有能力进入大厂的人,通过书籍、论文、官方文档(或其他媒体)学习显性知识的效率肯定不会差。瓶颈往往出现在显性知识能学的都学得差不多了,学更多也不能变得更厉害了,但又没有意识到需要什么样的隐性知识,或者是不知道从哪里能够获得需要的隐性知识。

所以工程师成长到了一定的阶段以后,搞明白自己到底需要什么以及找到跟谁能获得有效的训练是才最重要的。具体怎么做就不是通过写一篇文章就能说清楚的,否则这就不叫做隐性知识了。我能给的建议是:找到你相信真心关注你成长的厉害的人,想办法请他们花时间观察你工作,问他们觉得你的成长需要什么、谁能够帮助你训练你所需要的。而要找到会真心关注你成长的厉害的人,并请求他们花时间观察你的工作和给予指导,可以尝试以下几个步骤:

  • 确定自己的目标和领域:首先需要明确自己想要在哪个领域成长,并确定自己的目标是什么。这样才能有针对性地找到适合自己的导师。
  • 找到潜在的导师:可以通过网络、社交媒体、朋友介绍等方式,寻找潜在的导师。在寻找时,可以关注那些在自己领域内有影响力和专业知识的人,这些人可能会更愿意花时间指导你。
  • 建立真正的连接:一旦找到潜在的导师,可以通过邮件或社交媒体等方式向他们介绍自己,并表达自己的学习愿望和目标。在介绍中要突出自己的优点和潜力,让对方对自己产生兴趣。
  • 提出请求:在与潜在的导师建立联系后,可以提出请求,让对方花时间观察自己的工作和给予指导。在提出请求时,要表达自己的诚意和决心,让对方感受到自己的热情和敬意。
  • 接受指导并践行:如果对方同意成为自己的导师,那么接下来就要认真跟进并接受指导。在接受指导时,要虚心听取对方的意见和建议,并努力践行,不断提升自己的能力和水平。

总之,找到会真心关注自己成长的厉害的人,并请他们花时间观察自己工作和指导自己,并不是一件容易的事情。需要有耐心和恒心,并不断提升自己的实力和能力,才能吸引到适合自己的导师。


📚️ 参考链接:

有关工程师成长到最后,最重要的到底是什么?的更多相关文章

  1. ruby - 为什么我可以在 Ruby 中使用 Object#send 访问私有(private)/ protected 方法? - 2

    类classAprivatedeffooputs:fooendpublicdefbarputs:barendprivatedefzimputs:zimendprotecteddefdibputs:dibendendA的实例a=A.new测试a.foorescueputs:faila.barrescueputs:faila.zimrescueputs:faila.dibrescueputs:faila.gazrescueputs:fail测试输出failbarfailfailfail.发送测试[:foo,:bar,:zim,:dib,:gaz].each{|m|a.send(m)resc

  2. ruby-on-rails - Rails - 子类化模型的设计模式是什么? - 2

    我有一个模型:classItem项目有一个属性“商店”基于存储的值,我希望Item对象对特定方法具有不同的行为。Rails中是否有针对此的通用设计模式?如果方法中没有大的if-else语句,这是如何干净利落地完成的? 最佳答案 通常通过Single-TableInheritance. 关于ruby-on-rails-Rails-子类化模型的设计模式是什么?,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.co

  3. ruby - 什么是填充的 Base64 编码字符串以及如何在 ruby​​ 中生成它们? - 2

    我正在使用的第三方API的文档状态:"[O]urAPIonlyacceptspaddedBase64encodedstrings."什么是“填充的Base64编码字符串”以及如何在Ruby中生成它们。下面的代码是我第一次尝试创建转换为Base64的JSON格式数据。xa=Base64.encode64(a.to_json) 最佳答案 他们说的padding其实就是Base64本身的一部分。它是末尾的“=”和“==”。Base64将3个字节的数据包编码为4个编码字符。所以如果你的输入数据有长度n和n%3=1=>"=="末尾用于填充n%

  4. ruby - 解析 RDFa、微数据等的最佳方式是什么,使用统一的模式/词汇(例如 schema.org)存储和显示信息 - 2

    我主要使用Ruby来执行此操作,但到目前为止我的攻击计划如下:使用gemsrdf、rdf-rdfa和rdf-microdata或mida来解析给定任何URI的数据。我认为最好映射到像schema.org这样的统一模式,例如使用这个yaml文件,它试图描述数据词汇表和opengraph到schema.org之间的转换:#SchemaXtoschema.orgconversion#data-vocabularyDV:name:namestreet-address:streetAddressregion:addressRegionlocality:addressLocalityphoto:i

  5. ruby - 为什么 4.1%2 使用 Ruby 返回 0.0999999999999996?但是 4.2%2==0.2 - 2

    为什么4.1%2返回0.0999999999999996?但是4.2%2==0.2。 最佳答案 参见此处:WhatEveryProgrammerShouldKnowAboutFloating-PointArithmetic实数是无限的。计算机使用的位数有限(今天是32位、64位)。因此计算机进行的浮点运算不能代表所有的实数。0.1是这些数字之一。请注意,这不是与Ruby相关的问题,而是与所有编程语言相关的问题,因为它来自计算机表示实数的方式。 关于ruby-为什么4.1%2使用Ruby返

  6. ruby - ruby 中的 TOPLEVEL_BINDING 是什么? - 2

    它不等于主线程的binding,这个toplevel作用域是什么?此作用域与主线程中的binding有何不同?>ruby-e'putsTOPLEVEL_BINDING===binding'false 最佳答案 事实是,TOPLEVEL_BINDING始终引用Binding的预定义全局实例,而Kernel#binding创建的新实例>Binding每次封装当前执行上下文。在顶层,它们都包含相同的绑定(bind),但它们不是同一个对象,您无法使用==或===测试它们的绑定(bind)相等性。putsTOPLEVEL_BINDINGput

  7. ruby - Infinity 和 NaN 的类型是什么? - 2

    我可以得到Infinity和NaNn=9.0/0#=>Infinityn.class#=>Floatm=0/0.0#=>NaNm.class#=>Float但是当我想直接访问Infinity或NaN时:Infinity#=>uninitializedconstantInfinity(NameError)NaN#=>uninitializedconstantNaN(NameError)什么是Infinity和NaN?它们是对象、关键字还是其他东西? 最佳答案 您看到打印为Infinity和NaN的只是Float类的两个特殊实例的字符串

  8. ruby-on-rails - 如果 Object::try 被发送到一个 nil 对象,为什么它会起作用? - 2

    如果您尝试在Ruby中的nil对象上调用方法,则会出现NoMethodError异常并显示消息:"undefinedmethod‘...’fornil:NilClass"然而,有一个tryRails中的方法,如果它被发送到一个nil对象,它只返回nil:require'rubygems'require'active_support/all'nil.try(:nonexisting_method)#noNoMethodErrorexceptionanymore那么try如何在内部工作以防止该异常? 最佳答案 像Ruby中的所有其他对象

  9. ruby - 为什么 SecureRandom.uuid 创建一个唯一的字符串? - 2

    关闭。这个问题需要detailsorclarity.它目前不接受答案。想改进这个问题吗?通过editingthispost添加细节并澄清问题.关闭8年前。Improvethisquestion为什么SecureRandom.uuid创建一个唯一的字符串?SecureRandom.uuid#=>"35cb4e30-54e1-49f9-b5ce-4134799eb2c0"SecureRandom.uuid方法创建的字符串从不重复?

  10. ruby - 当使用::指定模块时,为什么 Ruby 不在更高范围内查找类? - 2

    我刚刚被困在这个问题上一段时间了。以这个基地为例:moduleTopclassTestendmoduleFooendend稍后,我可以通过这样做在Foo中定义扩展Test的类:moduleTopmoduleFooclassSomeTest但是,如果我尝试通过使用::指定模块来最小化缩进:moduleTop::FooclassFailure这失败了:NameError:uninitializedconstantTop::Foo::Test这是一个错误,还是仅仅是Ruby解析变量名的方式的逻辑结果? 最佳答案 Isthisabug,or

随机推荐