担任前端工程师 3.5 年——我学到了什么以及下一步做什么?
AWS 安全上线!
最初发表在我的博客上。
偶尔,我们软件工程师/开发人员会面临这样的时刻:我们必须放慢思维,花时间重新思考、重塑,并最终重新规划我们的职业生涯。到目前为止,我们的职业生涯是否走在了“明智”的道路上?我们的进步是否是我们个人发展的最佳选择?
在我的软件开发生涯中,我对“晋升”有了不同的看法。坦白说,我甚至害怕它。而且我并没有假装害怕。现在一切都在基于绩效的“范围内”。举个例子,我是否应该获得晋升?晋升是基于我的技能,还是仅仅基于我在公司工作了多长时间?
但实际上,你无法掌控一切,这没关系。我永远不会为所有事情做好准备。我们的职业发展也不例外。
因此,为了保持我的专业知识(并不断提升),并为未来的一切做好准备,我尝试阅读一些书籍,消化一些教程,创建课程,发布一个产品,现在又在写博客。因此,在本文中,我将分享我迄今为止的学习成果。
(尝试)像软件架构师一样思考
说实话,我从来没做过软件架构师。我三年半的软件开发生涯,主要还是开发者。等等,什么?我之前有没有说过软件架构师和软件开发者是不同的?是的,我说过。根据这本书:Mark Richards 和 Neal Ford 合著的《软件架构基础》。
思维上的差异在于“如何从某个角度看待问题”。但在深入探讨这个问题之前,我需要解释一下为什么我认为这是一本非常值得一读、并能为迎接下一个挑战做好准备的书。在阅读这本书的过程中,我独自摸索出了一条我认为正确的道路。最终,我会继续我现在的工作。随着我的职业发展,我将没有时间去做实际的编程工作,而是更多地参与决策。
我从学习这本书中得到的收获并非涵盖本书的所有内容。它只满足了本书整体内容的 3-6%。所以大家仍然需要吸收本书的知识才能理解所有内容。
我从本书中汲取的关键经验来自第二章:架构思维。在我的整个职业生涯中,每当选择技术栈(工具、库或框架)时,我都会首先考虑其优势。但我从未分析过其中的利弊。谈到架构思维,我需要考察给定解决方案(或技术栈)的帮助,并探索与该解决方案相关的劣势或利弊。
我以 Lee Robinson 的推文为例。他是 Vercel 的 DevRel 负责人,而 Vercel 正是最精妙的 React 框架之一 Next.js 的幕后推手。然而,无论使用 Next.js 多么便捷,它也存在一些缺点或利弊。
决定使用框架之前必须权衡利弊。例如,我们的团队是否已经精通另一种语言/框架,并且不想切换?我们想要构建的 Web 产品是否需要大量 JavaScript 才能运行?或者,我们的团队可能更倾向于 Vue 而不是 React?
在决定采用哪种技术栈之前,权衡这些利弊,最终决定了(大多数)开发人员的想法和软件架构师(应该)的想法。最终,这些问题的答案永远是“视情况而定”。你没法用谷歌搜索答案。最终的决定必须基于我们自身的顾虑,在认真评估解决方案之后才能做出。这可能取决于业务需求、环境、人员以及许多其他因素。
技术广度与技术深度
我之前谈过权衡利弊。但这部分是最难的(至少对我个人而言)。当我需要选择何时添加内容时,我必须了解并保持对已知内容的专业知识,并了解我不知道的内容。这需要非常有效的时间和精力管理。
有人说,学习编程的最佳途径是在工作中。我在工作中学到了很多,但也学到的很少。别误会,我完全赞同在工作中学习。因为在某种程度上,我觉得自己在工作中已经掌握了很多技能。但当我遇到瓶颈时,就很难克服了。我需要有时间在目前的工作之外学习。
所以我花了更多时间在工作之外学习。我一方面在已有的知识上保持专业性(比如学习 Kent C. Dodds 的 Epic React 课程),另一方面在未知的知识上拓展专业性(比如探索 Rust)。但我感觉自己不可能永远坚持下去。让我来解释一下。
作为一名软件开发人员,我的工作要求我具备相当深厚的技术深度才能胜任。这意味着我需要积累“我所知道的东西”。但这还不够;我还需要维护它。我从 2017 年开始使用 React 进行 Web 开发。我可以说我对它了解很多。但现在已经是 2021 年了,如果我现在不维护和升级我的 React 知识,我的 React 知识就相当过时了。这就是为什么我称之为“保持我所知道的东西”或“技术深度”。
展望未来,借鉴他人的个人经验,仅仅掌握技术深度是远远不够的。我需要具备当前专业领域之外的其他技术知识。因为技术人员在不同职业阶段应该具备的价值信息会有所不同。这更多体现在“我知道我不知道的东西”领域。我听说了 Rust 的好消息;它在语法上与 C++ 相似,但有很多改进。Rust 的开发甚至得到了一些知名人士的支持,包括 Brendan Eich(JavaScript 的创始人)。我还不会写这门语言的代码,但我知道 Rust 能够以 JavaScript 无法做到的方式解决某些问题。
如果开发人员转型成为架构师或决策者(例如首席开发人员),该角色的价值很大一部分在于对技术的广泛理解以及如何使用它来解决特定问题。了解特定情况存在三种解决方案比只精通一种解决方案更有优势。
当我的职业生涯需要做更多决策时,我必须在技术专业知识的深度和广度之间做出选择。对各种解决方案的广泛理解至关重要。因此,我更倾向于选择技术广度,而不是技术深度。
我之前说过,这对我来说是最具挑战性的部分。选择其中一个,而不是两个都选。我至今掌握的技能都是“来之不易”的。要么学起来很费劲,要么花费不菲。总有一天,我会和所有这些技能“告别”。只有掌握了基本技能,我才能踏上职业生涯的下一个阶段。
提高生产力并创造更多价值
在我早期从事软件开发的时候,我不像现在这样珍惜时间。我甚至不知道高效和忙碌的区别。每天工作结束后,忙碌一整天,我都会感到满足。那时候,忙碌的感觉真好。
原来它们是不一样的。你可以忙碌而不高效。但你可以高效地创造巨大的价值,却一点也不浮夸。“用更少的时间做更多的事情?”这句话,在我意识到的时候,感觉很神奇。从那天起,我决定更加坚持高效。
但这并不容易。要想提高效率,需要养成很多习惯。我的睡眠习惯就不太好。结果发现,一切都归结于此。改善睡眠习惯为提高效率开辟了许多可能性。
以前,我把所有工作时间都用来完成全职工作上的所有任务。我的技能和完成一天所有任务的速度都不太好。这和我的学习习惯有关。因为每天下班后,我总是感到筋疲力尽。但我也对自己每天所做的事情感到很开心。没有精力再去写代码或学习了。但这并不意味着我会马上睡觉;相反,我会玩游戏。最终,我经历了很多个熬夜的睡眠周期。
当我最终改掉睡眠习惯后,我就能有更多精力去做更多的事情。我开始做兼职,创作内容,并经营能带来被动收入的生意。这并非为了忙碌,而是为了避免浪费宝贵的时间。当我能完成更多工作时,我就有更多时间学习,在工作中做得更好,在事业中创造价值,并赚更多钱来养家糊口。
结语
这是我人生中非常充实的时刻。我从编程训练营毕业后就开始了工程师生涯。能够拥有一段软件工程师的时光,是一段非常充实的经历。三年半(并且还在继续)的前端工程师生涯为我铺平了通往各种可能性的道路,结识了新朋友,创造了更多价值,也让我的家人过得更好。甚至在成为前端工程师之前,我就以为自己永远不会有伴侣了。
我还应该写一篇博客来总结我从事工程师职业之前的生活。这样我终于可以向所有接受我成为工程师并帮助我过上更好生活的人说声谢谢了。如果你想读的话,请继续关注后续更新!
鏂囩珷鏉yu簮锛�https://dev.to/adithwip/3-5-years-as-a-front-end-engineer-things-i-learn-and-what-next-2g7n