学习中的经验教训很重要

by Corey Slaven

通过Corey Slaven

有时最难的教训是最重要的教训 (Sometimes the hardest lessons are the most important ones to learn)

As you may know, being a software engineer is a constant process. In an industry that moves as fast as tech, there are lots of new things to learn. New frameworks, new languages, new hardware.

如您所知,成为软件工程师是一个持续的过程。 在一个像科技一样快的行业中,有很多新东西需要学习。 新框架,新语言,新硬件。

It never stops.

它永远不会停止。

I just completed my first year as a junior software engineer. This year challenged me beyond anything I could have ever imagined. I have decided to share with you the most important things that I have learned in the past year as a developer.

我刚完成第一年的初级软件工程师。 今年对我的挑战超出了我的想象。 我已决定与您分享我作为开发人员在过去一年中学到的最重要的事情。

如何学习新的代码库 (How to learn a new codebase)

I cannot tell you how happy I was to start my career as a software engineer. I walked in with a smile on my face ready to learn.

我无法告诉您开始成为软件工程师的职业生涯有多高兴。 我笑着走进去,准备学习。

I was convinced that I knew everything that I needed to know to get up to speed on any project that I was put on.

我坚信,我知道我所需要了解的一切,以便快速完成我所从事的任何项目。

I was ready to conquer the world.

我准备征服世界。

I quickly learned that this was not the case.

我很快得知情况并非如此。

My jaw dropped to the floor when I started working on my first issue. The project I was working on was larger than anything that I had ever touched. I was having trouble just navigating around.

当我开始处理第一期杂志时,我的下巴掉了下来。 我正在从事的项目比我接触过的任何项目都要大。 我在浏览时遇到了麻烦。

It was difficult for me to see how all of the different pieces interacted. I was just staring at the screen at one point, when one of the senior developer told me to stop.

我很难看到所有不同部分之间的相互作用。 当一位高级开发人员告诉我停下来时,我只是盯着屏幕看。

“Stop staring at the screen! Just break the code!”

“别盯着屏幕! 破坏密码吧!”

This was a terrifying thing to be told. What if I broke something important, or something couldn’t be fixed?

这是一件令人恐惧的事情。 如果我破坏了重要的东西或无法解决的东西怎么办?

I was quickly reassured that nothing could go wrong, as all of our code is maintained in version control. As long as I was working on my own branch, everything could be reverted back to normal.

我很快就放心,不会出错,因为我们所有的代码都在版本控制中维护。 只要我在自己的分支上工作,一切都可以恢复为正常。

I really just needed to start breaking the code.

我真的只需要开始破坏代码。

I started commenting out bits and pieces, guessing what would work and what wouldn’t.

我开始点点滴滴地评论,猜测哪些行得通,哪些行不通。

Slowly but surely that helped me recognize how different parts of the system interacted with each other.

慢慢地但可以肯定的是,这有助于我认识到系统的不同部分是如何相互作用的。

By breaking things, I was able to see what was needed in a codebase and even what may not be needed. It helped me not only figure out how the code worked, but also that some code didn’t even need to be there.

通过破坏事物,我能够看到代码库中需要的内容,甚至可能不需要的内容。 它不仅帮助我弄清楚了代码是如何工作的,而且还帮助我什至不需要一些代码。

I now use this technique when learning any new codebase. I just have to make sure that I don’t push any broken code to version control.

我现在在学习任何新的代码库时都使用这种技术。 我只需要确保不将任何损坏的代码推送到版本控制即可。

如何沟通 (How to communicate)

Having largely spent most of my time learning how to code by myself, I had to learn how to code with others once I got into a professional environment. This was a difficult lesson.

在大部分时间里,我都是自己学习编码的,一旦进入专业环境,我就必须学习如何与他人编码。 这是一个艰难的教训。

I had to learn how to articulate complex concepts to others around me. This came out as a garbled mess more than once.

我必须学习如何向周围的人表达复杂的概念。 这不止一次出现乱码。

Even though there were times when other developers had no idea what I was trying to say, I didn’t get discouraged. I took deep breaths and thought long and hard about what I was trying to say.

即使有时候其他开发人员不知道我要说什么,我也没有灰心。 我深吸一口气,对自己想说的话进行了长时间的认真思考。

There was plenty of technical jargon that I simply didn’t know.

我根本不知道很多技术术语。

In time, and through a lot of practice, I was able to start describing things in a manner that other developers could follow.

随着时间的推移,通过大量的实践,我开始以其他开发人员可以遵循的方式描述事物。

