软件工程师招聘,软件工程师月薪( 六 )


以软件工程师的身份工作
在这个阶段,如果你面试过程中表现不错并且喜欢面试官回答你问题的方式,你被录用的可能性就很高了 。
祝贺,你正式成为一名工程师了!
那现在又该如何呢?好吧,现在是时候重新学习大量编码和工作方面的东西了 。既然我们是程序员,我们就从讨论代码开始 。
好的行业代码
好的行业代码有以下属性,依序是:
可读性,因为代码用来读和维护的频次要高于写 。代码的意图必须清晰,让其他开发者在多年后依然理解 。
防御性,就是要遵循防御性编码的最佳实践 。防御性编码本身就是一个课题,不过其要义是:你必须确保自己所写的类和方法的不恰当使用不会导致你的代码搞得软件都崩溃 。
优化,位列清单的最后未知,因为大多数时候你并不需要真正去担心这个 。这并不意味着你应该编写糟糕代码,在存在线性解决方案的情况下以O(n3)的效率去做某个东西 。但开发者通常渴望尝试并且会在不需要的情况下过度优化,却牺牲了代码的可读性和防御性 。你永远都应该能够证明牺牲了这些属性的特定优化是值得的 。
现在你了解了如何去编写良好的行业代码了 。
编码的工作你不会干太多的
说出来也许有点令人吃惊,但是大多数时候你都不用写新代码,而是相反,要做:
调试
读已有代码
开会或者写电子邮件
研究该怎么做以便不用写代码
因此编码以外的技能对你的职业一样关键 。
调试和阅读代码
调试远不仅仅是用打印语句 。一切使用广泛的语言和技术栈都有各种强大的工具 。学会使用它们,因为这些会让调试轻而易举,节省你无数的时间 。
理解代码库 。大多数技术栈都有某种代码图谱生成工具来帮助你理解代码库的结构 。企业级的IDE通常都内置了那种功能 。你还可以利用ReSharper、grep 或者Sourcegraph之类的工具来探索代码 。
理解产品 。你会对居然有这么多开发者在试图“修复”软件前不知道软件应该是怎么工作的感到惊讶 。先看看文档再说吧 。
组织你的思路
既然你的大量时间都是用在沟通、研究和多任务上,你需要一些工具来帮助一切井然有序 。
TODO清单/任务工具:你的公司应该已经有了某种任务管理软件了,但你自己也有类似的个人系统是有帮助的 。使用便利贴或者像Trello或者Todoist之类的软件 。
笔记:开会一定要记笔记,要致力于改进现有文档并且建立个人的知识库 。使用Evernote、OneNote或者笔记本 。使用这些工具似乎有用力过度之嫌,但日后在回顾这一耗掉了你3天时间才想清楚的晦涩的开发过程时你会感谢自己的 。不做丰富笔记的好的软件开发者我一个都没见过 。
图表/可视化:人是视觉动物,创建流程图和架构可帮助你和其他人理解复杂的话题 。在跟非技术人员沟通时图解尤其有用 。可使用Lucidchart、 Visio或者白板 。
知道何时使用库
简短回答:随时都要 。
详细回答:99%的时间内你都不应该重新发明轮子 。在大多数的软件工程岗位,实现特定类型的东西都属于纯粹浪费时间 。这并不意味着你不应该知道所使用的算法和数据结构是怎么工作的,因为这可以帮助你决定用什么以及什么时候用 。
为了成为一名高效的软件工程师,你需要理解自己可以任意支配使用的那些库 。大多数流行语言的标准库都是极其有用的,其规模比你想象的要大 。此外,代码库也许也会利用了额外的特殊库 。阅读其文档,知道什么使用去使用它们 。
你还应该不要害怕去建议额外的库,如果它们将节省时间的话 。然而,你需要确保自己选择了一个好的库供行业使用 。好的库的标准是:

推荐阅读