27条关键职业建议:软件工程师的全面指南
作者:John Sonmez
你是否希望在软件工程师或开发者的职业生涯中取得最大成功?那么你需要掌握一系列关键职业技能:
初级职业建议
当你刚开始成为软件工程师时,你的重点应该是建立正确的职业心态,并尽快获得尽可能多的经验。以下是一些实用建议,帮助你在编程入门阶段保持清醒头脑,找到实习机会和第一份真正的工作。
1. 不喜欢编码?寻找无代码工作
如果你现在不想要编写代码的工作,甚至不认为自己会终身从事这样的职业,这没什么可耻的!考虑不需要编程的技术职位如何?为什么不成为技术招聘人员、数据分析师、质量测试员或销售专业人士?这些职业道路不仅可能和软件工程一样有趣(对某些人来说甚至更有趣),而且还能让你获得不错的薪水。
2. 专业化以获得更高收入
专业化的编程技能需求很高。如果你是少数能够提供这些技能的人之一,你将获得丰厚的报酬。选择最佳专业领域从行业研究开始:公司希望完成哪些需要特殊技能并因此值得高报酬的任务?努力成为这些领域的专家,将自己定位为专家。很快你就会获得一些很好的职位,报酬远高于作为"普通"软件开发人员的预期。
3. 在实习中获胜
如果你想获得作为专业开发人员或软件工程师的第一份经验,科技公司的实习是最好的选择。这些实习通常可以直接在同一家公司获得初级职位。至少它们在你的简历上看起来很棒,增加了你未来的机会。获得程序员实习的一个独特策略是联系你喜欢的、目前没有积极寻找实习生的公司。然后向他们推销实习生(暗示:就是你)可以给他们的业务带来的所有好处。
4. 使用LinkedIn获得工作
说到竞争:LinkedIn上发布的编程工作也是如此——公司被申请淹没。但你仍然可以在该平台上获得工作——再次通过反其道而行之。当其他人只关注广告内容并以通用方式联系时,你与感兴趣的人建立网络,并与在你选择的领域工作的人建立真正的联系。
5. 申请你不符合条件的编程工作
你是否曾经因为列出的要求(例如多年经验)而不敢申请软件工程工作?你不必这样。我鼓励你申请一些软件工程工作,即使你在客观上不符合条件。编程职位的一个秘密是,如果潜在雇主喜欢你带来的技能和个性的组合,你仍然有机会。即使你缺乏一些经验:他们要么不顾一切地雇用你担任确切的职位,要么可以将其转变为更初级的职位。无论哪种方式,你都赢了——只因为你尝试了。
6. 在接受任何编程工作邀请前了解要问未来雇主的问题
你得到了录用通知?恭喜——你的努力终于得到了回报!但在直接接受软件工程师新职位的邀请之前,你应该问雇主一些关键问题。询问他们如何修复错误,这样你就可以判断为他们工作是否会一团糟。询问他们的代码质量指南。询问他们的质量保证流程。询问他们如何部署软件。仔细审查他们的答案,注意任何危险信号。在说"是"之前,一定要确保你的新工作不会让你走上无尽挫折的道路。
7. 避免第一年软件工程师的错误
当你刚开始第一份软件工程工作时,很多事情都可能出错。最容易让你绊倒的是你自己的自尊心。作为新开发人员,你最好的选择是保持谦逊。同时期望在技术技能之外还要提升软技能——许多新手忽视了这些技能的重要性。虽然这种谦逊是关键,但这并不意味着你应该忽视自己的需求。即使你年轻且作为第一年程序员很能忍耐:努力开始从事对你最有意义的工作。现在就开始照顾你的健康,这样你就不会在未来遭受倦怠的打击——即使现在你感觉自己无敌。
推进你的职业生涯
一旦你获得了软件工程工作,目标就是充分利用你的情况:智能谈判。为自己未来的晋升定位。获得你应得的报酬。
8. 在薪资谈判中获胜
谈判得好可以在一次对话中为你赢得数万美元。软件工程师的一些有效薪资谈判策略包括:了解行业常见数字、从强势位置谈判(有推荐人、良好声誉和/或其他工作机会)、避免说出你的数字、以及提出强有力的还价。在面试前练习模拟薪资谈判,就像练习模拟编码会话一样,是个好主意。
9. 停止被低估
这是一个令人震惊的事实:许多高级开发人员职位的甚至不是好的编码员。这意味着如果你是,你不必羞于瞄准六位数的工作。作为熟练的程序员,不要满足于低薪职位——相反,要瞄准高处。因为即使只凭你已有的技术技能,你通常能够超越许多薪水更高的开发人员。
10. 获得加薪或晋升
如果你想在编程工作中获得加薪或晋升,你需要对这个目标积极主动。不断提高你的技能。承担更多责任。在公司内外变得更有价值。在沟通你的抱负时要开放、直接和具体。遵循这些步骤,你应该能够随着时间的推移增加收入和影响力。尽管付出了所有努力,仍然面临阻力?那么也许是时候向其他地方更好的机会敞开心扉了。
导航你的工作
作为软件工程师,你需要战略性思考——不仅在你的开发工作中,还要考虑你的工作环境和市场。
11. 学习如何与廉价程序员竞争
来自西方国家的人应该怎么做才能比来自GDP较低国家的程序员更好并与之区分开来,这些程序员提供的服务比你更便宜?最擅长的领域是你与客户的沟通。如果你花时间深入了解他们的需求,并建立良好的关系,你可能能够比那些依靠竞争性技术技能和低价格来获得工作的人更有优势。简而言之:更关心,更好地沟通,你仍然可以获胜。如果你自己来自GDP较低的国家,应用相同的策略来获得更多需求。
12. 了解你的老板不了解的软件开发
在你的软件工程师工作中,重要的是要认识到你的老板可能不像你那样理解你的开发工作。常见的例子是你的上级不理解技术债务的严重性,过于重视时间估计,或者对新技术和可能的投资过于怀疑。调整你的工作流程和与经理的沟通以反映这一点——这样你可以改善合作,将不必要的冲突扼杀在萌芽状态,并让你自己的生活更轻松。
离开开发工作的建议
当时机到来时,就是时候了。学习如何掌握过渡。无论是转向完全不同的东西——还是转向软件工程内部更大更好的挑战:
13. 知道是否应该退出编程
你是否已经到了不再喜欢编程工作的地步?这可能意味着你应该退出,或者可能意味着你应该以多种方式之一进行转型。这取决于你最初获得开发人员工作的原因:如果是因为你实际上热爱这份工作——那么尝试学习一个新的相关技能。或者申请行业内的另一家公司。你甚至可以转向另一种技术工作。另一方面,如果你开始只是为了作为软件工程师赚很多钱,但现在你对工作太无聊了:你能以另一种方式赚钱吗?如果还不能,那么继续工作直到找到一份报酬不错且你热爱的工作。但如果你已经知道是什么,那么是的——你应该退出编程。
14. 当你是房间里最聪明的人时该怎么做
我们在这个平台上试图做的是让你提升技能,成为你能成为的最有价值的程序员。成为房间里最聪明的人会带来新的挑战:你可能会对你当前的工作环境感到失望。人们会注意到——即使你在客观上变得更有价值,可能会密谋取代你。如果不是这样,你自己会渴望一个能让你继续成长的职位。这两种情况的底线:是时候继续前进了。
15. 知道离开工作的迹象
如果你因为工作中发生的事情开始感到沮丧——或者因为必须修复其他人的错误而过度工作——是时候计划你的逃离了。倾听离开编程工作的迹象。不要继续被倦怠和痛苦折磨。
16. 如何离开你的软件开发工作
现在,如果你决定离开你的工作:尽快去做——不要继续陷入不再对你有益的情况。但注意要以正确的方式去做。避免戏剧性事件。不要在他们低落时踢他们。不要烧毁桥梁。离开软件工程工作的最佳方式是给出标准的两周通知。尽你最大的努力培训将接替你的人。并对你知道公司出问题的所有事情保持沉默——谈论它只会伤害你。遵循这个退出策略意味着你将最小化任何怀有的恶意,并有助于保护你的声誉,这是无价的。
longevity, 失业与重启职业生涯
为了使你作为软件工程师的职业生涯长久而繁荣,并经受住不可避免的风暴——例如从强制或自愿休息中恢复——请确保你注意以下建议:
17. 让失业成为你的老师
作为软件工程师没有工作可以成为你的机会,如果你允许的话。利用这段时间在个人和专业上发展自己。为了确保你在下一次面试中脱颖而出,成为解决编码问题的大师。训练你的金钱管理技能。尽快开始加强你的网络工作。这些技能不仅会在你的余生中为你服务,还会让你快速找到新工作——通常比旧工作更有趣、更有成就感、薪水更高。
克服职业空白期
如果你失业一段时间,利用这段时间改进你的时间管理。学习新技术并升级你的技能。继续追求新机会。如果你准备在休息期间努力工作,并且一旦开始新职位就努力工作,你的职业空白期就不重要。
18. 如何在大休息后重启你的开发职业生涯
如果你休息了很长时间,可能是多年呢?一定要尝试复出——开发人员仍然有需求。即使你在长时间休息后需要从小处开始,毫无疑问这是值得的。首先诚实地评估你的技能与市场需求的关系。如果在这么长的休息后需要填补空白,考虑参加课程、认证或训练营——或者至少埋头于免费教程。增加你的网络工作,刷亮你的简历,准备面试,并下定决心找工作。
19. 作为年长开发人员成功
你的就业能力确实在35岁后下降。大多数开发人员在40岁前离开该领域。这是否意味着对年长程序员来说没有希望?一点也不。有很多40岁以上的人仍然很强的例子。关键在于与时俱进。不要固步自封。始终保持学习。采用新技术。努力保持年轻人的心态,你可以在60多岁和70多岁时成为成功的软件工程师。
软件工程师职业心态与策略技巧
为你的编程之旅制定策略是必不可少的。正确的心理态度也是如此。以下技巧帮助你掌握这些元素。
20. 找到你作为程序员的"为什么"
如果你在工作中有一个强大的"为什么",你就不太可能倦怠。为了经济利益而进入软件工程是可以的。但如果你找到获得编程工作的根本原因会更好:例如,过你想要的生活方式,养家糊口,在硬技能中发挥你的潜力,并将新事物带入世界。
21. 从其他开发人员的生活故事中寻找灵感
无论你在软件工程之旅的哪个阶段——总有一些人的故事你可以学习。有起步晚但仍然成功的程序员。有创建你自己想启动的那种项目的人。用其他开发人员的故事作为灵感,点燃你心中的火焰。你知道追逐并达到你的目标是可能的,因为那些在你之前的人——那些曾经处于类似情况或必须克服比你面临的更大挑战的人。
22. 使用强大的成功策略
要成为伟大的程序员,你需要几乎沉迷于寻找信息和学习新事物。你需要充分利用最好的学习资源。你需要将所有东西都拿来不断练习,直到掌握它。解决呈现给你的问题,并不断寻找新的问题来解决。一切都是变得更好的机会。最后,作为程序员最强大的成功策略之一是参加课程和训练营,并找到(现实生活或在线)导师。
23. 征服改善之路
日本的改善概念(大致是"持续改进的精神")对任何软件工程师都有用,并且是敏捷方法论的一部分。在你的开发人员职业生涯中,你经历改善的不同阶段。你从守(“遵循的状态”)开始。然后你进入破(“创新的状态”)。直到你达到离(“流动的状态”)。努力在每个工作日为改善做出贡献,你就有望成为真正的大师。
24. 成为编程增长黑客
在编程领域成为增长黑客意味着你通过寻找所有领域的改进来寻找彻底改变公司的方法。你的编码背景将帮助你进行测试和快速迭代。但除此之外,你应该精通文案写作、外联、设计和项目管理的技能。公司内部的职业增长黑客职位不仅带来丰厚的经济利益——而且很有成就感,因为你的努力将有助于改变收入数字和影响。
25. 克服你的冒名顶替综合症
我们大多数人在编程职业生涯的某个阶段都会感到冒名顶替综合症。重要的是你不要屈服于它。专注于你已经取得的成就(无论多么少)和你正在努力的目标——而不是关注他人感知的优越性。不要害怕看起来和行为像初学者。成为那个沉浸在学习中的初学者,你会发现大多数在你前面的人更感兴趣的是帮助你,而不是因为你的技能不足而评判你。
26. 放弃某些东西
以下是在软件工程职业生涯中要避免的:不要为了"花哨"的代码而牺牲可读性。不要尝试创建你将来才需要的功能——首先编写现在工作需要的内容。不要成为孤岛。在线与其他程序员交流并接受他们的帮助。不要编写零注释的代码。让别人更容易理解你的代码。不要拖延调试。它是必不可少的,应该成为你流程的组成部分。不要盲目复制和粘贴他人的代码。旨在理解进入你软件的所有内容。不要走捷径达到你的目标。找出你遇到的每个问题,并愿意投入必要的努力和关心来解决它。
27. 应对软件开发的挑战
毫无疑问,软件开发是一个复杂的话题——这种复杂性可能难以处理。应对开发挑战的第一步是尽可能简化,保持事情可管理并避免不知所措。还要旨在不断提高你对该领域的理解。保持领先趋势,这样你就永远不会被不断发生的变化措手不及。如果你能在照顾健康的同时做到所有这些,你将很好地装备在这个具有挑战性的行业中茁壮成长。