Beyond describing things that I was talking about, I also had to let others know when I didn’t know what they were saying.

除了描述我在说的事情之外,当我不知道他们在说什么时,我还必须让其他人知道。

Sometimes it is easy to just nod and say you know what another developer is trying to tell you.

有时候,很容易点头并说出您知道其他开发人员想要告诉您的内容。

Though it may be easy to just nod and smile, this generally ends up being an issue.

尽管点头和微笑可能很容易,但这通常是一个问题。

I always try to let others know when I don’t understand something, no matter how simple the concept may be to them.

当这个概念对他们来说多么简单时,我总是试图让别人知道我什么都不懂。

Communication is key in this industry, as good software cannot be developed without it. How the heck are we going to build anything useful if no one takes the time to explain or understand what we are trying to do?

在这个行业中,通信是关键,因为没有它就无法开发好的软件。 如果没有人花时间解释或理解我们要做什么,我们将如何构建有用的东西?

Here are three things I consider crucial when communicating with others:

与他人交流时,以下三点至关重要:

倾听 (Listening)

I try to consume everything that the other person is trying to convey. I think about how I am going to respond and then reply. I try not to make assumptions. I try not to cut someone off mid-sentence, or claim that I know what they are going to say.

我试图消耗对方试图传达的所有东西。 我考虑要如何回应然后再回应。 我尽量不做假设。 我尽量不要将某人的句子中段砍掉,也不要声称我知道他们会说些什么。

Please listen.

请听。

忍耐 (Patience)

I try to be patient when communicating with others. I may have to explain something more than once before they understand what I am truly trying to tell them. Everyone operates at a different pace. It pays to be patient.

与他人交流时,我会尽量保持耐心。 在他们理解我真正要告诉他们的内容之前,我可能不得不解释多次。 每个人的步调都不一样。 值得耐心等待。

同情 (Empathy)

I think this is one of the most important things to develop good communication skills. As humans, we all run into differences between one another.

我认为这是发展良好沟通技巧的最重要的事情之一。 作为人类,我们都陷入了彼此之间的差异。

We will have differing opinions, incorrect assumptions, bad ideas, good ideas, terrible days, and wonderful days. I always try to take into account the other person’s perspective when communicating with them.

我们会有不同的见解,错误的假设,不好的主意,好的主意,糟糕的日子和美好的时光。 与他人交流时,我总是尝试考虑对方的观点。

Treat others the way you want to be treated. I consider that to be law.

以您想要的方式对待他人。 我认为这是法律。

As I learned how to communicate better, my days got much easier. My productivity shot up as I was able to work with others more efficiently.

当我学会了如何更好地沟通时,我的日子变得轻松了很多。 由于能够更有效地与他人合作,因此我的工作效率Swift提高。

Though I had mastered many aspected of communication, there was still one key aspect that I hadn’t mastered…

尽管我已经掌握了沟通的许多方面,但是仍然有一个关键的方面我没有掌握……

如何寻求帮助 (How to ask for help)

This was one of the hardest lessons for me to learn.

这是我要学习的最难的课程之一。

I am one that had a very hard time asking for help. I always felt like I could figure out things on my own.

我是一个很难寻求帮助的人。 我总是觉得自己可以自己解决问题。

It was a combination of me trying to prove myself (silly, I know) and my ignorance on how to ask for help that prevented me from doing so.

这是我试图证明自己(很傻,我知道)和我对如何寻求帮助的无知使我无法这样做的结合。

I finally learned how to ask for help after I had been investigating an unknown bug in a project I was working on. I worked on the bug for some time and then decided to ask another developer for help.

在调查了我正在研究的项目中的未知错误之后,我终于学会了如何寻求帮助。 我在Bug上工作了一段时间,然后决定向其他开发人员寻求帮助。

I went over to the other developer in a bit of a panic. I was basically just flailing my arms around screaming “BUG, BUG, BUG!”

我有些慌张地去了另一个开发商。 我基本上只是挥舞着尖叫着“ BUG,BUG,BUG!”。

That’s not exactly how it happened, but from the other developer’s perspective, that is probably how it seemed.

那不是真的发生的方式,但是从其他开发人员的角度来看,那可能就是它的样子。

He, and another senior developer, decided it was best for me to sit down with them and have a conversation about this particular event.

他和另一位高级开发人员认为,最适合我和他们坐下来讨论这个特定事件。

I learned that it was not constructive for me to interrupt another developer to let them know that there was a bug.

我了解到,打断另一个开发人员让他们知道存在错误对我来说不是建设性的。

