当前位置:C++技术网 > 资讯 > 如何解决技术上那些没有接触到的问题

如何解决技术上那些没有接触到的问题

更新时间:2017-04-21 11:55:15浏览次数:1+次

 你好,我想请假一个思路的问题,现在是做测试,之前培训过C++,只是能简单的看代码,遇到问题就不知道怎么解决,出了问题,也不知道怎么处理,一直觉得开发得跟着有经验的人学习,但是看着有些人好像都是自己解决了问题,我不知道我这种想法对不对,你一般是怎么解决问题呢?尤其是那种没有遇到过的 

C++技术网会员解答:

    您好,感谢您对C++技术网的支持与信任,如果觉得解答的不错,多多推荐一下哦。

    你这样的困惑发生在刚学完编程基础知识和做项目之间的过渡阶段。我很清楚的记得,曾经我处在这个阶段时候的困惑,寻求帮助,但是都无果而返。最后只有自己努力寻找真相。这也是成就了C++技术网的原因。所以,现在想起来,也是感慨万千。能够开我们网站的会员,是一种缘分,我很愿意给你做一个详细的指导,帮助你走出现在的困境。

    学习完编程语法知识后,我们只能说是掌握了基础的知识。我们知道工具都长什么样,这些工具的功能是什么。好比说,你玩手机,一开始是知道拍照、打字什么的,也就是各个小功能单独的使用。

    但是,我突然给你一个任务,使用手机进行实时的图文直播,直播的任务就是直播做菜。你之前一直只会拍照,打字聊天,突然说是直播做菜,无从下手呀!

    那么我们在开发时,和上面直播做菜的场景是一样的。我们掌握了编程语言,就好比会拍照,会打字 。尽管你打字速度再快,你还是不会直播。那么你C语言学的再牛,解题速度再快,记住的知识点再多,但是让你一干真事,解决实际问题,就懵逼了。你都不知道从何下手。这是新手必须会经历的一个阶段。这个阶段会困惑很长一段时间,直到自己学会了解决问题的方法。很多人一直陷在这个困境中,所以尽管工作时间很长了,但是能力还是一般。能够从这个阶段尽快走出去的人,在工作中有太多的优势了。而且,这种优势会蔓延至方方面面。解决问题的能力是通用的,通过编程可以迅速深刻掌握这种能力,因为这种能力实际上就是一种思维模式。

    那么直播做菜作为一项实际的解决问题的应用,你如何做?你现在有概念吗?

    不管开发任务你有没有做过,都不要紧。要紧的是,你有没有解决未知问题的能力,而这个能力,也是别人评估你能力的依据。如果你会做一个东西,你能做,很自然,没有什么特殊的。但是如果你不会做一个东西,你都能够做出来,那就说明你解决问题的能力不错。再如果你可以迅速解决之前没有解决过的问题,而且解决的有条有理的,那说明你解决问题的能力超强,这样的人才谁不喜欢呢?

    那么我来提供一些解决问题的做法,供你参考学习。解决自己会的问题,自然不在话下。

一、0经验解决问题

    出在学习完基础编程知识和项目开发之间的阶段,基本是0经验的状态。对于各种功能的实现都是完全没有概念的。但是这个不要紧,慢慢学就是了。那么学习的方法有下面几个:

1.跟着前辈,问实现的思路

    一开始我们完全没有思路。没有关系,很正常。在请教前辈的时候,如果前辈能够告诉你思路,就可以了。有了思路你就可以一步步的做。具体实现细节,就是编程知识运用的时候。如果你没有编程基础,那就不是解决问题的思路问题了。

2.在网上搜索实现的思路,甚至实现的代码

    不一定每一个人都有好运气,能够碰到很好的前辈指点。但是我们有了互联网,我们需要什么就查什么。我们对于什么技术不了解,一查便知。解决问题没有思路,也可以查询。虽然不能够像我们网站这样给你满意的解决办法,但是东拼西凑,也可以让你慢慢建立全面的解决思路。

3.自己尝试思考解决的思路

    当然,前面两步对于冷门的技术的问题,很可能就找不到。那么你就得查询专业书籍或者自己尝试思考了。如何解决一个未知问题,下面会继续详细分析。

