嵌入式软件工程师升职
Grasp, in the next eight minutes, what took me a year to learn.
在接下来的八分钟里,掌握了我一年的学习时间。
I was hired, straight out of school, as a Jr. Web Developer. After working, growing, and learning in that role for almost two years, I got the opportunity to switch roles and fill a recently vacated spot on our team as (at the time) our only Android engineer.
我刚从学校毕业就被聘为Jr. Web Developer。 在担任该职位的工作,成长和学习了近两年之后,我有机会更换职位,并填补了(当时)我们唯一的一名Android工程师职位。
I took a plunge into the icy cold waters of complete ignorance and slowly, over the past year, clawed my way up to breathe. Having gotten a promotion through the process, I now sit in a small boat (no longer drowning), looking down on what could have been my murky grave. In my hand, sit five pearls of wisdom I now desire to bestow upon any swimmers-by.
在过去的一年中,我陷入了完全无知的冰冷的水中,然后慢慢地呼吸。 在整个过程中获得晋升后,我现在坐在一条小船上(不再溺水),低头看着可能是我那阴暗的坟墓。 在我的手中,坐着五颗我现在想赋予任何游泳者智慧的珍珠。
(Too much metaphor? Probably… Anyway, I learned some stuff and I want to share the stuff with you…)
(隐喻太多了吗?大概吧……反正我学到了一些东西,我想和你分享这些东西……)
Author’s apology: though these lessons I’ve learned come from my experience in the Software Engineering industry, I believe that at their core, they are relevant to anyone working in any field. If, reader, you come from a different background than I, please accept my encouragement to continue with an open mind and excuse my engineering-specific examples.
作者的道歉:尽管我从这些经验中学到的经验教训来自我在软件工程行业的经验,但我认为从本质上讲,它们与任何领域的人都息息相关。 读者,如果您与我来自不同的背景,请接受我的鼓励,保持开放的态度,并为我的特定于工程的示例辩解。
TL;DR; It’s ok if you don’t know everything, especially when you admit it. Small (code) changes can have a disproportionately large impact. Imposter syndrome can be a good thing if it pushes you to humble yourself and learn from others. Passion, drive, and an ability to learn are the keys to success. Mentors are growth multipliers; find one and learn from them.
TL; DR; 如果您什么都不知道也可以,特别是当您承认的时候。 小(代码)更改可能会产生不成比例的巨大影响。 如果冒名顶替综合症促使您谦虚并向他人学习,那么它可能是一件好事。 激情,动力和学习能力是成功的关键。 指导者是增长的乘数; 找到一个并向他们学习。
1.你不知道你不知道,没关系 (1. You don’t know what you don’t know, and that’s okay)
The more I learned, the more I learned I had so much more to learn…
我学得越多,我学到的东西就越多。
I sometimes find people who attempt to understand every piece of code they see on their way to fixing a bug or adding a new feature. It may be a commendable trait, but in practice with an enormous code-base (our app is 300,000+ lines), it’s just not practical (nor sane).
有时我会发现有人试图理解他们在修正错误或添加新功能的过程中所看到的每段代码。 这可能是一个值得称赞的特质,但是在实践中,如果使用庞大的代码库(我们的应用程序为300,000多行),那实际上是不切实际的(也不明智)。
If I had waited to start fixing bugs and adding features until I understood how each piece of the app worked, I would have never gotten anything done. I would have drowned. Even worse than drowning, I wouldn’t have learned much. I am just now, after a year, feeling comfortable with my knowledge of the entire app, and I know there are still days when I deal with code I’ve never dealt with before. I’ve had to learn that not knowing right now is okay .
如果我一直等不及要开始修复错误和添加功能,直到我了解应用程序的每个部分是如何工作的,我将永远不会做任何事情。 我会淹死的。 比溺水更糟,我不会学到很多东西。 仅仅一年之后,我才刚刚熟悉我对整个应用程序的了解,而且我知道还有很多日子我从未处理过代码。 我必须知道现在不知道还可以。
The following phrase: “I’m not sure…I’ll have to take a look and get back with you!” has been a consistent answer of mine to questions regarding the project I’m in charge of. It’s okay if that’s your answer to similar questions too!
下面的短语是:“我不确定……我得看一眼再和你在一起!” 对于我负责的项目,我一直是我的一致回答。 没关系,如果您也回答类似的问题!
While you can’t wait to start writing code until you know everything, you shouldn’t make changes blindly. Do your best to understand the context around each code change and how it will impact the rest of the app. Hopefully, you also have someone more experienced doing code reviews for you. Doing your best to understand the context around your code change will not only help you write fewer bugs, it will also help you learn more about the entire codebase. Which leads me to my next point.
虽然您迫不及待地想开始编写代码,直到您了解所有内容,但您不应盲目地进行更改。 尽最大努力了解每次代码更改周围的上下文以及它如何影响应用程序的其余部分。 希望您也有一些更有经验的人为您进行代码审查。 尽最大努力了解代码更改的上下文,不仅可以帮助您减少错误,还可以帮助您更多地了解整个代码库。 这引出我的下一个观点。
2. 小(代码)更改会产生不成比例的巨大影响 (2. Small (code) changes can have disproportionately large impact)
I’m still amazed at how one line of code can make or break entire features. This ability for a little amount of code to make a big impact is a double edged sword. The good thing is that sometimes small code changes have a huge return-on-investment: a twenty-minute investment can end up changing the trajectory of app engagement. On the other hand, a small code change is more easily overlooked and can end up breaking your users' favorite feature.
我仍然对一行代码如何完成或破坏整个功能感到惊讶。 这种少量的代码就能产生巨大影响的能力是一把双刃剑。 好消息是,有时小的代码更改会带来巨大的投资回报率:20分钟的投资最终可能会改变应用程序参与的轨迹。 另一方面,较小的代码更改更容易被忽略,最终可能破坏用户最喜欢的功能。
You’ve been there, right? Maybe you received a suggestion, thought, “Yeah, good idea”, changed one line of code, and promptly forgot about it. If you haven’t, at least I can tell you about a time when I did…
你去过那里吧? 也许您收到了一个建议,以为“是的,好主意”,更改了一行代码,并立即忘记了。 如果您没有,至少我可以告诉您我做某事的时间…
One day I was looking through our user feedback tickets and saw somebody suggest a trivial change to how one of our app widgets worked. I quickly thought it was a good idea, didn’t ask the originator of the code their opinion, quickly changed a line or two of code to implement it, and quickly moved on to the rest of my scheduled program. Notice anything? Hint: it rhymes with sickly. Obviously, moving quickly isn’t a bad thing in and of itself, but I didn’t stop to think how this change might affect other use cases. I didn’t even take the time to think of other use cases. This was my big mistake.
有一天,我浏览了我们的用户反馈票证,发现有人建议对我们的一个应用程序小部件的工作方式进行微不足道的更改。 我很快以为这是个好主意,没有请代码的编写者发表意见,而是Swift更改了一行或两行代码来实现它,然后Swift转到了我计划的其余部分。 注意到什么了吗? 提示:与病态押韵。 显然,快速行动本身并不是一件坏事,但是我没有停止思考这种变化可能会如何影响其他用例。 我什至没有花时间考虑其他用例。 这是我的大错误。
I ended up reverting the change after a large amount of angry users said the use-case I never thought of wasn’t working anymore. On the bright side: I walked away with another pearl for the wisdom chain I was forging…
在大量生气的用户说我从未想到的用例不再起作用之后,我最终恢复了更改。 乐观的一面:我走了另一颗珍珠,走着我正在锻造的智慧链…
3.冒名顶替综合症可能是一件好事 (3. Imposter Syndrome can be a good thing)
Insecurity can help you become better. You might be thinking, “Nay! Your thoughts are verily off the course of truth — preposterous even!”
不安全感可以帮助您变得更好。 您可能会想,“不! 您的想法确实偏离了事实,甚至荒谬!”
And to that I would like to say: I understand (also, nice word choice). I only ask that you bear with me a moment.
关于这一点,我想说:我理解(也不错的单词选择)。 我只想请您稍等一下。
For those of you who don’t know, Imposter Syndrome is that feeling you get that you don’t belong, that you aren’t good enough and that it’s only a matter of time before you are found out to be a fraud. Now, I know that sounds bad, but my point is this: imposter syndrome can be a good thing if you respond in a positive way.
对于那些不认识的人来说, 冒名顶替综合症是让您感到自己不属于自己,感觉自己不够好,被发现是欺诈只是时间问题。 现在,我知道这听起来很糟糕,但我的意思是: 如果您以积极的态度做出React,冒名顶替综合症可能是一件好事。
If those feelings drive you to a place of humility, determination, and desire to learn more from others, it can be a good thing. Granted, I don’t think it’s healthy for our feelings to set up shop in Imposter town, but a quick stroll through might be a good thing once in a while.
如果这些感觉将您带到谦卑,决心和渴望向他人学习的地方,那将是一件好事。 诚然,我认为在Imposter镇开店对我们的感觉并不健康,但不时进行一次快速浏览可能是一件好事。
Being humble, admitting you don’t know everything, and being driven to learn from others will only make you better.
谦虚,承认自己一无所知,被驱使向他人学习只会使你变得更好。
For me, imposter feelings are reminders for me to realign my heart and mind with what I believe is true. However, no matter what you believe, being humble, admitting you don’t know everything, and being driven to learn from others will only make you better.
对我而言,冒名顶替的感觉提醒我重新将自己的内心和思想与我认为的真实相吻合。 但是,不管您相信什么,谦虚,承认自己一无所知,被驱使向他人学习只会使您变得更好。
4.激情,动力和学习能力是成功的关键 (4. Passion, drive, and an ability to learn are the keys to success)
Passion, drive, and an ability to learn will outdo pure intelligence every time.
激情,动力和学习能力每次都将超越纯粹的智力。
I left school lacking the knowledge required for my new role and entered into a position with a lot of opportunities for growth alongside a great mentor/coworker. This, along with a hunger for learning and a passion for what I was doing, resulted in explosive growth. A good work environment acts as kindling and passion, drive, and ability to learn are the sparks required to ignite a blaze of success in your workplace.
我离开学校后,缺乏担任新职位所需要的知识,并与一位出色的导师/同事一起进入了一个拥有大量成长机会的职位。 加上对学习的渴望和对我所做工作的热情,导致了爆炸性的增长。 良好的工作环境可以激发员工的热情,进取心和学习能力,是点燃职场成功之光的火花。
The most valuable thing I learned in school was how to learn. With the ability to learn, doors once closed become open. With the ability to learn, you can be placed anywhere and rise to the occasion. However, ability is dead without action, which is where passion and drive come in. The combining force of passion and drive is what transforms the potential energy of ability-to-learn to the kinetic energy of actual learning.
我在学校学到的最有价值的东西是如何学习。 有了学习的能力,一旦关上的门就会打开。 具有学习能力,您可以放置在任何地方,并可以适应各种场合。 然而,没有行动就没有能力,这就是激情和动力的源泉。激情和动力的结合力将学习能力的潜能转化为实际学习的动能。
For my final point, let’s back up to the part about the mentor…
对于我的最后一点,让我们回到有关导师的部分……
5.导师是增长乘数; 找一个 (5. A mentor is a growth multiplier; find one)
What would Frodo have become if it hadn’t been for the guidance and encouragement of Gandalf? We should all seek a Gandalf to guide us through the perilous straights of Software Valley.
如果没有甘道夫的指导和鼓励,佛罗多会变成什么样? 我们都应该寻求甘道夫来指导我们度过软件谷的危险境地。
I was extremely blessed by the fact that the previous owner/maintainer of our Android app remained on our team when he left his role as our Android developer. This meant that while I was learning Android in general and our project specifically, I could ask him questions, get code reviews from him, and learn from all the code he left behind (oftentimes with explanations when I didn’t understand). I frequently asked for explanations for code I didn’t understand for the first six months.
我非常幸运,因为当他离开我们的Android开发人员职位时,我们Android应用程序的前所有者/维护者仍然留在我们团队中。 这意味着我在总体上学习Android时,尤其是在学习我们的项目时,我可以问他一个问题,从他那里获得代码审查,并从他留下的所有代码中学习(常常在我不理解时提供解释)。 我经常问我在头六个月不懂的代码的解释。
I’ve come to find that there is a tricksy balance between asking questions prematurely and spending days on something that a teammate could have answered in a sentence. When you’re starting out in a new role, hopefully your teammates and managers will give you a lot of grace whilst you pick up the ins and outs of your new codebase. They know you don’t know and that you’ll be spending a lot of time learning. Because this was the case on my team, thankfully, and I learn best by doing, I oftentimes spent a little longer on things before resorting to asking for help. What works for you will likely vary depending on your team and how you learn, but I would always suggest doing your best to figure out a way to ask questions as efficiently as possible with reproducible steps as to be respectful of your mentor’s time .
我发现在提早提问和花几天时间讨论队友本可以回答的问题之间存在一个微妙的平衡。 当您开始担任新角色时,希望您的队友和经理在您学习新代码库的来龙去脉中能给您带来很大的帮助。 他们知道您不知道,您将花费大量时间学习。 幸运的是,因为我的团队就是这种情况,并且我从中学到了最好的东西,所以我经常花一些时间在事情上,然后才寻求帮助。 适合您的方法可能会因您的团队和学习方式而异,但我始终建议您尽力找出一种方法,以可重复的步骤尽可能有效地提问,以尊重导师的时间s。
If you don’t have a coworker/mentor that can help you the way that I’ve been helped, don’t despair! Thankfully there are many ways to grow and learn what you need for your new role. My favorite tip is… Read! Read other people’s/open source code. Read articles on Medium. Read documentation. Read books. Read guides. Read walkthroughs. Read StackOverflow. Read another book, just for good measure.
如果您没有可以像我一样得到帮助的同事/导师,请不要绝望! 值得庆幸的是,有很多方法可以发展和学习新职位所需的知识。 我最喜欢的提示是… 阅读 ! 阅读其他人/开源代码。 阅读有关Medium的文章。 阅读文档。 看书。 阅读指南。 阅读演练。 阅读StackOverflow。 读另一本书,只是为了很好。
“Reading is essential for those who seek to rise above the ordinary.” — Jim Rohn
“对于那些寻求超越平凡的人来说,阅读是必不可少的。” —吉姆·罗恩
Finally, put what you’ve read into practice!
最后,将您已阅读的内容付诸实践!
To recap, we’ve covered 5 lessons I learned in my first year as a newly promoted Software Engineer. Whether you’re in the software space, or not, I challenge you to apply one lesson to your work and see how it grows you .
回顾一下,作为新晋升的软件工程师,我在第一年学习了5堂课程。 无论您是否在软件领域,我都会挑战您将一课应用到您的工作中,并看一看它如何使您成长。
- It’s ok if you don’t know everything, especially when you admit it 如果您什么都不知道也可以,特别是当您承认的时候
- You can scarcely imagine the impact a small (code) change can have on people 您几乎无法想象小(代码)变更可能会对人们造成的影响
Imposter syndrome can be a good thing
冒名顶替综合症可能是一件好事
- Passion, drive, and the ability to learn are the keys to success 激情,动力和学习能力是成功的关键
- Mentors are growth multipliers; find one and learn from them 指导者是增长的乘数; 找到一个并向他们学习
What have you been learning?
你在学什么?
翻译自: https://levelup.gitconnected.com/5-lessons-i-learned-in-my-first-year-as-a-newly-promoted-software-engineer-aa33ab6584
嵌入式软件工程师升职