在软件工程领域工作了6年之后,有时我会停下来思考一下自从我开始职业生涯以来学到的东西。 让我印象深刻的一件事是,如果我有这个机会的话,我想告诉大学学院里的很多事情。

虽然我没有这种能力,但我希望以下几项内容对那些从大学毕业并进入软件行业的人们有用。

继续学习

您刚刚获得文凭,对成就感不知所措,现在感到渴望向新同事证明自己的愿望吗? 太好了,恭喜您,祝您好运,但是请记住,这只是您学习的开始。

您很快就会发现需要继续学习新技术,新方法,新技术,新语言。 尽快开始,因为以无人监督的方式学习(没有课程大纲,没有老师,没有期末考试)是您需要磨练的技能。

在舒适区域之外学习。 如果您使用动态语言,请学习静态类型的语言。 如果您习惯使用IDE等,请使用VIM或Emacs。

寻找导师

我只是说大学毕业后没有老师,但这并不是完全正确的。 没有人会和您一起坐在教室里去上预定义的课程。 但是,找到一个可以指导您的更有经验的人仍然非常有益。

桑德罗(Sandro)的著作《软件工匠》 ( The Software Craftsman)描述了导师如何对新软件开发人员带来极大的好处。

根据与您合作的公司的不同,可能会为您提供一位导师,或者有人会来找您并自发地提供帮助。 有时您需要寻找它们。 如果您在同事中找不到他们,请在社区活动中寻找他们。

问问题

我大学毕业时不知道框架是什么。 查找Wikipedia的定义也无济于事,而且在很长的几个月里,我太害怕显示自己的无知和询问。

不要重复我的错误。 不应期望您一无所知。 问,不要害怕表明你不知道什么。

大多数情况下,您会发现团队中至少有一个其他人有相同的问题,或者人们对您所用术语的定义略有不同。 即使您是唯一一个提出问题的人,也不会是唯一一个从中学到东西的人。

尽早获得良好的实践

这些良好实践将成为您发展事业的基础。 尽早获得它们。

利用现有的库和框架

大学毕业后,我几乎不知道如何正确使用图书馆。 如前所述,我什至都不知道框架是什么。

作为大三学生,我们倾向于重新发明轮子。 我们定制的解决方案通常质量不如数百年来在其上进行协作的图书馆一样。 尝试重新使用现有的资源。

另一方面,了解给定库的权衡是什么。 仍然维护吗? 它很容易使用? 是否需要对应用程序体系结构进行重大更改? 确保隔离该库,以便替换它并不意味着对代码进行更改。

但是仍然了解基本原理

库很方便,因为它们消除了复杂性。 但是,请花一些时间了解它们在后台的工作方式。

虽然您的Web框架将为您处理HTTP请求,但是您需要了解HTTP是什么以及如何在两台计算机之间传递信息。 同样,请花一些时间来了解DNS , TLS和其他低级协议的基础。 如果您的应用程序使用OAuth或基于会话的身份验证 ,则需要了解它,并且需要了解后果。 此页面是一个很好的起点。

假设错误是你的

您将面临无法解释的错误。 有时甚至是heisenbug ,在调试它们时也会消失。 绝望的是,您可能会想将错误拒绝给代码以外的其他原因。 始终以您的代码而不是库,操作系统或其他任何问题为前提。

这是谦卑的教训。 与经过了数年努力的经过严格测试的库相比,未经测试的2天的旧代码有更多的机会出错。 随着时间的流逝,您的调试技能和错误发现者的本能会不断提高,无论如何您都会得出结论。

有时候,确实是您以外的其他软件组件中的错误。 无论该漏洞有多大恶意,还是看上去多么粗心,都请记住您的代码被抛弃了多少个错误,并且不要将其与错误代码的作者联系起来。

测试,测试,测试

我认为在软件工程课程中没有充分实践自动化测试和测试驱动的开发。 这些是当今软件开发中最重要的技能之一,我希望我在职业生涯的早期就意识到这一点。

了解如何编写测试以及如何维护测试。 与可以教您测试驱动开发的人配对。 如果您在同事中找不到这样的人,请查看您住所旁边的软件Craft.io社区 。

清洁代码原则

从一开始就学习如何编写简洁的代码。 Robert C Martin的书是一个很好的起点。 在线上也有很多内容(只需查看Codurance博客上的其他文章)。 花时间阅读并应用其中的一些内容。 向您的导师或同事寻求反馈。

编程是一种社会活动

取决于您在开始职业生涯之前已经进行了多少编程实践,您可能仍然相信程序员的一天是独自坐在编辑器前度过的。 您需要尽快了解与他人合作能赢得多少。

配对编程

这是一项非常重要的技能。 习惯与其他人进行编码,将键盘从一个人不时地传递给另一个人。 与比您更熟练的人和初学者一起练习。

擅长编写代码甚至无法完成一半的工作

您需要学习如何与用户或产品负责人合作,询问有关功能的问题并管理期望。

您会发现有时候,答案不是将更多代码添加到您的项目中:要么不需要此功能,要么可以使用当前版本的应用程序来实现,或者有另一个应用程序提供了80%的功能。功能。

不要“聪明”

聪明会在大学里得到回报。 可能已经鼓励您优化for循环,或者通过在前一行中用i++替换i=i+1减少一行代码。

具有创造力和机智,能够解决一个棘手的复杂问题是件好事。 但是不要使用巧妙的微优化来降低代码的可读性。

