[译]资深程序员应该有的样子

英文:Seniority, 翻译:@没故事的卓同学

 

人们使用不同的方式来定义工程师的水平,有些公司粗暴的通过工作经验来判断是否资深,但是什么样的工程师才能算资深老司机?下文将列出我的判断依据。


API 不是重点

如果你认为老司机就是 API 记得熟,你就错了。

确实如果对相关 API 比较熟练开发的时候你会比较快,但是熟知一些特定的 API 并不是核心技能,因为只要有足够的时间任何开发者都迟早会对 API 熟练。

不同的公司对于职称的评定区别巨大,有的就是单纯的根据工作年限,也有更不靠谱的就看你在管理的时候和其他同事的关系处的怎么样。

重要的不是你现在是什么职位,在于你在团队中怎么表现。

技术能力通常会随着工作经验逐渐变强。我更想聚焦被很多人忽略的东西:软技能(soft kills)。我把软技能分成个人品质和团队协作两块来看。


个人品质

可靠

一定要可靠,信守承诺,答应的事能够完成,不要失误。

很多时候他人的工作依赖于你的进度,因此要评估一个准确安全的 deadline,不要承诺的太美好最后又无法按时交付。

在提前完成了工作后,总会有一些其他的任务可以主动的找出来做。老司机不会在完成工作后被动的等待别人给他分配工作,会主动的找打到一些事情做。


敢于承担

只有什么都不做的人才不会犯错误。

犯错或者进度受阻都是很正常的事。经验丰富的人会知道什么时候应该让其他人知道遇到困难,并且不会害怕需求帮助支持。

不要害怕承认你的错误,是人都会犯错,公开承认会让其他人更加信任你。


拥抱变化

不要局限在特定框架或者语言上。有一件事是确定的:无论你是否愿意,你的职业生涯里使用的框架会改变很多次。早期职业生涯里我使用的语言很多现在都没人用了。

应该要拥抱变化,强迫自己挑战原有的假设,这样会让你少忽视其他的技术流派。总是有其他可能存在。

我会经常做业余项目,并且我有一条规则:每半年都要尝试不同的方式实现。

