前言
今日早读文章由@没故事的卓同学翻译授权分享
正文从这开始~
人们使用不同的方式来定义工程师的水平,有些公司粗暴的通过工作经验来判断是否资深,但是什么样的工程师才能算资深老司机?下文将列出我的判断依据。
API 不是重点
如果你认为老司机就是 API 记得熟,你就错了。
确实如果对相关 API 比较熟练开发的时候你会比较快,但是熟知一些特定的 API 并不是核心技能,因为只要有足够的时间任何开发者都迟早会对 API 熟练。
不同的公司对于职称的评定区别巨大,有的就是单纯的根据工作年限,也有更不靠谱的就看你在管理的时候和其他同事的关系处的怎么样。
重要的不是你现在是什么职位,
在于你在团队中怎么表现
。
技术能力通常会随着工作经验逐渐变强。我更想聚焦被很多人忽略的东西:软技能(soft kills)。我把软技能分成个人品质和团队协作两块来看。
个人品质
可靠
一定要可靠,信守承诺,答应的事能够完成,不要失误。
很多时候他人的工作依赖于你的进度,因此要评估一个准确安全的 deadline,不要承诺的太美好最后又无法按时交付。
在提前完成了工作后,总会有一些其他的任务可以主动的找出来做。老司机不会在完成工作后被动的等待别人给他分配工作,会主动的找打到一些事情做。
敢于承担
只有什么都不做的人才不会犯错误。
犯错或者进度受阻都是很正常的事。经验丰富的人会知道什么时候应该让其他人知道遇到困难,并且不会害怕需求帮助支持。
不要害怕承认你的错误,是人都会犯错,公开承认会让其他人更加信任你。
拥抱变化
不要局限在特定框架或者语言上。有一件事是确定的:无论你是否愿意,你的职业生涯里使用的框架会改变很多次。早期职业生涯里我使用的语言很多现在都没人用了。
应该要拥抱变化,强迫自己挑战原有的假设,这样会让你少忽视其他的技术流派。总是有其他可能存在。
我会经常做业余项目,并且我有一条规则:每半年都要尝试不同的方式实现。
这样会让我可以分辨哪个才是最好的解决方案。禀赋效应(Endowment bias)描述的就是当你拥有一个东西的时候,对它的价值评估会超过真实的价值(php 是最好的语言)。
需要注意的是改变是有难度的也需要时间。尝试一段时间后坚持下去不要放弃。
实用主义
很多程序员只关注软件工程的问题,追求高代码质量,然而忽略了软件的商业意义。好的代码并不是我们工作的真正目标。老板雇佣我们是为了他们业务解决遇到的特定问题,也许是一个 APP 或者其他什么软件,不是为了让你写出优美的代码。交付好的产品才是最重要的。
你需要投入时间去理解业务需求,只有了解了需求后才能做出适合的选择,聚焦在真正重要的部分。
团队协作
凭借一己之力开发出一个软件产品是很少见的,大部分时间我们都需要和其他成员一起协作。花时间学习如何融入一个团队,这会让你的职业生涯产生巨大的飞跃。
以身作则
如果你:
-
空闲时主动去解决遗留问题
-
总是尝试改善架构和工具链
-
指导他人,自愿去做结对编程或者帮助他人解决问题
-
给出空间让每个人表达他们的观点并且进行讨论
-
公平对待每个参与者
你的同事就会越来越尊敬你,同时你也会对团队文化产生影响。
其他成员也会受你的这些行为影响,你的团队也会变的更有活力。
听取他人意见
在工程里,要达到一个目的可以有很多种方式。太容易就按部就班的就用我们习惯熟知的方式。我们需要锻炼我们的灵活性。要乐于听取其他意见,不要仅仅因为与你所习惯的方式不同就无视了其他人的观点。
花时间与他人讨论他们的意见,更好的了解他们的方式和方案怎么工作,所有的好处和坏处等。直到你可以确定哪个方案是更好的为止。
这些方案是否是一个比你资深的工程师提出的并不重要。我从团队里的新手工程师也学到了不少东西,他们经常会有新颖的想法并且挑战原有的假设。这里也顺带提出我另外一个重要的观点:不要利用你是‘老人’的权力。