全文共字,预计学习时长8分钟来源:Pexels近几年软件行业日新月异,变化很多。其中,我最喜欢看到的变化就是公司不再期待软件开发人员有特定的学位,甚至没有学位都可以。不管对于个人还是企业,这都是一个很棒的消息。因为进入这个行业最重要的是这个人究竟能干些什么。如果申请人不能解决编程问题,那他是否有学士学位还是硕士学位并不重要。如果他们不理解MVC模式,那他们能否解释大O符号是什么也并不重要。亲身体验:我有一个计算机科学学位,在我作为软件工程师的时候,除了面试,我从来不需要计算大O。如果你是一个网站可靠性工程师,每秒得处理成千上万的请求,或许你需要计算它,但我猜我们大多数人从没处理过大O。人们进入这个行业和成长所需的信息,都可以通在线资源配以手写软件的经验找到,这就产生了对学位期望的转变。但我认为期望的转变不能止步于此,尤其是寻找资深开发人员的时候。成为一个团队里的资深软件工程师的要求有很多,远不止丰富的经验……虽然经验多是好事,但是一份工作描述不能把“8年以上的工作经验”作为衡量自身工程师的标准。会有人工作了9年,但技能不达标,但与此同时也有人只工作了5年,却能掌握所需的所有能力。不妨把这种数字上的硬性条件替换成几件对团队更有价值的事情。除了成为软件工程师的必备条件之外,以下是我希望资深工程师有的特质:良好的编程能力希望这一点是所有人都能想得到的,最好是都不用出现在这里,因为这是一个“理所当然”的要求,但它往往是区分好工程师和优秀工程师的基本要素。像给变量和方法命名这样简单的事情可以大大提高效率。牢记SOLID原则(注:S:单一职责原则;O:开发封闭原则;L:迪米特法则/里氏替换原则;I:接口隔离原则;D:依赖倒置原则),不断寻找重构候选代码和死代码是必要的。确保测试和功能代码一样重要,这些事情都是十分有价值的。资深工程师是团队里可以在代码的易懂性和有效性上找到平衡的那个人,并且确保团队能保持这种平衡水平。来源:Pexels坚持不懈一个人成功与否最常提到的因素就是他有多少“毅力”。定义如下:“毅力是对长期成就的热情和持久的坚持,与此同时对回报和别人的认可没有过分