作为一名软件工程师,你必须被各种新技术、设计模式、架构原则、新的UI和API框架、新的库、实现软件的新方法、存储数据等所包围,但无论您周围的技术如何变化,有些技能永远不会过时,对这些技能的深刻理解将使您作为软件工程师的职业生涯更加光明:1.算法和数据结构从根本上讲,软件程序从各种获取数据源并以更易读、更易理解的格式将其呈现给人类或机器。如果没有数据,也没有什么要处理的,也许就不需要软件程序了。根据您学习的语言,您会遇到数组、堆栈、队列、链表、双向链表、哈希表、字典、图、二叉树、堆、列表、集合、元组等。学习数据结构没有捷径,算法是解决特定问题的步骤。如果您想从A点到达B点,您有多种选择。你可以走路、跑步、骑车、坐车、坐飞机、坐船……为什么不爬呢?算法问题就是解决这类问题。同一个问题有不止一种解决方案。软件工程师最需要的是找到一个最优解。通过消耗最少的处理机器来执行更快的任务的解决方案,因此,对算法和数据结构的深刻理解是必不可少的。2、随时准备面试跳槽是最快的加薪方式之一。随时准备面试是非常有必要的。准备面试涉及很多方面。你的面试答案对不对是个问题,你能不能想出多种方案和解决方案,最后实现如何推销自己,你的着装是否得体,这些其实都可以体现在你的日常工作中:(远程工作尤其重要)所以)并记下当你的老板提出问题时,你可以提供解决方案。不要成为你老板的问题。就像在面试中一样,如果在面试过程中发现候选人有问题,没有公司会聘用候选人。每天以得体的着装形象出现在办公室,无论技能如何,人们都会更喜欢与外表漂亮的人相处。就像你在面试解决问题时,你需要找到解决工作中潜在问题的方法像你准备面试一样不断学习,每天花一些时间学习新的东西3.协作当遇到危险时,动物只有战斗或逃跑两种选择,但人类有第三种选择,即合作,剑桥大学将合作定义为两个或两个以上的人共同努力创造或实现同一件事,合作的目标很明确——“安全到达目的地”.合作的最大杀手是自我。自信和自私是有区别的。想象一下在路上,你前面的司机突然停下来,因为他/她该休息了,或者在没有开灯的情况下突然转弯。后面的车辆就会停下来或发生事故,造成整个交通瘫痪的情况。在企业界,你经常会遇到这种行为。缺乏合作是能源和金钱的最大消耗。合作其实很简单。如果你踢过球,如果你不在乎谁进了球,你会毫不犹豫地把球传出去。最终,球队获胜。根据经验,如果您不关心谁获得荣誉并专注于实现最终目标,那么您就是一个很好的合作者。只要目标明确,写作自然而然。下次遇到卡住的时候,尽量全面分析,看看是不是你们的团队合作出了问题。4.表达能力我觉得表达能力是最容易被忽视的。它是以观众可以理解的方式呈现数据、信息和概念的能力。这并不意味着你可以做一些PPT。马克吐温曾说过:“如果你要我给你做一个两小时的演讲,我今天就可以准备好。如果你只想要一个五分钟的演讲,我需要两周的时间来准备。”以下是一些提高演讲技巧的建议:了解你的听众:与在公共场合演讲不同,在公司里,大多数时候你会了解你的听众。你的同事、同事、经理和团队领导的需求非常不同,耐心和对错误的接受程度会随着时间的推移而降低。快速切入重点,使用数据来支持你想要交流的内容,并通过相关类比使其易于理解,这些都是非常有用的技巧。练习:演讲前练习,演讲成功率提高80%。分析你想花更多时间的地方,你想强调什么词,你想传达什么信息,你希望你的听众在演讲后有什么感受?很棒的感觉。录音和听练习也是一种很好的练习,但过度会适得其反。数据困境:没有数据,很少有想法或概念出现。显示数据的最简单方法是通过表格,但通常这不会传达任何信息。5.批判性思维批判性思维是一种清晰而理性地思考该相信什么以及您需要做出什么决定的能力。有时我们的直觉会帮助我们做出决定,这样我们就不会重新发明轮子。这没有错,直觉使决策过程变得容易,因为我们的大脑编码了数百万年的人类经验。对于穿什么、去餐馆吃什么或看什么电影等琐碎的决定,随心所欲是可以的。但是在一些重大决策中,批判性思维是必要的,现在让我们看看批判性思维如何帮助软件工程师。这些都是值得我们每天思考的问题:我每天在做什么,有价值吗?我能实现更好的功能吗?我正在处理什么类型的数据?数据的来源是什么?如果没有数据,我该怎么办?谁是我的用户?如果应用程序不可用,他们会怎么做?当API宕机时,我需要提供什么样的用户体验?这是最好的数据结构或算法吗?有更好的吗?如何?如果我是用户,我会喜欢使用我创建的东西吗?我构建的模块会出现什么问题?问题的根本原因是什么?为什么我的用户对我的应用程序不满意。
