如何像程序员一样进行严密的逻辑思考?

史蒂夫·乔布斯曾说过「这个国家的每个人都应该学习计算机编程,因为它可以教会你思考。」

编程如何影响思考,如何向程序员们学习问题解决和分析的能力,酱酱作为外行,和我司的技术小哥哥们讨教了一番。

image

Q1:编程是什么?

编程,就是和计算机展开对话,用一种机器能够理解的方式和它交流。但和普通的语言交流不同,编程对分析技巧、解决问题的能力和创造性提出了更高的要求。

Q2:可以简单介绍一下平常你们在做的事情吗?

其实我们做的事情就是把计划好要做的事情翻译成计算机能执行的命令,让计算机帮我们完成。一般可以分为前端开发、后端开发、移动开发等。从专业领域来看又有游戏开发、金融量化开发、人工智能等划分;从具体做的事情来看,我们有专门做网页的,管服务器的,做 iOS/安卓开发的,跨平台软件开发和做软件内核的等等。

image

Q3:可以简单介绍一下常用的编程语言吗?

这个问题有点难,很难用几句话就说明白。不过我可以用 XMind 做一个表格对这些常用的语言进行下优劣势和应用场景的对比分析,看后就会明白个大概。

image

这些都是常见的语言,一般对程度员来说,都需要熟练掌握不止一门语言。随着技术的日新月异,需要不断去进行学习和探索新技术,才能应对各种层出不穷的变化。

另外,除了具有扎实的编程功底和建模能力外,还要精通常用的数据结构、算法、设计模式等。也正因为这些较高专业技术壁垒的存在,技术岗比非技术岗通常才更容易获得高薪的报酬。

Q4:学习编程对于你的思维有什么影响?

更注重思维逻辑的严密性

在编程的过程中,规则定义得越严谨,逻辑越完备,出现 bug 的概率越低。会把时间更多花在构思和思考上面,想清楚到底如何去做,思路是什么,如何用更简洁的代码去实现。在思考的过程中,努力去穷尽各种情况出现的可能性,提高自己对细节的重视程度。

image

养成流程化的思维方式

在面对复杂问题时,更多想的是如何去拆解和解构问题。当你接到需求时,对需求进行梳理、分析、分解是十分必要的。把复杂的事情流程化、简单化,让计算机去帮忙处理。

image

更在意信息的输入和输出

编程是和机器的对话,本质上是一种输入和输出,其实人的生活也一样。我们用各种感官体验接受这个世界的各种信息,并在大脑中产生情感和记忆。但流行的东西并不一定是最优质的内容,为了让大脑的 CPU 得到更高效的运行,会有意识地去控制平常接触的信息和内容,尽量选取更优质的学习材料。

image

更善于使用搜索引擎

技术上的很多问题,只要你善于搜索就能很轻松地找到解决方案。前人的经验是宝贵的学习资源,不管是技术论坛,专业博客还是强大的搜索引擎,懂得如何利用关键词和恰当提问去找到问题的解决方案都是一项能帮你省很多力气的基本功。

Q5:作为 XMind 的开发,你是如何使用 XMind 的?

  • 何同学:对于开发来说自我学习是很重要的一部分,在日常工作外的自我学习,我通常就用 XMind 来整理技术相关的知识,不仅更能增进理解,这知识它也更容易进脑子。比如以下就是 N 年前学习的知识碎片。

image

  • 不愿意透露姓名的彭同学:我通常用 XMind 来管理和记录工作内容,一般是每月一张图,接到新任务就往上面添加,用分支来记录任务,用图标来记录进度。因为可以随意拖动主题,所以可以随时修改和添加,并进行整理和分组。

另外,XMind 用来画项目架构图也很方便,画需求分析也可以,可以更方便把任务交给其他人去做,或者画 API 接口说明、客服常见问题解决指南等等。

image

  • 林同学:我经常用 XMind 的层级关系来整理API,利用联系,来画对象或者状态之间的关系。另外,我在开始做一个需求前会先用 XMind 将业务逻辑梳理清楚,将自己的思路完整地记录下来。

image

Q6:如果我想自学编程,有什么建议吗?

1、梳理思路,明确目标

学不学,为什么要学,如何学,应先有需求,再有方案。在学习一门技术语言之前,多问问自己:「为什么要学?」、「学会了能解决哪些问题?」,可以利用 XMind 制作一个思维流程图辅助自己思考判断。

比如当你工作中面临较多数据分析的工作需求时,想获得工作效率上的提升,可以考虑下是否能通过学习 Python 来帮助你提升自己的数据分析能力。

image

在用中学效率是最高的,特别地,当你能用编程来解决在现实中遇到的问题,这种学习的动力和成就感也是最强的。

2、制定学习计划

如果你对学习的具体内容还不是很明确,比如你想做一个网页,可以去技术论坛上先查看相关的问题,明确自己需要学习哪些内容。在学习的过程中,遇到不明白的地方可以寻求程序员朋友(我)的帮助。

明确学习目的和学习内容后就可以开始给自己制定学习计划了。如果你想体系化地进行入门,那么可以根据一般的学习路径来给自己安排学习计划。比如这种:

image

但更多的情况是,我们根据目前手头工作的需求来学习,因此可以直接根据你想要做的事情来学,这样效率更高,也能即学即用。

image

3、找到学习资源/教程

关于编程网上有丰富的学习资源和素材,可以利用好各专业论坛、社区、学习平台,比如GitHub 等平台来寻找自己的学习素材。另外,在学习过程中遇到什么问题,也可以及时寻求搜索引擎的帮助。

image

当你在收集和整理学习素材时还可以将不同途径收集的文档、网站、文件夹等,作为超链接插入至导图中,方便资料的整合。 (操作方法:点击「插入」-「超链接」-「网页」/「本地文件」)

image

关于如何高效自学,可以查看我们之前的分享:如何成为一个平平无奇的自学小天才

4、实操实操实操

学习编程最为关键的就是实操,看完视频教程和素材自己动手去试比什么都重要。

写在最后:

互联网行业的各个岗位都少不了与程序员打交道,如果非技术岗能有些基本的技术概念,能够省下不少的沟通成本。

了解编程即是了解一种思维方式。学习编程语言的目的是掌握利用计算机解决问题的能力,更多的是掌握分析、拆解问题等思维能力。所谓的围剿式学习是向厉害的人学习他们处理问题的思考方式,希望今天的分享能带给大家一点启发。