这样会让我可以分辨哪个才是最好的解决方案。禀赋效应(Endowment bias描述的就是当你拥有一个东西的时候,对它的价值评估会超过真实的价值(php 是最好的语言)。

需要注意的是改变是有难度的也需要时间。尝试一段时间后坚持下去不要放弃。


实用主义

很多程序员只关注软件工程的问题,追求高代码质量,然而忽略了软件的商业意义。好的代码并不是我们工作的真正目标。老板雇佣我们是为了他们业务解决遇到的特定问题,也许是一个 APP 或者其他什么软件,不是为了让你写出优美的代码。交付好的产品才是最重要的。

你需要投入时间去理解业务需求,只有了解了需求后才能做出适合的选择,聚焦在真正重要的部分。


团队协作

凭借一己之力开发出一个软件产品是很少见的,大部分时间我们都需要和其他成员一起协作。花时间学习如何融入一个团队,这会让你的职业生涯产生巨大的飞跃。


以身作则

如果你:

1.   空闲时主动去解决遗留问题

2.   总是尝试改善架构和工具链

3.   指导他人,自愿去做结对编程或者帮助他人解决问题

4.   给出空间让每个人表达他们的观点并且进行讨论

5.   公平对待每个参与者

你的同事就会越来越尊敬你,同时你也会对团队文化产生影响。

其他成员也会受你的这些行为影响,你的团队也会变的更有活力。


听取他人意见

在工程里,要达到一个目的可以有很多种方式。太容易就按部就班的就用我们习惯熟知的方式。我们需要锻炼我们的灵活性。要乐于听取其他意见,不要仅仅因为与你所习惯的方式不同就无视了其他人的观点。

花时间与他人讨论他们的意见,更好的了解他们的方式和方案怎么工作,所有的好处和坏处等。直到你可以确定哪个方案是更好的为止。

这些方案是否是一个比你资深的工程师提出的并不重要。我从团队里的新手工程师也学到了不少东西,他们经常会有新颖的想法并且挑战原有的假设。这里也顺带提出我另外一个重要的观点:不要利用你是‘老人’的权力

永远不要认为他人“低级”。不要说出诸如“我们就这么干因为你要听我的”,“我已经干了多少年了就这么干”这样的话。这样的行为会让人觉得这个工程师幼稚就像一个小孩,一点都不专业。不要这么做。

1.   用事实证明。如果找不到理由支撑你的观点,可能你的观点就不是最好的

2.   不要过激,讨论过程中或许有冲突,但是老司机知道批评一件事并不是批评一个人,对事不对人

3.   在回复前思考清楚,不要打断其他人。让他们处理完手头的工作再和他们进行讨论

学习如何控制你的冲动和情绪对于你和其他人融洽相处是非常重要的。
学习进行时间管理可以让你保持明智。


成为其他开发者的导师

指导其他开发者是非常有益的一件事,同时也可以培养正确的团队文化。

我希望团队里所有成员都可以对我放心的提问。也许是某个工作应该怎么做或者质疑我的决定。

我看到一些团队里的成员害怕提问,因为“经理看起来很可怕”,并且把寻求帮助当做员工能力的考核之一。

应当鼓励成员遇到困难寻求帮助或者遇到困难时寻求建议。

如果你想要成为一个神奇的10倍工程师(10x engineer),帮助团队里的其他工程师成长。记住:没有愚蠢的问题,如果有人对你的代码有问题通常意味着你的代码不够简单或者有改进的空间。



积极寻求方式改进现有方案

没有一个方案是完美的。你应该总是思考如何改进。

如果你批评某件事,你应该总是提出一个改进的方案。

如果你在写代码时发现一个痛点,或者观察到你的同事有痛点,思考如何解决它。

如果一件事情重复发生了两次别急于开始写一个库或者工具来解决它。如果真这个问题真的存在,它一定会在不同的人身上重复出现多次,这个时候再开始着手解决改进它。

iOS 社区是我见过最好的社区之一。我会鼓励你去开源这些工具或者库,并且分享你解决问题的经验给他人。把一些东西写下来你会发现你还有很多不足。

可以通过订阅社区的新闻来获取 idea,比如订阅 iOS Dev Weekly 和 Swift News


拒绝不健康的团队文化

这点我怎么强调也不过分,我看过很多人吐槽他们团队文化好几年,我的问题总是“那你做了些什么?”。
对于不健康的团队文化你应该勇敢的抗争,如果你看到某人的行为不对不要害怕提出来。提出建议就像平常的交流和代码的管理一样。
我对这件事的观点很简单:

如果我看见某些我不喜欢的事,我会在团队里提出来。否则团队会变得越来越糟,如果这样我就走人
既然你反正最后都会走,那为什么害怕提出来并且抗争?

很多人会害怕讲出来,尤其是少数派(黑人?)或者内向型的人。通常这样的人连谢谢都是私下过来对你说。

场景应该是这样的:

1.   每个人都是平等的,确保每个人都可以自由表达他的观点,即使这些人很害羞

2.   当一个人被意外打断的时候,保证他的观点可以继续说完,比如“老王,你接着刚才的话继续说”


总结

成为一个好的开发者和团队成员比学习编程需要了解更多。你的技术水平会随着工作经验的增加而提高,然而如果你不注意投入时间提高你的软技能,最后就会成为你职业生涯里的瓶颈,你甚至都没有意识到这点。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
提供的源码资源涵盖了Java应用等多个领域,每个领域都包含了丰富的实例和项目。这些源码都是基于各自平台的最新技术和标准编写,确保了在对应环境下能够无缝运行。同时,源码中配备了详细的注释和文档,帮助用户快速理解代码结构和实现逻辑。 适用人群: 适合毕业设计、课程设计作业。这些源码资源特别适合大学生群体。无论你是计算机相关专业的学生,还是对其他领域编程感兴趣的学生,这些资源都能为你提供宝贵的学习和实践机会。通过学习和运行这些源码,你可以掌握各平台开发的基础知识,提升编程能力和项目实战经验。 使用场景及目标: 在学习阶段,你可以利用这些源码资源进行课程实践、课外项目或毕业设计。通过分析和运行源码,你将深入了解各平台开发的技术细节和最佳实践,逐步培养起自己的项目开发和问题解决能力。此外,在求职或创业过程中,具备跨平台开发能力的大学生将更具竞争力。 其他说明: 为了确保源码资源的可运行性和易用性,特别注意了以下几点:首先,每份源码都提供了详细的运行环境和依赖说明,确保用户能够轻松搭建起开发环境;其次,源码中的注释和文档都非常完善,方便用户快速上手和理解代码;最后,我会定期更新这些源码资源,以适应各平台技术的最新发展和市场需求。 所有源码均经过严格测试,可以直接运行,可以放心下载使用。有任何使用问题欢迎随时与博主沟通,第一时间进行解答!

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值