It is not constructive for me to let another developer know that I need help without any context as to what I am having an issue with.

让另一位开发人员知道我需要帮助而没有关于我所遇到的问题的任何上下文,这对我来说并不是建设性的。

I learned that there is a formula to asking for help.

我了解到有寻求帮助的公式。

Instead of flailing my arms about and screaming about the presence of a bug, I learned this simple formula:

我学到了一个简单的公式,而不是挥舞着手臂并尖叫着发现一个错误:

“I did this thing, and something happened, but I wanted this to happen instead. I have had trouble figuring out why this is happening. When you have a moment, could you help me find the root of the problem?”

“我做了这件事,发生了一些事情,但是我希望这能发生。 我很难弄清楚为什么会这样。 有空的时候,您能帮我找到问题的根源吗?”

This always incites good conversations and generally will lead to a solution to the problem.

这总是引起良好的对话,通常会导致问题的解决。

I had not realized that my previous approach to asking for help was counter-productive and not good for anyone.

我没有意识到我以前寻求帮助的方法会适得其反,对任何人都不利。

I honestly had no idea how to ask for help.

老实说,我不知道如何寻求帮助。

If you are like I was, and you don’t like to ask for help (or you don’t know how) please ask for help. Remember the formula.

如果您像我一样,并且不希望寻求帮助(或者您不知道如何),请寻求帮助。 记住公式。

Others will want to help you if you ask in the manner I have suggested.

如果您以我建议的方式询问,其他人将希望为您提供帮助。

文献资料 (Documentation)

This is something that I learned out of necessity.

这是我从必然中学到的东西。

No matter how many times you tell me how to do something, some things I will never remember.

无论您告诉我多少次做某事,有些事我都永远不会记住。

There are language quirks and programming practices that I always have to Google.

我一直对Google有一些语言要求和编程习惯。

The more projects I worked on, the more I realized I was simply not able to remember everything. This led me to start documenting.

我从事的项目越多,我就越意识到我根本不记得所有事情。 这导致我开始记录文件。

There are way too many moving parts of ANY software project not have any sort of documentation. I do not care if it is in a README or a PDF.

任何软件项目的太多活动部分都没有任何类型的文档。 我不在乎它是在README还是PDF中。

Pretty much any form of documentation is better than no documentation.

几乎任何形式的文档总比没有文档要好。

Clearly, I am very opinionated on this subject.

显然,我对这个问题非常有意见。

There is nothing worse than no docs. Getting started on a project with no documentation is a nightmare. It slows everything down.

没有比没有文档更糟糕的了。 没有文档的项目入门是一场噩梦。 它减慢了一切。

Documentation should be clear and concise, providing developers with everything they need to know to get up and running with a project.

文档应该简洁明了,为开发人员提供启动和运行项目所需的一切知识。

I stress this to other developers on my team, and among my peers. I am always happy to write documentation.

我向团队中的其他开发人员以及同龄人强调这一点。 我总是很高兴写文档。

It can be tedious and time consuming, but it will make everyone's life easier. That’s the whole point!

这可能很繁琐且耗时,但是它将使每个人的生活变得更轻松。 这就是重点!

所以你有它! (So there you have it!)

I learned a lot in my first year as a software engineer, and I consider these lessons to be the most important. I still have a lot more to learn, and I look forward to doing so!

作为软件工程师的第一年,我学到了很多东西,我认为这些课程是最重要的。 我还有很多东西要学习,我期待着这样做!

Please share with me any experiences you have had as a software engineer that may align with some of these lessons that I have learned. I am very excited to hear what you may have to say!

请与我分享您担任软件工程师的任何经验,这些经验可能与我学到的一些经验教训相吻合。 听到您可能要说的话,我感到非常兴奋!

A little about me: I am a self-motivated software engineer from Florida. I used resources such as freeCodeCamp to start my career in the tech industry. Here is my website: http://coreyslaven.com/

关于我的一些事情:我是一位来自佛罗里达州的自我激励的软件工程师。 我使用诸如freeCodeCamp之类的资源来开始我在科技行业的职业。 这是我的网站: http : //coreyslaven.com/

You can follow me on Twitter here.

您可以在Twitter上关注我。

Thank you for reading!

感谢您的阅读!

Happy coding!

编码愉快!

翻译自: https://www.freecodecamp.org/news/sometimes-the-hardest-lessons-are-the-most-important-ones-to-learn-dd71e2cdadc4/

学习中的经验教训很重要

