【CSDN 编者按】获得成功必然是一个不断学习成长的过程。在这个过程中,来自别人的指导意见以及经验之谈会给予我们一些启发和提示,从而避免许多不必要的弯路。择其善者而从之,其不善者而改之。
声明:本文仅代表作者观点
在从事软件开发工作的15年中,我经历了许多不同的阶段。在某些时候,我恨不得把所有的软件开发工作都丢进地狱,宁愿跑到深山老林里去喂牛。而在其他时候,软件开发工作的一切对我来说是那么的完美。今天,我终于让我的职业生涯和个人生活达到了平衡,我可以告诉自己我非常喜欢软件开发,但是我不能忘记它并非一直这样完美,而且也并非对每个人都是如此完美。本文将分享在这15年中我学到的一些经验,正是这些经验让我的职业生涯与个人生活达到了和谐共存。
当开始从事软件开发这一职业时,通常的入门都是从初级开发人员开始,但是初级开发人员的薪酬通常都很低。无论你多么努力,想在一家公司取得快速的进步并不是一件容易的事,尤其是如果你所在的是一家小公司的话。如果你想快速提高你的技能和你的薪水,那么,就需要经常换工作,寻找一个更好的职位。如果你的生活中没有太多的负担,那就不要犹豫换工作。
努力学习,努力提高技能,努力做正确的事情,但记得要为自己而不是为公司而做。因为当你的工作出了问题或者当公司不再需要你的时候,你就是一个可以牺牲的数字。
如果你被解雇,就把它当作一个做你不敢做的事情的好机会
在某个时间段你在一份平庸的职位中毫无激情地工作着,而在另一个时间段你在另一家公司找到了一份不错的工作。有时候你会害怕失去工作,但有时候被解雇可能是发生在你身上最好的事情。几年前,我曾经有一份好工作,薪水很高,也很轻松。然而经济危机来了,公司解雇了一半的无项目可做的员工。我就是其中之一。当时我认为这可能是发生在我身上最糟糕的事情,因为这份工作让我的生活改变了很多,这些改变可能是影响我生命的许多方面的最好的事情。被解雇这件事让我非常失望,因为我为公司做了一切,为了公司我牺牲了很多私人时间。现在我到了一个充满活力的公司,我可以做我想做的工作,做我喜欢的项目。这份新的工作让我觉得非常吸引人,星期一也不再那么烦人了。
这些年来,我在工作中认识了很多人。在我曾经工作过的公司里,我们每年都会一起参加公司的晚会,公司的午餐会,以及每个人都会去的公司“活动”,但所有这些美好的和谐并不像我们想象的那样真实。许多人都只是想取悦老板,并且对那些不在现场的同事和上司吹毛求疵。我意识到我在这些活动上浪费了多少时间。现在我只去参加那些我想去参加的活动,不再顾忌别人怎么想。与以前的同事保持联系很困难,随着时间的推移,我和他们中的大多数都失去了联系。虽然我也交了一些好朋友,但在大多数情况下,在换工作的时候,这些人际关系就消失了,我的好朋友大多数都不是对我的职业生涯很重要的人。
在你的职业生涯中,你所做的最糟糕的事情之一就是在工作中变得过于安逸而不思进取。如果你变得安于现状,你将害怕你的职业上的任何变化,也会害怕你的公司可能发生的任何变化。我的一个朋友就是这样,他在一份舒服的工作上已经做了十多年了;他很安逸,不再想学什么新鲜东西,这导致他在职业上或生活中可以得到提升的机会越来越少,随着时间的推移,我看到他越来越害怕——当然,他讨厌星期一。我也在一份很舒服的工作上干了将近两年,这份工作让我学不到什么新东西。而且这份工作对我来说非常容易,每天都有很多空闲时间。这样的工作让我觉得是在抵押未来,为此我决定换份工作。
如果你的同事做错了什么事,你可以有很多方式指出来。但是永远不要指责人,因为这样做只会让你制造敌人,不仅是你个人的敌人,而且是你职业的敌人。你要尽量尝试帮助每个人,如果你认为你能够做到的话,就帮他改进代码,但是你需要向他解释原因,不要强行修改。记住,生活都是在兜圈子,发生在你同事身上的事同样会发生在你身上。一些开发人员倾向于对他们所做的事情产生一种巨大的依恋感,好像他们的作品代表了他们的“宝贝”,对它的任何批评都是针对个人的,或者被解释为对他们自己的批评。记住,对代码的批评不是对人的批评。仅仅因为有人在过去写了糟糕的代码,并不意味着他现在是一个差劲的开发人员。代码是坏的,但人不见得是。任何事情都是可以改进的。
这一点非常重要。如果你的工作电脑速度很慢,你完成事情的时间会更长,时间就是金钱。如果你的显示器很小,你将无法将屏幕划分为不同的屏幕,这也会浪费你的时间。现在我每天在家里工作,我决定买一把好椅子,一个大显示器(以便我在编程时把它分成几个屏幕),我还要买一台功能强大的电脑。这可能看起来很贵,但随着时间的推移,它会为你节省很多金钱。现在我自己一个人可以做更多的项目,我可以更快地完成我必须完成的任务,我的背也不会受伤。而且,我有更多的时间做运动,所以我不需要做背部按摩,晚上我的眼睛可以得到更多的休息,我可以享受在床上看书的乐趣。
时间是你拥有的最宝贵的东西。工作和金钱不是你的生活的全部。而且,每年休个假对你有好处,你可以借此机会思考一下你对自己正在做的工作是否满意,或者放下日常的工作,试试做做不同的事情。此外,休息可以帮助你了解自己正在做什么,以及对自己做的事情满意还是不满意。我总是在空闲时间有最好的想法,我一生中最好的决定都是在空闲时间做出的。
“技术债务”是软件开发中的一个概念,它指的是由于采用简单(有限)的解决方案而不是使用需要更长时间的更好方法而导致的额外工作的隐含成本。尽管如此,我还是更喜欢沃德·坎宁安(Ward Cunningham)提出的这个比喻,即当你在处理技术债务时,把它视为金融债务:而增加新特性的额外努力相则当于金融债务的利息。如果你快速解决了一个问题,没有经过足够的思考,没有运用更好的做法,将来你就要为此付出代价,你将不得不花费几个小时的空闲时间来解决它。
我记得我在进入这个行业工作的前几个月,我相信项目一定会定义明确,客户一定知道他们想要什么。然而,我很快意识到事实并非如此。这让我感到焦虑,因为我想让工作按时完成,而很多时候这是不可能的。你要学会接受情况一直会变化,很多时候这些变化会导致你不能按时完成一个项目,但这不是你的错。放轻松,拥抱这些变化。
如果你想成为那个决定在一个项目中使用一项新技术,或者使用一个新方法的人,在将你的决定告诉同事之前,你必须知道你想使用的新技术或新方法。如果你不这样做,他们可能会把他们的技术强加于你,或者否决你的想法。
软件开发的世界日新月异,你要以平常心待之,放松心情,不断学习和成长,始终以自己的速度前进。如果你不能学到所有的东西,不要沮丧。关键是要完美地学习重要和基本的东西,并跟上其他技术的发展。
匆匆忙忙地使用某些东西会使你无法很好地阅读文档或正确理解API。如果你想保证你做的事情正确而不浪费时间,不要试图走捷径。好好阅读文档。否则,你可能不会以最好的方式工作。对Stack Overflow、Google和其他来源的源代码保持批评态度。不要照搬解决方案,要理解它。
不要把工作上的问题带回家。如果有一个bug或者一个你不知道如何解决的技术问题,把它留到第二天。你会为自己节省很多时间,而且你不会因为整天都在解决问题而讨厌你的工作。休息的头脑更有效率。如果你不这样做,焦虑会让你无法入睡,第二天你会面临同样的问题,同时昏昏欲睡。这一点不太付诸实践,但它却是我学到的最有价值的经验之一。
我在这篇文章中所写的是个人经验,可能看起来显而易见。但是在很多情况下,即使我们知道这些方法如何改进我们的工作和生活,我们也不会去做,而生活最终会迫使我们去做。不要把它留到最后一刻;如果我在一开始工作时就运用了这些相同的技巧,我相信在随后的工作中我会节省很多时间和少很多弯路。原文标题:Reflections After 15 Years ofWorking as a Software Developer
原文链接:https://medium.com/better-programming/reflections-after-15-years-working-as-a-software-developer-cabf610f51a0
☞Android 12 预览版发布,64G手机用户:我又活了