译者 | 布加迪
审校 | 孙淑娟
与生活中的任何事情一样,适应新角色并非易事。晋升到高级工程师职位可能颇具挑战,因为这需要承担更大的责任、更合理地确定优先级,并磨练软技能。无论某人最近被提升为高级工程师,还是他试图证明已为下一级职位做好了准备,都应牢记以下几个重要经验,确保在该职位上取得成功。
确定优先级胜过追求完美
完美主义者可能会花大量的时间来尝试改进代码库,分发编程最佳实践,要求给予更多的时间来重构代码,并修复手头的每个错误。然而,修复客户没有抱怨的一项不常用功能中的错误并不是好好利用时间。
确定优先级应该是高级工程师处理工作的核心。软件工程师需要尽量避免没有为公司提供价值、阻碍自身影响的错误。
清晰无误地阐明
高级工程师不仅仅交付代码,还交付解决方案。避免尝试设计不必要的设计模式,避免寻找使代码“更漂亮”以迎合特定审美观的方法。事实上,没有人关心独特的审美偏好,而是关心解决方案带来积极的影响,会年复一年地继续存在。
工程师在编写代码、设计架构、传达信息或倡导一项新技术时,应清晰无误地阐明,而不是故弄玄虚,增添复杂性。这样一来,解决方案更有可能产生积极影响,并在多年后继续存在。
许多软件工程师都想捣鼓全新的技术或新的编程语言。应冷静下来,寻找利用现有的技术架构实现相同目标的机会。虽然新技术很酷,但请记住:就连在组织中学习和教授新技术的任务也可能很繁重。
没有人想碰的代码是设计很复杂,但不一定是最难的代码。
正如Martin Fowler所说:“任何傻瓜都能编写计算机可以理解的代码。而优秀的程序员编写人类可以理解的代码。”
优先考虑为人类提供解决方案。
不仅仅编写代码,还要谈论代码
软件工程师经常陷入的一个陷阱是忘记关注软技能。编写代码速度最快、可以开发出复杂解决方案的工程师不一定为高级工程师职位做好了准备。
高级工程师应该清楚地阐明过去或现在属于他们的每个解决方案。如果工程师无法解释构建解决方案背后的原因,这表明他们只是依葫芦画瓢,而不是认真思考做出的每个决定。
在这个级别的岗位上,力求精确是关键,技术层面和沟通层面的执行必不可少。归根结底,高级工程师不一定是可以编写最多代码的人,但必须能够清楚地解释他们所开发的每个解决方案。
专注于“完成”和“搞清楚”原则
作为高级工程师,您需要明白培训结束后,大部分时间都得靠自己。同事和领导者要求您日复一日地处理业务,无需手把手指导。毫无羞耻地提问题或花一两个星期开发出解决方案的日子已一去不复返了。
实际上,当高级工程师并不容易,前面的道路无疑比较坎坷。这就是为什么光认识到“管用”(just work)还不够,您可能需要付出额外的努力不断提升技能。
在这个级别的职位上,您有责任每天不断地催促自己学习和成长,挑战自己,及时提供价值。
对公司很重要的事情,现在对您很重要
最终,这是作为高级工程师所要恪守的最重要原则,对下一代人才而言至关重要。
不要以为您只需按章办事或面对自己不喜欢的项目时生气。我们干这一行就是为了提供解决方案,我们必须继续这么做。有时,软件工程师的工作就是深入钻研,搞清楚什么因素在阻碍贵公司提供更多的价值,并给出构建代码的理由。
解决组织或用户可能遇到的所有重大问题不切实际,但您可以会从某个方面入手。您能采取的最佳做法就是充当出色的侦察员,让公司变得更好,带头激励他人跟随您的脚步。
原文标题:A Senior Engineer’s Survival Handbook,作者:Kerem Balci