学习中的经验教训很重要_有时最难的教训是最重要的教训相关推荐

  1. [综述类] 一文道尽深度学习中的数据增强方法(上)

    今天带来一次有关于深度学习中的数据增强方法的分享. 00 什么是数据增强 在深度学习项目中,寻找数据花费了相当多的时间.但在很多实际的项目中,我们难以找到充足的数据来完成任务. 为了要保证完美地完成项 ...

  2. 学习规律及其在学习中的应用

    前言 为准备<上大学,不迷茫>慕课的第三次见面课"学习的规律及其在学习中的应用",专门找几位老师帮忙征集学生在学习中存在的困惑,从而在课堂上展示. 本文将同学们所提问题 ...

  3. 深度学习中的优化问题

    文章目录 一.优化问题简介及挑战 1.优化问题简介 2.优化问题中的两个挑战 (a).局部最小值 (b).鞍点 二.各种参数优化算法 1.Mini-batch SGD + LR Decay 2.Ada ...

  4. 深度学习中的优化算法与实现

    点击上方"3D视觉工坊",选择"星标" 干货第一时间送达 GiantPandaCV导语:这篇文章的内容主要是参考 沐神的mxnet/gluon视频中,Aston ...

  5. 谈学习中的改变——有病要诊断,有药要服用

    看病不愿去社区医院,因为不少医生就是开药的:怎么啦?感冒了.给你开点药吧.试试A药怎么样,不行再用B药,要不打点水吧.试一试再说.没有诊断的看病,这是我对医院的不满,因此保证每天锻炼1小时,坚持了一段 ...

  6. 用一年的数据预测下一年数据_一年的招聘数据中的经验教训

    用一年的数据预测下一年数据 by Aline Lerner 通过艾琳·勒纳(Aline Lerner) 一年的招聘数据中的经验教训 (Lessons from a year's worth of hi ...

  7. 阿里巴巴 Kubernetes 应用管理实践中的经验与教训

    作者 | 孙健波(阿里巴巴技术专家).赵钰莹 导读:云原生时代,Kubernetes 的重要性日益凸显.然而,大多数互联网公司在 Kubernetes 上的探索并非想象中顺利,Kubernetes 自 ...

  8. 加载tf模型 正确率很低_深度学习模型训练全流程!

    ↑↑↑关注后"星标"Datawhale 每日干货 & 每月组队学习,不错过 Datawhale干货 作者:黄星源.奉现,Datawhale优秀学习者 本文从构建数据验证集. ...

  9. nfa确定化 dfa最小化_深度学习中的优化:梯度下降,确定全局最优值或与之接近的局部最优值...

    深度学习中的优化是一项极度复杂的任务,本文是一份基础指南,旨在从数学的角度深入解读优化器. 一般而言,神经网络的整体性能取决于几个因素.通常最受关注的是网络架构,但这只是众多重要元素之一.还有一个常常 ...

最新文章

  1. 深刻理解Vue中的组件
  2. Http压测工具wrk使用指南
  3. 如何开发一个用户脚本系列(3)——脚本一:百度首页和搜索页面添加 Google 搜索框...
  4. 防止多重启动之调用Api [收集2005090201]
  5. JMeter3.0_插件管理
  6. (80)FPGA建立时间与保持时间及时序模型-面试必问(四)(第16天)
  7. node获取windows pc 机器的标示
  8. PHP作用域和文件夹操作
  9. js如何判断一个数组中是否有重复的值
  10. 2022年五一数学建模竞赛C题
  11. web压力测试工具介绍
  12. openCV 下载地址
  13. 《Linux内核修炼之道》精华版之方法论
  14. 英伟达显卡虚拟化vGPU实践指南
  15. QT制作简易串口助手
  16. 更新:2022 京东双11活动一键自动完成任务脚本app来了
  17. python startswith正则表达式_Python 正则表达式
  18. 2017.9.26 noip模拟赛 总结
  19. PPT中修改已插入对象的图标
  20. “爱心银行”让爱心增值(转自中国文明网)

热门文章

  1. 无关时光无关距离无关悲欢:伤感QQ日志
  2. 基于PHP的校园二手信息网站的设计与实现毕业设计源码251656
  3. RSRP,RSSI与RSRQ
  4. Java pitfalls图书
  5. Python实例26:佛祖镇楼
  6. 阿里开发手册mysql_MySQL 开发准则(总结自阿里巴巴开发手册)
  7. MOS管的工作原理及常见的封装
  8. snmp同步端口号_SNMP端口号教程及其示例
  9. STC8 单片机低功耗延时方法
  10. 基于Blinker的小爱同学语音控制【脱坑指南】