码迷,mamicode.com
首页 > 其他好文 > 详细

8年+的经历or高学历,都并非资深软件工程师的定义……

时间:2020-12-22 12:46:15      阅读:0      评论:0      收藏:0      [点我收藏+]

标签:体验   alt   使用   除了   共享   自我   干货   适合   好处   

技术图片
来源:Pexels

近几年软件行业日新月异,变化很多。

其中,我最喜欢看到的变化就是公司不再期待软件开发人员有特定的学位,甚至没有学位都可以。

不管对于个人还是企业,这都是一个很棒的消息。

因为进入这个行业最重要的是这个人究竟能干些什么。如果申请人不能解决编程问题,那他是否有学士学位还是硕士学位并不重要。如果他们不理解MVC模式,那他们能否解释大O符号是什么也并不重要。

亲身体验:我有一个计算机科学学位,在我作为软件工程师的时候,除了面试,我从来不需要计算大O。如果你是一个网站可靠性工程师,每秒得处理成千上万的请求,或许你需要计算它,但我猜我们大多数人从没处理过大O。

人们进入这个行业和成长所需的信息,都可以通在线资源配以手写软件的经验找到,这就产生了对学位期望的转变。

但我认为期望的转变不能止步于此,尤其是寻找资深开发人员的时候。成为一个团队里的资深软件工程师的要求有很多,远不止丰富的经验……虽然经验多是好事,但是一份工作描述不能把“8年以上的工作经验”作为衡量自身工程师的标准。

会有人工作了9年,但技能不达标,但与此同时也有人只工作了5年,却能掌握所需的所有能力。

不妨把这种数字上的硬性条件替换成几件对团队更有价值的事情。除了成为软件工程师的必备条件之外,以下是我希望资深工程师有的特质:

良好的编程能力

希望这一点是所有人都能想得到的,最好是都不用出现在这里,因为这是一个“理所当然”的要求,但它往往是区分好工程师和优秀工程师的基本要素。

像给变量和方法命名这样简单的事情可以大大提高效率。牢记SOLID原则(注:S:单一职责原则;O:开发封闭原则;L:迪米特法则/里氏替换原则;I:接口隔离原则;D:依赖倒置原则),不断寻找重构候选代码和死代码是必要的。确保测试和功能代码一样重要,这些事情都是十分有价值的。

资深工程师是团队里可以在代码的易懂性和有效性上找到平衡的那个人,并且确保团队能保持这种平衡水平。

技术图片
来源:Pexels

坚持不懈

一个人成功与否最常提到的因素就是他有多少“毅力”。定义如下:

“毅力是对长期成就的热情和持久的坚持,与此同时对回报和别人的认可没有过分关注“

这也是作为软件工程师最重要的品质之一。我们都遇到过这种情况……你发现代码里的漏洞,想要去解决它。你的第一次,第二次,甚至第五十次尝试都失败了……挫败感席卷而来,没过多久,你就开始问自己,到底还能干这行多久。

某位技术领头人曾经跟我说,他们把队伍里的资深人员视为团队中的“苦力”。

听起来有点惨,但是重复尝试一个步骤失败50次后,仍然能深呼吸,吃点巧克力,终于在第五十一次尝试成功,这是成为资深工程师的必要素质。

资深工程师是那些能带领团队走过软件开发的风风雨雨的人。

如果你还不是一名资深工程师,但那是你的目标,可以从这开始。

开放学习新事物

技术行业可以说是世界上革新最快的行业之一了,甚至就是最快的那个。每一两年,就会有新技术、工具,或者是语言出现,它们会带来新的问题,甚至是扩展那些本就存在的问题。

作为开发人员,要跟得上瞬息万变的软件工程业,我们必须一直在学习新事物。

最让人叹息的莫过于一个人固步自封,坚持用同样的方式,或同样的技术工作多年,还觉得没有必要学习新知识,或者尝试新东西。

我经常听到“我想使用A语言,因为B语言我操作得不太溜”,我可以理解这一点,但或许B语言就是更适合这个问题的陈述呢?或者是其他队友都擅长B语言,还可能了解一种语言的语法和技巧在软件工程中并没那么重要,重要的是思维过程和对系统的理解,以及它各个部分是如何相互作用的……我们总是可以在StackOverflow上查找语法或技巧。

更不用说,学习新的东西也意味着新的体验和新的思考方式。新的角度总是应该受到欢迎的。

技术图片
来源:Pexels

有全局观念

这有时直接关系到个人在公司能呆多久,我共事过的最好的资深工程师,都能够在脑海中对整个系统有一个详细的认知。因此他们能快速理解一个功能可不可以以及如何实现,甚至能更进一步,快速确定是什么导致了缺陷。

我曾经的有个队友,我们一起处理一个bug的时候,他看都不看代码就能直接告诉我,可能是第二十五行的文件A或第四十七行的文件B有问题。太神奇了。

这个例子可遇不可求,但对系统有一个整体把控的好处不言自明。

分享知识

我始终相信资深工程师最重要的责任之一就是帮助团队成员,让他们尽可能快的提升自我。

这包括但不限于:

· 和队内其他开发人员一起编写程序,确保自己不只是团队的能力储备库。
· 执行复杂的任务时,与团队中的其他人分享解决方案,这个过程可能在单独会议上进行。(许多团队经常在电话会议结束时进行知识共享,以分享他们学到的或团队需要知道的东西)
· 知道让队友在挣扎中学习和支持他们之间的区别,同时平衡好自己的态度,让队友感受到自信而不是不足。
其实我认为资深工程师让初级工程师独立完成某项工作后,要尽可能少地通过非个人化的代码审查进行教学。

有共情力

最后一点,也是个人认为最重要的,就是一个资深工程师一定要有共情能力。

要理解队友在尽他们的全力尝试。每个人都还在学习,并且要一直学习下去,包括你自己。不要做一个没有感情的代码审查员,要看到队友想法的相关性和潜力。这些行为别人没法教,想要建立一个充满信任的团队,让每个人都感到安全,这还有很长的路要走。

彼此信任的团队可以成就很多。

技术图片
来源:Pexels

希望当我说“8年以上的工作经验并不能让一个资深人员变得资深”时,不会有人误解。我确实相信经历是十分重要且有价值的。但我也相信从资深工程师的位置开始,个人软实力开始变得非常重要,我想在文章中传达的是这一点。这些技能应该是我们这一行的每个人一直在努力学习的东西,也许有一天工作描述将不仅仅是白板面试和8年以上经验,而是一些能够对团队产生更大影响的东西。

当然,这只是笔者个人的一点看法,如果你有什么自己的建议,欢迎在评论区分享给大家哟~

留言点赞发个朋友圈

我们一起分享AI学习与发展的干货

编译组:刘鉴楠、王品一
相关链接:
https://levelup.gitconnected.com/8-years-of-experience-isnt-the-definition-of-a-senior-software-engineer-f3ed904e3bc9

如转载,请后台留言,遵守转载规范

推荐文章阅读

ACL2018论文集50篇解读
EMNLP2017论文集28篇论文解读
2018年AI三大顶会中国学术成果全链接
ACL2017论文集:34篇解读干货全在这里
10篇AAAI2017经典论文回顾

长按识别二维码可添加关注

读芯君爱你

技术图片

8年+的经历or高学历,都并非资深软件工程师的定义……

标签:体验   alt   使用   除了   共享   自我   干货   适合   好处   

原文地址:https://blog.51cto.com/15057819/2565847

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!