二、有经验解决问题

    有经验了之后,对于很多问题,尽管没有做过,但是总体上的实现思路方向是一致的。我们自然就会联想到之前遇到过的问题和解决思路。我们就会借助之前的经验,解决新的问题。虽然不是同样的问题,但是思路还是可以借鉴的。为什么可以这样呢?因为解决问题的思路,是一个逻辑流程。逻辑流程是通用的。而且万事万物的基础很多都是想通的,规律也就能够想通。当然,如何利用之前的经验解决现有的问题,这个就是具体问题具体分析了。个人经验不同,思维方式有差异,也就大相径庭。

    当然,以前的经验并不是万能的。因为有的问题,可能连你以前的经验都无法匹配。那么这个就是一个全新的问题。但是这都不要紧。再怎么难的问题,基础还是逻辑。只不过我们要拨开这层表皮障碍。我们解决无经验的未知问题的时候,可以这么做:

1.查询资料,了解问题的背景

2.查询资料,深入了解出现问题的技术功能流程或者说是具体的实现的流程

3.做了前面两步,我们对一个未知的问题也就熟悉了。提取问题的特征,从已有的经验里匹配。所以说,在解决问题的时候,要尽快总结,提炼出问题的特征,以后解决问题就需要用。如果不总结,以后可能就很难匹配到。如果从最原始的问题现象匹配,那么适用范围就太窄了。如果总结提炼出来,层次更高,适用范围就越广。这样也就表现为解决问题的能力越来越强。这也是区别于能力一般和能力强悍的人的分水岭。

4.然后就是利用以前的经验,来尝试解决新的问题。我们成功的将一个完全未知的问题,转为我们熟知的案例。即使我们没有什么经验,都可以有所帮助。经验越丰富,这种转换效果就越好。

5.如果没有匹配经验,那就发动自己的大脑,分析和解决问题吧。


    那么对于一个未知的问题,在没有经验,也没有人请教,也查不到资料的情况下怎么解决呢?就算是一个老司机,也有遇到困难的时候,那么他们是如何解决的呢?

    下面提供一个解决未知问题的办法,供参考学习,我们用直播做菜举例说明:

1.了解问题的知识背景

    我们一开始连直播是什么都不知道,就谈不上解决这个问题。我们先上网查询资料,了解直播是什么鬼。直播的相关流程等等。

2.将问题(开发的功能等都称为问题)进行整体的流程梳理

    直播做菜是一个整体的问题,我们先要了解整体的思路。我们要很清楚直播做菜的每一个流程步骤。我们这里说的不是直播软件,而是让你用你的手机不借助任何软件,实现直播。人家的直播软件都是已经解决了直播问题的一整套解决方案了。我们要自己从头到尾实现。我们了解了整个思路,确定我们需要相机、需要打字、需要好友互动、需要做菜、需要菜谱、需要。。。正是因为对整个流程的了解,我们才知道我们需要什么。然后就是这些东西是如何组合在一起,形成一个直播。

3.将问题切割为多个子问题

    将整个问题梳理了之后,我们知道需要准备很多东西,但是每一个东西都不简单。所以我们需要将整体切割为多个子问题。比如相机使用、打字交互、加好友入群、做菜等。每一个都需要单独来解决的。

4.然后再对子问题逐个突破

    对于具体的子问题的逐个突破,就是运用你掌握的技能或知识,进行灵活的运用。通过逻辑的巧妙的变换,从而达到你需要的效果。这个步骤是最具体的,我们要具体到具体如何做。那么就是要运用我们学的所有的基础知识。如果没有基础,那么就要学习基础,有基础就运用基础。

    当然对于一些问题的巧妙解决办法,就不是说凭空出现的。或许你也能想到一些,这是经常有的。但是别人也会想出更好的方法。那么我们就需要多阅读多交流,从别人那里汲取养分,充实自己解决问题的方法。一个方法代表了一种思维方式,这个就是我们需要积累的东西。

    对于大问题的解决办法,就是逐层的分解出来,直到最具体的,也就是我们熟知的编程语法知识之类的了。而实现的技术点,无非就是编程语法的组合运用。我说让你判断一个人的性别,你如果想不到用if判断,那么是你基础没有学好。否则,将基本的问题的逻辑转换到编程的基本逻辑里,是没有太大问题的。编程的语法,其实就是对现实生活逻辑的抽象。

    解决问题没有标准的做法,只有更好的做法。多学习多交流,多看文章,多动手,多思考,才会让你学到的经验越来越丰富,思维越来越灵活。上面都是一些辅助的方法,最根本的方法就是思考。遇到问题,多思考,思考人家是如何实现的,人家为什么这样实现,有没有更好的实现方法。在学习别人的方法的时候,你在积累。通过思考,你在改进人家的方法。

    现在的阶段是非常重要的,一定要多思考,当你对于一些问题,可以迅速想出解决办法,而不是查资料什么的,那么你就出师了。