加入收藏 | 设为首页 | 会员中心 | 我要投稿 核心网 (https://www.hxwgxz.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程 > 正文

软件工程师生存指南:面试准备、工作经验和实用工具

发布时间:2018-11-09 16:23:49 所属栏目:编程 来源:36氪
导读:原标题:软件工程师生存指南:面试准备、工作经验和实用工具 编者按:软件工程师是令人羡慕的职业。但是如何才能拿到这份工作?又如何才能做好这份工作呢?拥有相关经验的Valeri Alexiev提供了相关建议和工具。其中包括了如何准备面试、如何以软件工程师的

公司文化也许是个非常含糊的概念,但即便像开放办公室还是小隔间这样的小事情都会显著改变你与同事的日常互动。这方面没有普遍性的危险信号,但是要确保他们的答案是你可以按照每周40+小时的节奏持续相处数年的东西。

以软件工程师的身份工作

在这个阶段,如果你面试过程中表现不错并且喜欢面试官回答你问题的方式,你被录用的可能性就很高了。

祝贺,你正式成为一名工程师了!

那现在又该如何呢?好吧,现在是时候重新学习大量编码和工作方面的东西了。既然我们是程序员,我们就从讨论代码开始。

好的行业代码

好的行业代码有以下属性,依序是:

  • 可读性,因为代码用来读和维护的频次要高于写。代码的意图必须清晰,让其他开发者在多年后依然理解。

    防御性,就是要遵循防御性编码的最佳实践。防御性编码本身就是一个课题,不过其要义是:你必须确保自己所写的类和方法的不恰当使用不会导致你的代码搞得软件都崩溃。

    优化,位列清单的最后未知,因为大多数时候你并不需要真正去担心这个。这并不意味着你应该编写糟糕代码,在存在线性解决方案的情况下以O(n)的效率去做某个东西。但开发者通常渴望尝试并且会在不需要的情况下过度优化,却牺牲了代码的可读性和防御性。你永远都应该能够证明牺牲了这些属性的特定优化是值得的。

    现在你了解了如何去编写良好的行业代码了。

    编码的工作你不会干太多的

    说出来也许有点令人吃惊,但是大多数时候你都不用写新代码,而是相反,要做:

    • 调试

      读已有代码

      开会或者写电子邮件

      研究该怎么做以便不用写代码

      因此编码以外的技能对你的职业一样关键。

      调试和阅读代码

      • 调试远不仅仅是用打印语句。一切使用广泛的语言和技术栈都有各种强大的工具。学会使用它们,因为这些会让调试轻而易举,节省你无数的时间。

        理解代码库。大多数技术栈都有某种代码图谱生成工具来帮助你理解代码库的结构。企业级的IDE通常都内置了那种功能。你还可以利用ReSharper、grep或者Sourcegraph之类的工具来探索代码。

        理解产品。你会对居然有这么多开发者在试图“修复”软件前不知道软件应该是怎么工作的感到惊讶。先看看文档再说吧。

        组织你的思路

        既然你的大量时间都是用在沟通、研究和多任务上,你需要一些工具来帮助一切井然有序。

        • TODO清单/任务工具:你的公司应该已经有了某种任务管理软件了,但你自己也有类似的个人系统是有帮助的。使用便利贴或者像Trello或者Todoist之类的软件。

          笔记:开会一定要记笔记,要致力于改进现有文档并且建立个人的知识库。使用Evernote、OneNote或者笔记本。使用这些工具似乎有用力过度之嫌,但日后在回顾这一耗掉了你3天时间才想清楚的晦涩的开发过程时你会感谢自己的。不做丰富笔记的好的软件开发者我一个都没见过。

          图表/可视化:人是视觉动物,创建流程图和架构可帮助你和其他人理解复杂的话题。在跟非技术人员沟通时图解尤其有用。可使用Lucidchart、Visio或者白板。

          知道何时使用库

          简短回答:随时都要。

          详细回答:99%的时间内你都不应该重新发明轮子。在大多数的软件工程岗位,实现特定类型的东西都属于纯粹浪费时间。这并不意味着你不应该知道所使用的算法和数据结构是怎么工作的,因为这可以帮助你决定用什么以及什么时候用。

          为了成为一名高效的软件工程师,你需要理解自己可以任意支配使用的那些库。大多数流行语言的标准库都是极其有用的,其规模比你想象的要大。此外,代码库也许也会利用了额外的特殊库。阅读其文档,知道什么使用去使用它们。

          你还应该不要害怕去建议额外的库,如果它们将节省时间的话。然而,你需要确保自己选择了一个好的库供行业使用。好的库的标准是:

          • 开源,这样你就可以验证自身代码的质量,并有可能修补对应用非常关键的bug。

            按照MIT和BSD等方式进行的授权,这样你的公司使用起来就不会遇到任何问题。要小心GPL,因为它会让你不小心就将整个代码库都开源出去。

            成熟,比方说出来已经有一段时间了,并且功能集非常丰富。

            维护性强,新版本推出很密集。

            别的公司或者项目也使用,这个可以充当品质认证确保有行业支持,能持续维护下去。

            持续改进

            为了替自己创建新的职业机会,除了学习会让你更擅长日常工作的技能以外,你还需要持续改进自身技能并且学习新技能。

            其实学习的机会有很多,而且其中很多都是你可以负担得起的:

            • 在线课程:向领域内最好的教授学习的机会,而且方式灵活,不容错过。现有技能的补充性教程可以去可以看看Coursera、Udacity以及edX等。

              在线硕士学位:在线硕士学位是最近在顶级大学流行起来的一个趋势,这种方式可以灵活地继续你的正规教育。相比之下,这种继续教育方式费用没那么昂贵,修完整个学位大多数在1万美元左右。乔治亚理工大学、UT以及加州大学圣地亚哥分校等大学均提供此类学位。我个人推荐乔治亚理工大学的在线硕士虚伪,我去年刚从这里毕业。

              博客:博客是开发者社区的重要组成部分。诸如Coding Horror、Joel on Software等博客或者甚至更加诙谐的网站如The Daily WTF等都可以为你提供信息,了解到作为软件工程师该干什么不该干什么。浏览Medium、r/programming, HackerNews等新闻流也能让你找到好博客和好文章。

              (编辑:核心网)

              【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

热点阅读