176

Palantir 前沿部署软件工程师,4 年前

一些补充问题:

  • 大公司和小公司之间会有差异吗?
  • 要成为高绩效者需要大量工作吗?

28.8K28.8K 次浏览

88 条评论

  • 132Alex ChiouRobinhood, Meta, Course Hero, PayPal4 years agoThis is going to vary a lot across teams/orgs/companies, so I'm going to start with a couple commonalities I've noticed across low performers in general:
    • 不能很好地接受反馈 - 这导致他们无法及时纠正方向,这简直是在自找麻烦。
    • 缺乏协作精神 - 我从未见过一个既积极社交、又善于与团队成员合作(提出好问题、帮助他人)的工程师同时还是低绩效者。当我看到工程师因绩效问题被裁掉时,他们要么是性格有毒、与队友相处不来,要么是更孤僻的独狼,只待在自己的角落里做自己的事。
    Both of the above failure modes are heavily tied to communication skill. For anybody worried about struggling with the above 2, I heavily recommend watching this: [Course] Effective Communication For Engineers Big Companies vs. Small
    • 在大公司,我还见过因沟通不佳和代码质量差导致的低绩效(除了上述两点之外)。展开说说代码质量差这一点,他们通常在整体上对细节的把控都很差。
    • 在小公司,我觉得更看重的是代码产出速度,因为在那里这是杠杆效应高得多的事情,尤其是在初创公司。不过,小公司之间差异很大,所以这并不总是成立——我知道有些小公司实际上更重视代码质量而非速度。
    Do you need to work hard to be a high performer?
    • 总体上是的,但这并非必需。我这里假设的是更“传统”的勤奋定义,即投入相当多的工时。
    • 有些公司把长时间工作等同于工作质量,这挺糟糕的。
    • 说到底,软件技能很大程度上是一个实践的问题,而实践需要时间。这意味着不投入大量时间就很难成为一名优秀的软件工程师。我很少见到那种“天生就懂”、每天只工作 2-4 小时却能产生巨大影响并快速成长的软件工程师。
    In terms of what makes a high-performer software engineer, there is simply too much to cover: There are so many creative, deep ways software engineers can add a ton of value to an organization. If I were to pick one resource in all of Taro that covers a good amount of these skills, it's my in-depth breakdown of my rapid Robinhood onboarding: [Case Study] Becoming A Tech Lead Again In Just 1 Month After Joining Robinhood From Meta There's a ton of nuance in this topic, so I recommend going through the related resources below as well.Related resources:
  • 90Philip SuEx-Microsoft, Ex-Meta, Ex-CEO of tech nonprofit4 years agoTo riff on Anna Karenina, great performers are all like; every poor performer is poor in their own way.Somewhat tongue-in-cheek, but these things are all true of high performers:
    • 影响力高于同级别的其他人。(记住,所有绩效都是相对的。任何高绩效者如果被晋升到合适的级别,都可能表现得很差。)
    • 有责任心 / 可靠。你不会怀疑他们能否完成自己说过要做的事。
    • 出色的协作者。越来越少的公司继续看重“高影响力但难相处的人”。
    • 擅长自我提升。Alex 关于接受反馈的评论在这里说得很到位。最优秀的表现者有自知之明,接受他人的反馈,并能有效地落实反馈。
    But poor performance comes in all sorts of shades:
    • 伊卡洛斯(Icarus)。过于激进地要求晋升的人,很可能会落在一个自己勉强才能胜任的级别上。由于所有绩效都是相对的,晋升过快是沦为低绩效者最快的方式之一。
    • 缺乏自我认知。有一件T恤上写着:“你所有失败的感情关系中,唯一的共同点就是你自己。”抛开玩笑不谈,这句话确实蕴含着真正的智慧。如果你能立即接受并落实任何一条给你的反馈,你就会成为一位了不起的超级明星。事实是,人们有一半的时候不接受反馈,另一半的时候,他们在落实反馈时也很挣扎。
    • 缺乏动力。“世上没有无聊的事,只有无聊的人。”任何认为让工作变得有趣是经理职责的人,长期来看都会陷入困境。聪明人充满好奇心,几乎能从所有事情中找到兴趣。你需要有自己的目标,以及强烈的成功驱动力。
    • 懒散懈怠。如果你和所有人一样聪明,工作也和所有人一样努力,那你就是平庸的。这是定义使然——不是在说俏皮话。我刚加入微软时,在办公室里放了一个睡袋,工作到不可思议的程度。虽然现在我视那段人生为愚蠢,但可以肯定的是,我远超同级别的所有人,而且差距显著。任何告诉你你可以拥有“一切™”——每周只工作40小时、娶/嫁一个超模配偶、IPO一个接一个砸到你头上——的人,都是在向你兜售东西。你只有三种方式能超越他人:1. 运气,2. 天赋,3. 努力。而1和2你无法控制。
    There are way too many other ways to be a poor performer to continue listing them. But I hope this is a helpful start.
  • 51Profile pictureSeed ZengStaff Software Engineer @ DoorDash, ex-FB, ex-Klaviyo4 years agoThis is a good question but also very generic. It really depends on the level, the context and the priorities of team. The expectations & areas of focus are very different for different levels.If I must generalize, a "high performer" are able to do two things compared to a "low performer"
    • 能够自给自足,并能独立推动重大变革。
    • 能够与他人分享自己的所学,并提升整个团队的效率。
  • 45Alex ChiouTech Lead @ Robinhood, Meta, Course Hero4 years agoTaro has come a long way since I originally commented on this post, so I have a bunch of new thoughts. In particular, I didn't cover high-performers too much before, so I'll do it now.When it comes to high performers, there are 2 big core traits I have noticed:
    • 他们极其擅长向他人学习,无论是直接还是间接地学习。
    • 他们培养出更高层次的技能,这些技能适用于任何团队、任何技术栈以及任何情境。

    耳濡目染式学习

    By being able to quickly absorb good behaviors, expertise, and skills from their peers, this makes it so that once a high-performer finds a great team, they are going to grow like a rocket ship. Here are some excellent resources covering this:

    培养更好的技能

    What would you rather have:
    • 1项让你在1种情境下极其有用的技能?
    • 10项让你在1000多种不同情境下至少中等有用的技能?
    The first is a common failure mode for struggling software engineers: They focus too much on the tech and only become good at 1 specific tech stack (i.e. the one used by their team). Sure, they're the most useful person in the world when there's a tricky task in Python 2.7 and they have written Python 2.7 for the past 10 years. However, this also means that when they're put in a non-coding situation or a different team, their usefulness plummets to near 0. The second is what rockstar high-performer engineers do. Of course, they'll develop the technical proficiency to accomplish the tactical parts of their job, but they're also getting good at skills like communication, building relationships, and time management. This means that no matter the situation, they have this solid bedrock of fundamentally useful skills to fall back on. This allows them to always add value, whether it's through effective project management or asking insightful questions.To learn what more about those fundamental skills, check out these awesome resources:
  • 38Rahul PandeyTech Lead/Manager at Meta, Pinterest, Kosei3 years agoI'll illustrate high performance with the story of my friend from college. We were taking the classic Stanford weeder class, CS107, systems programming in C. This class was extremely difficult since it was the first time we were exposed to:
    • 编写复杂的C代码
    • 管理我们自己的内存,例如 malloc() 和 free()
    • 使用命令行和基于CLI的文本编辑器,如 vim/emacs
    • 弄清楚如何用 Makefile 编译和运行程序
    The learning curve was steep. Most people, including me, would wait until the last few days before the deadline and then attempt to speedrun the assignment. But there were too many moving parts, too much to understand, for this to be feasible. I became overwhelmed.On the other hand, my friend made methodical progress every single day. He wouldn't try to get the whole thing done in one go, but he'd create mini-milestones: today he'd dive into Makefiles, tomorrow he'd understand valgrind, and the next day he'd achieve milestone 1 in the assignment. Needless to say, he not only aced every assignment, but he also had enough time to extend projects for extra learning (and extra credit). Two unique behaviors that led to his success:
    • Proper decomposition led to focus. At a certain complexity scale, you need to break problems down and tackle them one at a time. You need to not only figure out the decomposition, but also how the pieces fit together once you solve each piece.
      • 什么都想尝试,结果一事无成。你不可能同时学习AI、区块链和最新的JavaScript框架。
    • Steady progress led to deeper understanding. One pernicious trait of weaker engineers is second-guessing themselves: they'll think component A is responsible for a bug, but then some other data leads them to another conclusion.
      • 构建系统也是同样的道理。你要循序渐进地取得进展,这样才能对工具/系统形成坚如磐石的理解(你能教别人吗?)
    My friend is now a Senior Staff Engineer at a company in San Francisco valued at $9B, operating in one of the most senior roles. The path to high performance is simple but not easy: show up consistently and put in the effort over an extended period.
  • Profile picture27PresidentComstock Software, Inc4 年前归根结底,这两种情况都取决于业务影响力。请根据业务和经济影响力来撰写并排列你的优先事项清单。找出排名最高的优先事项。与你的经理讨论你对业务影响力的评估。始终专注于这些事项。不要让“紧急事务的暴政”让你把精力浪费在低价值的工作上。
  • 5Akhilesh GandotraSMTS at VMWare2 years agoThis is just a personal answer which I have seen in many high performers:
    • 他们会非常积极地参与会议和讨论。他们认真倾听别人的发言,并且能在讨论中提出一些有价值的问题和观点。
    • 他们在会议上总是准备充分,能够轻松回答与会者的问题和疑虑。
    • 他们会花时间阅读代码库,并在做项目的过程中引入改进。
    • 随着时间推移,他们会不断尝试提高手头任务的复杂度。很多时候,我们在工作中习惯于停留在同样的任务上,但这些人会不断为自己寻找更有价值的工作,并增加自己的贡献。
  • 1John VandivierStaff Software Engineer @ Guideline2 years ago
    • 高绩效者能创造影响力
    • 高绩效者被认为创造了影响力
    • 低绩效者则两者都做不到(1 和 2)

Self 的资深软件工程师

3 年前

9.1K 次浏览

4 条评论

Yahoo 的中级软件工程师

4 年前

6.9K 次浏览

2 条评论

Google 的中级数据工程师 [L4]

5.1K 次浏览

7 条评论

Taro Community 的匿名用户

Meta 的软件工程实习生

2 年前

4.3K 次浏览

探索面试题Taro 75Google 面试题Meta 面试题Amazon 面试题Apple 面试题Netflix 面试题

探索面试经验OpenAI 面试经验Anthropic 面试经验Perplexity 面试经验Windsurf 面试经验Mistral AI 面试经验