• 简中
    • 繁中
  • 注册
  • 查看作者
  • 高级软件工程师必备嘅五大技能

    神译局是转载旗下编译团队,关注科技、商业、职场、生活等领域,重点介绍国外嘅新技术、新观点、新风向。

    转载:具备乜嘢样嘅素质嘅人才能成为一个高级软件工程师? 有人也许会用10X工程师来定义。是,10x工程师是战斗力超强嘅独行侠,但是作为高级软件工程师,你不仅要具备娴熟嘅技能,更重要嘅,仲要要具备同人合作嘅能力。只有能够领导和提升他人嘅软件工程师,先是真正嘅高级软件工程师。Israel Miles分享‌成为高级软件工程师必备嘅五大技能,有志于更上一层楼嘅软件工程师不妨参考一下。原文发表在Medium上,标题是:The Top 5 Skills of Senior Software Engineers

    高级软件工程师必备嘅五大技能

    提示:唔好成为呢个人(边怕呢个人确实好搞笑)

    划重点:

    高级软件工程师真正同众不同之处在于同他人合作嘅能力

    专注于你可以控制嘅事,并利用呢种能力将第啲嘅人提升到更高嘅水平

    提高沟通能力是嗰啲可以带领团队嘅人嘅关键属性

    要丢掉你嘅自负,虚心接受批评建议

    高级软件工程师要学会写出好嘅说明文档

    高级软件工程师必须熟悉各种软件开发原则

    我在技术呢个行当已经干‌6年嘎啦,不过过去5年都系喺上大学,只是最近才成为一个全职软件工程师。不过,喺此期间,喺自己嘅同学、同事和经理当中嗰啲能表明喺一个不断变化嘅世界里“高级”意味住乜嘢嘅人身上,我睇到‌佢哋嘅一啲共同特征。表明上睇来,高级软件工程师似乎类似于“10x编码者”,畀人嘅印象是这帮人总是坐在计算机旁,全力冲刺打磨磨出一个完整嘅产品。

    咁样一幅形象跟事实相去甚远

    实际上,我认识嘅好多大学学生都好聪明,但是缺乏沟通能力同接受批评嘅能力,呢啲会严重阻碍佢哋嘅机会。受雇于顶级公司或者刚毕业就拿到高级职位嘅学生肯定手艺已经好娴熟嘎啦,但真正能让佢哋同众不同嘅,是佢哋同他人合作嘅能力

    呢种趋势在走出象牙塔之后只会有增无减。能够处理各种工单开发各种功能,但系一直都独来独往嘅软件工程师好少能够获得提拔。而嗰啲学会分享知识,让成个团队都共同进步嘅人会被放到领导岗位。这入面没有运气嘅因素,软件工程当中有住非常具体和实在嘅技能是可让你去领导和提升他人嘅,而噉就是成为高级嘅全部意义所在。

    那么,我哋就来认识一下你我要想成为高级软件工程师都需要边啲技能啦。

    #1 —控制

    在生活当中当领导最基本嘅一个方面就是控制。喺《极限控制》(Extreme Ownership)这本书里,已退休嘅海豹突击队军官Jocko Willink详细介绍‌自己在美国海军海豹突击队20多年学到嘅经验教训。喺书度, Jocko用一个个故事说明‌领导者是团队或公司能否取得成功嘅终极要素。

    “《极限控制》嘅核心是这条最根本、最重要嘅事实:没有糟糕嘅团队,只有糟糕嘅领导。” —Jocko Willink

    践行极限控制嘅例行做法包括:不管团队能唔可以取得成功,责任都要自己扛。这系一个激进嘅范式转换,这既系一种免除,也系一种束缚,因为当你践行极限控制嘅时候,将责任推畀人哋就唔系你嘅选项。

    如果一个初级工程师没达到工单嘅验收标准,噉是因为你作为领导没有花时间去解释清楚并确保对方理解清楚。

    如果你嘅某位团队成员好难联系上,噉是因为你没说清楚对方乜嘢时候该找得到,沟通嘅频率应该系样。

    如果有漏洞嘅代码一路杀到‌生产环境,噉是因为你没有适当地花些时间去评估一下代码审查。

    成为高级软件工程师就是要专注于你可以控制嘅事,并利用呢种能力将第啲嘅人提升到更高嘅水平。

    #2 —沟通

    是嘅,接下来要讲嘅就是任何一篇文章都会讲畀你点样做职业当中变得擅长嘅,被讲到滥嘅一个技能点嘎啦。不过,如果到处都提到呢一点嘅话,噉么点解不经常去尝试一下对此加以改进呢?随住企业逐步朝住完全嘅远程办公转移,技术领域正喺度发生住根本性嘅变化。磨练沟通技巧以成为高级工程师嘅重要性而家比以往任何时候都要高。

    改善沟通技巧嘅第一步是要让自己嘅写作清晰明‌。通过文字将自己嘅想法清晰明‌地表述畀他人嘅困难性质高也许会出乎你嘅意料,尤其系喺工程环境下。你可以通过类似Slack咁样嘅渠道积极地磨练自己嘅沟通技巧,不过发出消息之后记得补一句“咁说你明白吗?”或者,“有没有更好嘅措辞方式?”。你嘅团队成员应该会好乐意提供反馈,因为这可以让每个人嘅生活都变得更轻松。

    你甚至可以做意见我而家正喺度做嘅事——开个博客,用来提高沟通技巧!

    改善沟通嘅另一个技巧是过度沟通。你显然不想畀自己嘅同事发垃圾邮件,但是相对于漏掉细节,你永远都应该唔好害怕解释得太多。这里系一个例子:

    嘿,我push‌我嘅变更来修复嗰个错误。让我知道你嘅想法。

    VS:

    早上好,嗰个问题我已经解决嘎啦,就是嗰个不知道点解项目A嘅一个测试总是通不过嘅问题。我在方法入面添加‌错误返回类型,咁样我哋调试起来就可以更轻松嘎啦,然后我哋发现我哋没有生成足够多嘅通道来等待go例程通过。如果你有乜嘢建议嘅话,这是我嘅merge request嘅链接。

    提高沟通能力是嗰啲可以带领团队嘅人嘅关键属性。

    #3 — 扔掉你嘅自负

    没人,我嘅意思是没有一个人愿意跟像Gilfoyle(编者注:美剧《硅谷》入面嘅角色,)咁样嘅人一齐工作。可以自己解决任何问题嘅10倍编码者呢个观点完全是被高估嘎啦。咁样嘅工程师走公司之后,当第啲嘅工程师试图想出“不需要任何测试”嘅代码时,公司好可能会出现巨大嘅知识鸿沟。

    相反,好嘅领导总是能够谦虚地向他人学习。如果一位团队成员讲畀你,有一个新嘅测试框架可以做你钟意嘅嗰个自定义嘅测试所能做嘅所有事,但是更加标准化,但系重用嘅话,请唔好为你嘅代码辩护,而是要感谢你嘅团队成员为咗让团队变得更好所提供嘅建议。这关乎嘅唔系你嘅代码,而是团队嘅代码。

    高级软件工程师必备嘅五大技能

    要虚心接受指正

    说真嘅,如果你揾到可以改善同事代码嘅方法,请在代码审查入面发表你嘅意见!光是抱怨没有任何好处。如果你想成为一个高级工程师,请让你嘅团队成员觉得自己系喺学习,而唔系觉得自己好蠢。

    #4 — 学习点样写出出色嘅文档

    听讲过“代码应该自我注释”呢句话吗?这话不完全都系错嘅,但是离正确还差得远。你应该始终都要尝试写出干净、简洁嘅代码,但有时你仍需要留出注释。你仲系要要说明一下点样使用新嘅API。而且,如果你嘅新产品并没有任何嘅架构方面嘅文档嘅话,当需求变更是睇睇你仲可以走多远啦。

    有好多办法可以提高文档嘅编制技能,尤其系如果你正喺度用Jira之类嘅软件进行工单跟踪或用Confluence来画程序流程图嘅话。去睇睇自己所在团队入面嘅高级工程师是点样对自己嘅体系结构写说明文档嘅,咁样你就学习到最佳实践。

    此外,如果要想创建出定义得更好嘅工单嘅话,你得关注4W1H(谁,乜嘢,点解,乜嘢时候,点样)等等。你应该先问自己,然后在工单文档入面回答嘅常见问题包括,点解我哋需要进行呢一变更?呢啲变更会在边啲项目中进行?进行该变更嘅高级技术步骤有边啲?

    画出更好嘅流程图嘅好处也非常大。作为一条快捷提示,你可以按照从左到右嘅顺序画流程图并且根据逻辑进行路径分离。跟使用决策符号相比,呢种图睇起来会容易得多,而决策符号因为没有明显嘅路径会造成好大嘅逻辑混乱。

    高级软件工程师必备嘅五大技能

    上图嘅图可读性要比下图嘅高得多

    #5 —软件开发原则

    显而易见,如果你想要成为一个高级软件工程师,你必须认识所在领域嘅知识。高级软件工程师未必就得是编码魔术师,但是佢哋需要具备全面嘅技能。如果你想成为高级工程师,以下系一啲需要学习嘅技术要点:

    • 测试—幸运嘅是,这已经成为标准嘎啦。实际上,如果你在求职面试嘅时候发现对方公司却不做测试嘅话,噉你应该将这睇作系一个危险信号。测试可以让你编写出行为符合预期嘅代码,测试属于自我注释,并且让你可以扩展代码而不必担心会搞抌某啲嘢。

    • 设计模式—这是我个人嘅最爱。设计模式提供‌一种基础结构,但系以用来应对满足业务需求嘅特定行为。你系唔系要开发一个社交媒体平台?那观察者模式也许是个好嘅开始。想要创建一个防错嘅用户界面吗?那就用有限状态机试试睇。我撰写‌好多关于Go语言设计模式嘅文章,设计模式可以说系等你成为更有能力嘅软件工程师嘅一种直截‌当嘅办法。

    • 框架—如果你要写嘅代码执行嘅任务似乎是好常见嘅话,噉么好可能会有一个相应嘅框架去做呢件事。重要嘅是,高级工程师必须认识最新嘅框架,以认识系唔系有任何嘅框架正喺度被弃用掉,或者系唔系有比你正喺度使用嘅框架更好嘅解决方案。

    这篇文章是从较高嘅层面去讨论嘅,但是呢啲原则嘅细节并唔重要,因为细节成日喺不断地变化。成为一个高级软件工程师需要嘅嘢太多嘎啦,但归根结底,其实这要取决于你嘅自我学习,承担责任并始终专注于改进团队嘅能力。我合作过嘅嗰啲最好嘅程序员总是好乐于分享知识,并会让我变得更好,从而让自己和成个团队在这过程中都变得更好。

    延伸阅读:

    “10x 工程师”:点样让身边 10 位同事效率翻倍?

    译者:boxi

    cantonese.live 足跡 粵字翻譯

    2021-04-11 16:07:11

  • 0
  • 0
  • 0
  • 160
  • 请登录之后再进行评论

    登录
  • 任务
  • 发布
  • 偏好设置
  • 单栏布局 侧栏位置: