程序员如何解决问题呢?
程序员遇到问题是很正常的,解问题也是必须的。但是如何解决问题,每个人的方法都不一样,但如何解问题会慢慢地决定一个人的技术高度(不是广度,是高度)
大家都是从hello world开始的,然后写代码,遇到问题。
有些人呢,只会问人,结果问了几年,还是问人。在我工作中看到的,即使有着几年工作经验的人,也会很依赖别人。这种人没有安全感,不能承担责任,因为害怕东西做不出来。没有网络就写不出代码,我在他旁边站一会就写不出代码。
作为程序员,我们应该有一个信念:别人做出来的,我们也可以做出来;别人做不出来的,我们想办法做出来。
初学者遇到问题问人是应该的,但是得先独立思考,把自己的方法都使完了,还解决不了,再去问人。这样子,等到问题解决以后,你的经验里,绝对多了一种解决这类问题的思想。注意,是这类问题的解决方法。如果是你总依赖别人,那么你只会依赖别人,而不会去反思。这将是一个非常恐怖的问题,直接决定你以后的技术水平的高低。
解决问题的技巧
我们暂且称这些为技巧吧,因为不一定全是技巧。
-
概率问题:想办法复现。两个方式:一个是交给测试去总结,提高复现概率;另外一个方式则是从现象和代码去推理。所有的偶现问题,都是可以转成必现问题的。
-
一般的问题,我们可以通过log,现象去分析。在分析问题时,必须先确定问题点,缩小范围,定位问题,然后解决问题。
-
逻辑逆推。很多同学都问为什么这样不行,那样不行。很简单,你问自己,为什么这样不行,然后逆推回去。举个例子,对于新手同学来说,使用RecyclerView的时候,显示不了数据。然后提一个问题,我使用RecyclerView的时候,不行。别人看了一脸懵逼。问:怎么不行?答曰:不显示数据。到此,我们逆推回去,为什么不显示数据。有设置数据吗?可以在设置数据的地方打断点或者log,加入数据有了,为什么还没显示呢?是view被隐藏了吗?可以用LaoutInspector查看一下布局。假如布局有了,还是没有显示,我们再去猜想是不是没有设置布局管理器呀?设置了韶关管理器,又有数据,是不是适配器有问题呀。这样子,一步一步逆推,排除猜想,定位问题。
-
态度:前一两年可能靠运气解问题,但是很多人忽略了态度。就是刨根问底的态度。如果是运气解的bug,你心里踏实吗?上线了,很多人在用,出了问题呢?对吧!所以,如果时间精力有的话,一定要知道原因,知道为什么出现这样的问题,确保解决了。这样子你可以学习到很多东西,也很权威。
-
经验:经验不是学习得来的,而是一种职业敏感度。你看到什么东西会想起别的东西。你的意识会帮你出一些你曾经的解决方案。这种经验怎么积累的呢?全靠解问题积累的,所以同学们可以我们的网站里的问答模块,多帮助他们解决问题。
-
代码阅读:开源的代码没有秘密,里面的实现原理都给你看了,你还想怎么样呢?所以大家要提升自己的代码阅读能力。一些IDE的快捷键,使用技巧,debug技巧。
-
最后在你问别人之前,一定要自己思考,去搜索也是一种方法,自己尝试去解决再去问人。最重要的是,把你尝试的过程,结果。告诉你问的人,这样子别人会更快地帮助你解决问题**
遇到问题如何问人?
希望看了这篇文章的程序员s,不要再问一些不经过脑袋的问题了!
别再问我怎么写一个社交app,为什么我的手机黑屏了,为什么我的xxx显示不了内容...
提问之前先思考,先尝试解决。向别人问问题时,把自己的尝试过程,实验结果也提供出来,**或许你是对的,只是还差一点没解决。**当别人一指点你以后,茅厕顿开,你一辈子都知道这种解法了。
问问题的时候,要把现象描述好,要人能看得明白。你要明白一件事,看问题的人跟你不一样,看问题的人是没有上下文的。所以问问题要思考提供什么信息
提供log,截图,描述,复现步骤...这些不是必须的,但是能有则提供。
后话
在写代码的漫漫长路上,没有人可以一直给你依赖,给你解答问题。
你必须有一套属于自己的问题解决指导思想。
不管是搜索,还是凭借着经验,推理能力,代码阅读都行。
我相信一个3年工作经验的人和一个5/10年工作经验的人,平时写体力代码的时候都是差不多的,没有太多能力的体现。
但是,大家要记住了,别人为什么可以拿高工资?
因为在出现问题的时候,别人的价值就体现出来了
他们可以承担责任,可以解决问题,可以让人放心。
我希望大家也会成为这种优秀的程序员。