初学者软件工程师面临的最大挑战之一就是使您的代码可读。 您的队友需要能够在无需您帮助的情况下理解您的代码并对其进行改进。 巧妙的优化通常会通过使代码的意图不那么明显而与之相反。 取消这种“学术”反射。

但是要理解这是一个折衷,可读代码比聪明代码更重要。 无聊的代码是好的。

翻译自: https://www.javacodegeeks.com/2016/10/wish-knew-started-software-developer.html

当我开始成为软件开发人员时,我希望知道什么相关推荐

  1. 软件开发人员的三条职业路径

    落入俗套很容易,循规蹈矩也很容易,只要跟其他人做一样的事情就是了.尽管事实上大多数软件开发人员在其职业生涯中只作为雇员为公司工作,但这并非你的唯一选择.有很多更高净值的就业选择可以更好地发挥你的编程技 ...

  2. 印度软件开发人员_我如何辍学并在19岁时在印度找到了一份开发人员的工作

    印度软件开发人员 关于我自己 (A bit about myself) I'm a nineteen-year-old self-taught web developer from India. I ...

  3. 定制开发软件所有权_职业所有权软件开发人员指南

    定制开发软件所有权 介绍 (Introduction) 您的职业正在流向大海吗? (Is Your Career Drifting Out To Sea?) Like a frog who's slo ...

  4. 软件访问转向本地_我是如何从完整的初学者转向软件开发人员的,以及如何做到的...

    软件访问转向本地 by Madison Kanna 麦迪逊·卡纳(Madison Kanna) 我是如何从完整的初学者转向软件开发人员的,以及如何做到的 (How I went from comple ...

  5. 银行软件开发实习生_如何找到学生的软件开发人员实习生

    银行软件开发实习生 by Grazietta Hof 由Grazietta Hof 如何找到学生的软件开发人员实习生 (How to find a Software Developer Interns ...

  6. esl8266开发之旅_从ESL老师到越南软件开发人员的旅程

    esl8266开发之旅 by alberto montalesi 通过阿尔贝托·蒙塔莱西 从ESL老师到越南软件开发人员的旅程 (My Journey from an ESL Teacher to S ...

  7. 软件开发人员维护代码指南

    当你最初想要成为一个软件开发者的时候,你可能梦想着创造令人兴奋的新功能,玩弄一些新科技,并编写一些非常酷而有趣的代码. 但是你可能从未想过的是,要在一个拥有10年历史的并且由一个很多年前就离开公司的某 ...

  8. 软件开发人员能力模型

    最高层:过程控制和管理 第三层:方法.思想和理论 第二层:具体技术.语言和工具 最底层:基础原理.基础知识 最底层是基础原理和基本技术:包括计算机原理.电路.数据结构.数据库原理.编译原理.操作系统等 ...

  9. (转)软件开发人员如何提高自己的软件专业技术方面的具体建议

    哲学就是用简单的说话来体现出隐含深层意义的道理,让人们去思考和体会.哲学本身就是用来完善自己的精神修养和帮助他人完善思想的. 哲学的特征在于追问本质,不断反思.内容上,哲学的反思对象无所不包:深度上, ...

  10. python编程软件开发_Python编程对软件开发人员很重要?

    我相信 Python 编程对软件开发人员很重要.现今已经诞生了不少的编程语言,它们都有各自不同的特性:强大者如 Lisp,快速如C,运用广泛如 Java,论古怪则如 Haskell.与这些语言不同,P ...

最新文章

  1. golang runes 字符串 互转
  2. LightOJ - 1265 概率
  3. 微信:禁用小程序跳转 App;华为商城上架 PlayStation 5;币安涉及洗钱被美监管调查
  4. Android学习笔记-判断手机外部存储是否可读写
  5. 从摩托罗拉、诺基亚再到航空领域应用,这款开源数据库的成功如何成就天才程序员?...
  6. python封装数据库操作_Python3 数据库操作小封装
  7. 如何选择最佳云托管服务提供商
  8. 易宝Java版在线支付
  9. 随机生成姓名代码java
  10. Unity SRP从零搭建一套图形渲染管线
  11. PS利用蒙版把图片调暗
  12. 验后方差估计python,python的哪个统计模块支持事后检验(Tukey,Scheffe或其他)的一种方差分析?...
  13. 微型计算机cpu组成部分组成部分的功能,微处理器的组成及其各部分的功能?
  14. 华东师范大学2017年数学分析考研试题
  15. pyimagesearch-5 霍比特人和直方图 - 使用Python构建您的第一个图像搜索引擎的操作指南
  16. 三级面包屑的页面跳转到二级面包屑页面时,报错:Rendered fewer hooks than expected.
  17. 零基础通过直播小程序组件实现电商带货
  18. 苹果微信多开_一个手机能登两个微信吗
  19. Windows快捷键的使用
  20. SAPnbsp;标准教材和自学方法

热门文章

  1. python数据分析三剑客之pandas
  2. 为什么会有才华横溢的穷人?
  3. git # 请输入一个提交信息以解释此合并的必要性,尤其是将一个更新后的上游分支 # 合并到主题分支。
  4. 转行软件测试,报培训班3个月出来就是高薪工作,靠谱吗?
  5. 90 后字节跳动员工内幕交易,被罚 50 万
  6. 程序员:逃不开的三十岁“魔咒”
  7. Windows 7 下 vs2010内存泄漏检测工具VLD的使用
  8. 绘制loss和accuracy曲线
  9. 搭建一个简单的webpack(一)
  10. 九号机器人科创板审核状态变更为“中止” 因需更新申报材料