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

全文共2703字 , 预计学习时长8分钟
读芯术■8年+的经历or高学历,都并非资深软件工程师的定义……
本文插图
近几年软件行业日新月异 , 变化很多 。其中 , 我最喜欢看到的变化就是公司不再期待软件开发人员有特定的学位 , 甚至没有学位都可以 。不管对于个人还是企业 , 这都是一个很棒的消息 。因为进入这个行业最重要的是这个人究竟能干些什么 。 如果申请人不能解决编程问题 , 那他是否有学士学位还是硕士学位并不重要 。 如果他们不理解MVC模式 , 那他们能否解释大O符号是什么也并不重要 。亲身体验:我有一个计算机科学学位 , 在我作为软件工程师的时候 , 除了面试 , 我从来不需要计算大O 。 如果你是一个网站可靠性工程师 , 每秒得处理成千上万的请求 , 或许你需要计算它 , 但我猜我们大多数人从没处理过大O 。人们进入这个行业和成长所需的信息 , 都可以通在线资源配以手写软件的经验找到 , 这就产生了对学位期望的转变 。但我认为期望的转变不能止步于此 , 尤其是寻找资深开发人员的时候 。 成为一个团队里的资深软件工程师的要求有很多 , 远不止丰富的经验……虽然经验多是好事 , 但是一份工作描述不能把“8年以上的工作经验”作为衡量自身工程师的标准 。会有人工作了9年 , 但技能不达标 , 但与此同时也有人只工作了5年 , 却能掌握所需的所有能力 。不妨把这种数字上的硬性条件替换成几件对团队更有价值的事情 。 除了成为软件工程师的必备条件之外 , 以下是我希望资深工程师有的特质:良好的编程能力希望这一点是所有人都能想得到的 , 最好是都不用出现在这里 , 因为这是一个“理所当然”的要求 , 但它往往是区分好工程师和优秀工程师的基本要素 。像给变量和方法命名这样简单的事情可以大大提高效率 。 牢记SOLID原则(注:S:单一职责原则;O:开发封闭原则;L:迪米特法则/里氏替换原则;I:接口隔离原则;D:依赖倒置原则) , 不断寻找重构候选代码和死代码是必要的 。 确保测试和功能代码一样重要 , 这些事情都是十分有价值的 。资深工程师是团队里可以在代码的易懂性和有效性上找到平衡的那个人 , 并且确保团队能保持这种平衡水平 。
读芯术■8年+的经历or高学历,都并非资深软件工程师的定义……
本文插图
坚持不懈一个人成功与否最常提到的因素就是他有多少“毅力” 。 定义如下:“毅力是对长期成就的热情和持久的坚持 , 与此同时对回报和别人的认可没有过分关注“这也是作为软件工程师最重要的品质之一 。 我们都遇到过这种情况……你发现代码里的漏洞 , 想要去解决它 。 你的第一次 , 第二次 , 甚至第五十次尝试都失败了……挫败感席卷而来 , 没过多久 , 你就开始问自己 , 到底还能干这行多久 。某位技术领头人曾经跟我说 , 他们把队伍里的资深人员视为团队中的“苦力” 。听起来有点惨 , 但是重复尝试一个步骤失败50次后 , 仍然能深呼吸 , 吃点巧克力 , 终于在第五十一次尝试成功 , 这是成为资深工程师的必要素质 。资深工程师是那些能带领团队走过软件开发的风风雨雨的人 。如果你还不是一名资深工程师 , 但那是你的目标 , 可以从这开始 。开放学习新事物技术行业可以说是世界上革新最快的行业之一了 , 甚至就是最快的那个 。 每一两年 , 就会有新技术、工具 , 或者是语言出现 , 它们会带来新的问题 , 甚至是扩展那些本就存在的问题 。作为开发人员 , 要跟得上瞬息万变的软件工程业 , 我们必须一直在学习新事物 。最让人叹息的莫过于一个人固步自封 , 坚持用同样的方式 , 或同样的技术工作多年 , 还觉得没有必要学习新知识 , 或者尝试新东西 。我经常听到“我想使用A语言 , 因为B语言我操作得不太溜” , 我可以理解这一点 , 但或许B语言就是更适合这个问题的陈述呢?或者是其他队友都擅长B语言 , 还可能了解一种语言的语法和技巧在软件工程中并没那么重要 , 重要的是思维过程和对系统的理解 , 以及它各个部分是如何相互作用的……我们总是可以在StackOverflow上查找语法或技巧 。更不用说 , 学习新的东西也意味着新的体验和新的思考方式 。 新的角度总是应该受到欢迎的 。


推荐阅读