2020年,受疫情影响,大量企业倒闭。即使能坚持下来,他们也推出了很多减财减员计划(也叫人事优化),导致大量失业。当然也包括像我们这样做开发的程序员。疫情期间,为了快速找到工作,很多人开始四处寻找面试材料复习,开始准备面试。但是,在审核的过程中,有些人可能会发现自己工作了这么多年,水平可能还不如一个三年的员工。有开发经验的新人。那么问题来了,也是发展,你为什么不如别人?我怎样才能让自己变得更好?下面我将从三个方面阐述我的思考。一、做事的艺术在工作中,我们可能会遇到各种各样的问题。如何优雅地处理这些事情,很考验一个人的能力。1、严谨细致的工作态度。经常有人这样跟我抱怨:面试造火箭炮,干活拧螺丝。我觉得就算是在拧螺丝,也要保持一丝不苟的态度,把拧的工作做好,否则这一步拧不好,很可能你造的整枚火箭还没飞上去就失败了进入天空。爆炸了。我认为严谨、一丝不苟的态度是我们从事研发行业必须具备的基本职业素养。因为可能是你的一个小疏忽,或者是对情况的考虑不周,给别人造成了很大的麻烦和后果。也许一次两次这样骗别人,别人就可以原谅你,帮你填坑。但是如果因为自己不够严谨,不够认真,一而再再而三的欺骗别人,时间久了,你再好,别人也不会再相信你,你也很难动心队中前锋。2、抓住问题的本质在工作的时候,我们经常会遇到各种奇怪的bug。面对这些bug,不同的人处理方式不同。有的人恨得咬牙切齿,恨不得和养虫子的人打一架;有的人很冷静,一边询问bug的细节,一边静静坐着打断重点打log分析问题。两种做法不同,结果也不同。那么当我们在开发过程中遇到问题时,我们该如何解决呢?我认为解决问题的核心是抓住问题的本质。如何把握问题的本质,以下是我常用的方法论,供大家参考:了解问题的细节,收集问题的条件和现象:只有了解问题,才能解决问题;模拟问题发生场景,再现问题场景;将偶发问题转化为不可避免的问题,并从中寻找规律;善用排除法,筛选出干扰项;结合断点+日志跟踪问题,深入源码探寻问题本质。一旦抓住了问题的本质,一切就迎刃而解了。后面要做的就是想办法解决。你可以自己想办法;搜索互联网,看看是否有人遇到与您相同的问题;向熟悉这个领域的人请教...3.事前总是比事后更重要填坑。很多时候我们往往忽略了前期规划设计的重要性。我们往往一步一个脚印,当功能实现到一半的时候,突然发现路越来越崎岖或者根本行不通了。这时候,你很不舒服。.如果你继续前进,你面前的陷阱可能会越来越多;再不下去,又会想方案,项目会延期,进度跟不上,会被追究责任。所以,做任何事情之前,一定要想清楚自己要做什么,然后再去做,以免走错路的尴尬。以下是我给出的一些建议:在做一些比较复杂的功能之前,尽量设计好。这里的设计主要包括:流程图:考虑到所有可能的情况,越详细越好;设计类图:包括UML图和时序图等。好的设计往往事半功倍。在这里我建议大家多了解一下设计模式;性能设计和可扩展设计。制定好的编码规范,在重点难点的地方多加注释,以免时间长了忘记,造成代码晦涩难懂,大大增加维护困难和bug的几率。提高代码质量,在实现功能的同时关注代码的性能,熟悉一些常见的性能问题。在问题出现之前解决问题,并预先考虑替代方案,如果不是完整的解决方案的话。否则时间长了或者上线之后,你可能需要花费数倍的精力去解决,而且可能会带来很不好的影响。4、低调做事高调。谈话很便宜。给我看代码。这句话可以说是IT圈里最朗朗上口的一句话。我们的研发行业不同于其他行业,我们不需要为了获得更高的性能而推销自己。我们绝大多数的研发人员都是务实的,靠着一行一行的代码来实现自己的价值,少说话多敲几行代码会更有价值。所以,那些整天挂在嘴边,讲一堆技术架构,把代码写得乱七八糟的人是比较冷门的。做技术的我们不要整天炫耀自己的技术。你要知道世上有超越别人的人,有很多人比你更有本事。没必要整天比拼技术,也没必要刻意让别人知道你有多厉害,因为你写的代码可以证明你的技术水平,时间久了大家自然会心知肚明。5、助人的艺术在助人的同时,也可以帮助自己更彻底地掌握这项技术。为什么不这样做呢?帮助别人尤其重要,而不是施舍。帮助别人要乐于助人,但也要讲究方法。帮助别人是建立在相互尊重的基础上的,否则你善意的帮助会被别人理解为同情或多管闲事。因此,我们在帮助别人的时候要注意以下几点:不要试图去帮助别人,只有在别人需要帮助的时候才伸出援助之手;以介入被帮助者的成长为名,最好的帮助就是止步于此,顺其自然。2、学习的艺术从事开发工作,无论是在产品线上编写业务代码,还是在技术平台上进行技术研究,都不能放弃对新技术的学习和尝试。放弃学习,就像战士在战场上丢了枪。很快你就会被一波又一波的技术淘汰。1、学习和吸收别人的长处对于大多数人来说,发现别人的缺点很容易,但很难发现别人的长处,这也是很多人无法快速成长的原因。优秀的人总是善于发现别人的长处,并向他们学习。学习、模仿、最终超越,是他们立于不败之地的秘诀。他们不在乎你有多少缺点,他们只在乎能从你身上学到多少。他们不仅会向身边的人学习,还会从以下几个方面学习:优秀的源代码。这包括系统源代码和优秀的开源项目源代码;优秀的技术书籍和文章;优秀的概念和想法。2、把握学习的广度和深度。漫无目的的学习,必然导致效率极低。我们在学习之前一定要给自己定下一个目标:我们是否想学好不同领域的技能,成为一个多面手;或者想在某个领域做深入研究,成为专业人士,这就涉及到学习广度和深度的选择。因为你不同的选择,可能会导致不同的人生轨迹。目前来看,大厂更倾向于做某个领域的专家,而小厂更倾向于做多面手,有更多的技能。当然,这也不是那么绝对。就选择而言,大厂固然好,但能进大厂的人有多少;虽然小厂待遇不如大厂,但是小厂机会多,说不定哪天公司发展好,你就能爬上领导的位置。所以无论是选择学习的广度还是学习的深度,都没有错。唯一不对的是你根本就没有想过。当然,这里的选择不是绝对的。每个人在不同的阶段可能会选择不同的方向。刚开始在社会上工作时,可能会追求学习的广度,但逐渐对某个领域产生兴趣或表现出异于常人的才能时,可能会转而追求学习的深度。每个人的技术都可能在某个时候达到瓶颈。如果你现在打开一年前提交的代码,发现和现在提交的代码没有区别,这时候就要小心了。您很可能已经达到了技术瓶颈。这个时候,考虑换一个学习纬度或许是个不错的选择。3.不断学习技术日新月异,日新月异。几年前还比较流行的技术,几年后可能就被人们抛弃了。当革命性的突破性技术取代旧有技术时,历史的车轮不断向前发展是不可阻挡的趋势。不要以为你现在拥有的技术可以支撑你一辈子。我们需要对技术的发展保持高度的敏感度。一旦你掌握的技术逐渐被新技术取代,你就要小心了,可能留给你学习的时间不多了。4、善用学习工具善用学习工具,可以大大提高我们的学习效率。这里我主要介绍一下可以用来自学一门技术的工具:专业的入门书籍。对于新手新手,我还是建议大家先找几本专业权威的书籍作为自己的入门指南。因为本书比较详细和系统,对于入门还是比较不错的。专业领域强大的技术论坛和博客。在这里我们可以学到很多书本上没有的前沿技术信息和技术交流经验。这里推荐掘金和四福。开源代码托管平台。上面有大量的开源项目,有很多优秀的开源项目供我们学习和参考。学习和借鉴别人优秀的代码和设计思想,可以让我们快速提升自己的编码能力。这里我主要推荐Github和Gitee。关于如何使用开源代码托管平台,可以参考我之前写的一篇文章:《你真的会使用github吗?》。3、提问的艺术我们每个人都不是万能的,会遇到很多自己不懂的问题,需要请教别人。但不是每个人的问题都能被别人回答,全看提问者的提问水平。这里我先模拟一个场景:当你在github上使用别人的开源轮子,遇到问题需要请教作者或者提issue,你会怎么提问题?提问者A:请帮帮我,我有xxx的问题,我该如何解决?提问者B:哥,我说xxx小白。我已经使用你的xxxx一天了,但它仍然无法正常工作。你能帮助我吗?我真的别无选择。提问者C:老板您好。我用xxxx的时候经常xxxx,导致xxxx,但是xxxx,又是xxxxx,但是什么...(下面省略500字)。可能我描述的不是很清楚,你可以试试看。提问者D:请问如何解决,...(下面省略了几百行的log)下面)提问者F:你好,我在使用xxx的xxx版本的时候遇到了xxx的问题。下面是我遇到问题时的现象(...)和日志(...)。我先是xxx,然后是xxx,最后导致了xxx。我的问题设备型号是xxxx,在xxxx上没有问题,是不是xxxxx引起的?以上六人提问的方式完全不同。我认为只有提问者F才能最终从别人那里得到答案,顺利解决问题。下面我就帮大家一一分析原因:提问者A是很多人经常犯的错误。只是抛出问题,没有给出问题的现象和依据,会让提问者无从下手,也没有回答的欲望。毕竟你是请别人帮你解决问题,而不是领导发号施令。提问者C的问题是话太多,没有准确描述问题所在。如此不明确的问题,只会让被问者满脸问号,然后直接回复:???.B题是很多初学者(学生)常犯的错误。没有明确的问题,没有明确的解决方案期望,有的只是求助,连要帮助什么都没有表达清楚。大多数人都会忽略这种问题,因为他们不想把时间浪费在一个什么都不懂的菜鸟身上。毕竟,他们不是你的老师,没有义务教你基础知识。提问者D也是很多人常犯的错误。出现问题后的第一反应,不是想一想,想办法自己解决,而是不假思索地贴出一堆无用的错误日志,请别人给出解决方案。对于这样的问题,大多数人的第一反应可能是:如果百度能解决问题,请不要打扰我,谢谢!不用说,提问者E,这种提问显然不是为了解决问题。对于这种不友善、充满敌意的提问,我想大部分人的反应都不是帮忙解决问题,而是想:这个人不傻吧?分析完以上人的提问方式,我们可以总结出以下技巧:第一,弄清楚问题是什么;优先考虑自己解决,解决不了再寻求他人帮助;把问题描述清楚;表达感激之情。1.明确问题是什么在提问之前,首先要搞清楚你想问什么,你的诉求是什么。这是对被问者起码的尊重。什么都不知道就问别人,会让别人觉得你唐突无知,给别人留下非常不好的印象,这会直接导致别人不愿意帮你解决问题。你为什么这么说?因为别人要帮你解决问题,首先要了解你的问题是什么,你的诉求是什么,然后要帮你分析问题的原因,最后才能帮你想出解决方案.能量和成本实在是太大了。你要知道这里不是学校也不是医院,没有人会愿意竭尽全力帮助你。因此,如果你想让你的问题得到别人的解答和帮助,你必须弄清楚你想问的问题是什么!2.优先考虑自我思考和解决。你也可能会遇到这样的情况。经常有人在论坛、QQ群、博客评论区发上百行错误日志,然后张嘴不解释。就问:有什么问题,你能帮我解决吗?像这样不经过大脑思考的问题只能草率得到答案,或者根本得不到任何答案就会沉入大海。其实我不建议大家在QQ群或者微信群里向别人提问,因为懂的人可能懒得回答(我觉得这样的问题太low了,即使回答正确也反映不出来自己的实力),不明白即使回复你的人没有价值,也可能把你引入歧途。在当今社会,每个人的时间都是非常宝贵的。活跃在QQ群和微信群里的,没有真正厉害的技术达人。专家的时间非常宝贵。那些整天活跃在QQ群或者微信群里的人,估计都是无所事事的人。所以,要想得到别人高质量的回答,就必须有与之相匹配的高质量问题,这样别人才会愿意帮你解决。所以不是所有事情都值得问别人。在提出问题之前,我们要有自己的思考,优先考虑尝试自己解决问题。下面是我提供的几个自己解决问题的方法:结合断点+日志跟踪问题,深入源码,找出问题本质并解决;仔细阅读作者写的用户手册,不要把每一个细节都当成理所当然(不要想当然),尝试自己寻找答案;在常见问题解答中找到答案。如果有开源地址,建议先在Issue中搜索相关问题,借鉴解决方案;上网搜索相关问题(如果条件允许,先用google,百度太坑了,大部分搜索都是一样的);向擅长的朋友请教。如果你通过以上5种方法都无法解决问题,这时候你可以去问问别人,相信你一定能够解决问题的。因为带着思考向别人提问,是获得别人高质量答案的最好方式。如果可能,你可以直接说出你想到的几个解决方案,这样别人可能更愿意帮你解决。毕竟大家都喜欢做选择题而不是作文题。3.把问题描述清楚。有的人,遇到问题需要向别人求助时,往往会一头雾水,描述很多看似与问题有关或无关的事情。他滔滔不绝,让提问者看得目瞪口呆。面对这样的问题,别人难免头大。说了很多,分不清矛盾的主要次要和主要问题,连问题是什么都搞不清楚。别人怎么帮你解决?因此,我们在说明问题时,需要注意以下几点:问题描述要简明扼要,尽量控制在50字以内。问题描述要清晰明了,抓住主要矛盾。不要说与问题无关或相关性低的话。建议的问题包括以下部分:问题描述;使用版本;如何重现;预期效果;错误现象(截图或视频);设备信息(环境);附加信息(可以是日志或源代码链接等);4.解决问题,及时反馈,表达感谢。现实生活中,经常有这样的人,得到别人的帮助后,问题已经解决了,连一句回复或一句谢谢都没有,就消失得无影无踪。这将极大地打击接受者的积极性。因为长期存在的问题可能令人沮丧,所以重要的是他们渴望看到问题得到解决并获得帮助他人的满足感。否则,下次有人问他问题,他可能就不太愿意帮忙了。所以,在问题解决之后,给所有帮助过你的人发个信息,让他们知道问题是如何解决的,再次感谢他们。
