做了 10 年开发者后,我希望早点学到的 10 件事
整整十年前的今天,我开始了在软件行业的第一份工作。我的职业生涯经历包括软件测试开发人员、性能工程师、首席兼兼职首席技术官、JavaScript 开发人员、承包商、创业者、开发倡导者和经理。我还曾在四大洲的公司工作过,开发过数亿人使用的产品。你可以说我什么都做过一点。但我敢说我的职业生涯一点也不枯燥。
我很容易怀旧,尤其是在全球疫情期间困在家中的时候,所以我坐下来重温了我最美好的回忆。我永远感激我的第一份工作是在 Mozilla,它在很多方面塑造了我的软件开发方式。我对开源的热爱也源于此,也源于我不断向身边的人学习的动力。和我共事的每个人都很棒,这真的让我受益匪浅!我也回想起我担任 CTO 的三个月经历,之后我当场愤怒地辞职了,因为钱不是万能的。还有我和伴侣在亚洲住的九个月,带着行李箱,辗转于酒店和爱彼迎。
这段回忆之旅也让我意识到,有很多事情我希望自己在开始之前就知道。或者至少我希望自己能更早地学会它们。我列了一个清单,列出了其中的前十条,但我相当肯定自己能列举到100条。所以,如果你已经读过这些,并且想了解更多,请在推特上联系我,我会尽力满足你的。
大家都把与编写代码无关的东西称为软技能。最令人难以置信的是,教会一个人一项技能,比如编程,比改变他们的行为和沟通方式更容易。然而,沟通却被认为是一项“软技能”。所以,当公司寻找开发人员时,大多数情况下,区别就在于这些软技能。你可以通过编程来通过技术测试的方法非常有限。当选择范围足够狭窄时,一切都取决于这些额外的技能。尽可能多地掌握软技能,这比在你的工具箱里添加另一种编程语言或框架更有价值。
我来自一个重视记忆而非创造力和解决问题的文化。管他呢。直到今天,我仍然会用谷歌搜索如何进行冒泡排序。我可能在 10 年内用过不超过五次——那是因为我必须通过某种面试测试。记住所有东西并不重要,只要你知道从哪里找到答案就行。在这个时代,这通常意味着用谷歌搜索。这不是弱点,即使有些人羞于公开承认。我的记忆力不如以前了,即使是过去可能做过几十次的简单事情,我也会用谷歌搜索。这并不丢人!
一开始我可能会说“别害怕寻求帮助”。但那是因为我就是这么固执,而且在我的文化里,寻求帮助并不是一件自然而然的事情。又一次,这该死的成长经历。
寻求帮助并非只有急需时才做。尽可能多地寻求帮助。这能让你腾出时间去做你最热爱的事情。你选择团队合作而不是单打独斗,就是为了互相帮助!所以,从第一天开始就要寻求帮助,而不是等到遇到麻烦的时候才去寻求。
就像世界上大多数事物一样,开发人员(或“软件工程师”)的领域也在不断发展。因此,如果你想保持与时俱进,或者说保住工作,就必须与时俱进。当然,你会看到一些关于2020年有人在寻找COBOL开发人员的奇怪新闻。但你必须这样想:60年后,还有多少COBOL开发人员仍在从事COBOL开发?所以,是的,要不断学习新知识。
它不一定非要“与工作相关”。这里的目的是开发一个学习过程。因为总的来说,我们的学习机制(也称为教育系统)一团糟。我的意思是,你在学校学到的大多数东西都是由普通理论家思考的。这应该能让你获得所需的实践技能。但事实并非如此,尤其是在编程的世界里,专门的专家凤毛麟角。但弄清楚哪种学习方法适合你意味着你可以在短时间内学会任何东西。你想要那份令人向往的新工作?开始学习,掌握你需要的技能,然后得到它!但如果你甚至不知道如何着手,那么学习一项新技能,任何技能,整个任务都会变得难以克服。你甚至会在开始之前就找到放弃的理由。
我的学习方法是什么?嗯,我会找一个比我更先进一点的人,听我讲,然后开始提问。他们不需要是专家,只要比我更擅长就行。最终,这些问题会变成讨论,这时我就会寻找下一个人来帮助我们推进讨论。就这样,重复,成功了!
这是我最纠结的一点。我似乎无法拒绝,是因为内心深处,我只是个好人。或者是因为我希望别人也喜欢我。或者是因为我喜欢帮助别人。又或者是因为我只是个容易被说服的人,不喜欢与人对抗。随便找个理由,让它更贴近具体情况就好。不说“不”让我一路结交了很多朋友,但与此同时,也意味着我帮助了很多人,也让很多人失望。这是因为我根本不可能做到所有我答应的事情。
这也意味着我或许会完成一些与宏大目标无关的壮举。比如,我注册成了赌场荷官。当然,这在派对上是个很酷的把戏,但我本可以用那个夏天提前毕业。我也可以拒绝为一个在预定出版前夭折的项目写书(RIP Firefox OS)。同样,我也可以拒绝在行李箱里生活9个月,错失美好的回忆。不过,活到老,学到老。
如果你不熟悉“T型技能”或“T型人才”的概念,不用担心,大多数人都不熟悉。这是人力资源部门用来描述候选人技能的比喻。所以,如果你把自己的技能想象成一张图表,你会发现每张图表都有不同的级别。如果你把这些级别结合起来,你会希望它们形成一个T形,而不是其他形状。
例如,如果你什么都懂一点,并且掌握了2-3项核心技能,你就可以被称为“专家”。之所以用引号,是因为“专家”是一个相对概念,相对于你的其他技能而言。例如,当我还是一名JavaScript开发人员时,我之所以能不断收到工作邀请,就是因为我对性能优化和Angular的了解程度。所以,虽然我的原生JS编程水平还算过得去,但在Angular应用程序和优化大多数网站的性能方面,我的能力更胜一筹。
现在你可能会想,为什么我是 JavaScript 开发者,而不是 Angular 开发者?那是因为我掌握了不止一项 JavaScript 技能,而 Angular 只有一个工具。因此,T 型的技能让我更容易找到工作。
然而,在开发者倡导者的世界里,这也意味着打造品牌。就像打造那个T一样,你也可以打造个人品牌。开始撰写有关 Angular 和性能优化的文章,这就是我的“个人品牌”。如果你经常在网上关注我,你会注意到我没有这样做,而且我也没有个人品牌。我想这是我需要努力的方向。
尤其是你自己。所以,如果你不告诉别人你想要什么,或者你需要什么,那么当他们不给你的时候,你生气也是没有意义的。因为他们读不懂你的想法。你觉得你值得升职吗?告诉你的老板。你想在六个月内升职吗?告诉你的老板,如果他们够格,他们会告诉你怎么升职。
大多数情况下,只要你告诉他们,人们都会很乐意满足你的要求。大多数经理其实对自己的工作一无所知,所以当他们真正知道自己需要做什么时,才会非常乐意完成。
这是我职业生涯后期才明白的道理。事实证明,当你不同意某件事时,你随时可以离开。实际上,这就像是用脚投票。与其气呼呼地抱怨,或者更糟的是,挑起怨恨,不如干脆走开。
不喜欢你的新老板?干脆辞职。辞职的人多了,他们的老板自然会解决问题。你不喜欢公司在隐私、多元化、包容性和人权方面的政策?那就辞职吧。在一个需求大于可用人才的行业,你总能找到更好的待遇。
有金手铐之类的东西,但如果你是拥有它们的少数人之一,你就会明白,无论你去哪里都可以找到它们。
我的意思不是说你应该毫无计划地一怒之下辞职。那不是投票,而是愤怒辞职。不,无论如何,要理性地对待这件事,不要情绪化。先安排好下一场演出吧。
确切了解你的技能价值多少是值得的。当然,你有薪水。但如果你拿到这份薪水已经超过六个月了,它并不能准确反映你对雇主的价值。而且这可能意味着年度考核即将到来。这是让你的薪酬准确反映你价值的最佳时机。你可以想出一个公式,计算出你每小时的时间对雇主来说值多少钱,然后陈述你的理由,并希望你的老板能做些什么。
或者你可以货比三家。也许你对下一位雇主更有价值。面试除了能帮助你了解市场动态外,还能帮助你练习。面试是一项技能,就像你做的其他任何事情一样。磨练这项技能是很好的,尤其是因为它是你最初薪酬待遇的重要因素。如果不实际测试你新学到的技能及其与市场的相关性,就很难衡量你的价值。
我知道,我之前一直都在跟你们讲如何获得更高的薪水。但这些技能也意味着更多选择。你赚得越多,选择就越多。而正因为有了这些选择,获得更高的薪水就不再是一个因素了。我知道,这听起来有点违反直觉。但到了一定程度,金钱就不再那么能带来幸福感了。你会更看重使命、工作与生活的平衡、善解人意的老板或优秀的团队,而不是年薪中额外的10%。
我一直在高薪工作和追求内心愉悦之间徘徊,最终找到了一个平衡点。当然,我每年可以多赚10%,但这真的会比按照自己的意愿在家工作更让我快乐吗?
文章来源:https://dev.to/lakatos88/10-things-i-wish-id-learned-sooner-after-being-a-developer-for-10-years-1261