如何从零开始学编程?

如何从零开始学编程?,第1张

在你学习编程之前思考一下你的目标,当你有最终目标时道路会更加的清晰。那么,你想要写什么?网站?游戏?iOS或者Android应用?或是你是想自动化完成一些乏味的任务让你有更多的时间看窗外的风景?也许你只是想更具有就业竞争力找个好工作。所有的这些都是有价值的目标,这些目标都是你编程学习推动力的一部分,没有推动力的人,是无法在略显枯燥的漫长学习之旅中走远的。

不要浮躁

Badprogrammingiseasy.EvenDummiescanlearnitin21days.Goodprogrammingrequiresthought,buteveryonecandoitandeveryonecanexperiencetheextremesatisfactionthatcomeswithit.

不管是在线下还是线上的书店,满目都是《21天学通Java》这种速成书目,它们都承诺在很短一段时间内就让你能够学会相关技术。MatthiasFelleisen在他的著作HowtoDesignPrograms,SecondEdition一书中明确指出了这种「速成」的趋势并予以了以上的讽刺。

所谓的「捷径」或者说「银d」是不存在的,智者说过,精通某个东西需要10年或10000个小时,也就是汉语中的「十年磨一剑」,所以不用着急,功不唐捐。

培养兴趣

Mostgoodprogrammersdoprogrammingnotbecausetheyexpecttogetpaidorgetadulationbythepublic,butbecauseitisfuntoprogram.

_LinusTorvalds

沉醉于编程,编程更是为了兴趣。兴趣是推动力的不竭源泉,保持这种充满兴趣的感觉,以便于你能将其投入到你的10年/10000小时的编程时间中。编程很有趣,那是探索的喜悦。那是创造的喜悦。看到自己亲手完成的作品显示在屏幕上很有趣。有人为你的代码而惊叹很有趣。有人在公共场合称赞你的产品、邻居使用你的产品、以及在媒体上讨论你的产品很有趣。编程应该十分有趣,若并非如此,就找出导致编程无趣的问题,然后解决之。

在这里对于初学者有两个大坑:

如果初学者们只与预先构建好的「发动机和组件」接触(没有理解和思考它们构造的原理),这会严重限制他们在将来构建这些东西的能力,并且在诊断解决问题时无从下手。

第二个坑没有第一个那么明显:幼稚的「整体论」方法有些时候会显得很有效,这有一定的隐蔽性与误导性,但是一两年过后(也许没那么长),当你在学习路上走远时,再想回过头来「补足基础」会有巨大的心理障碍,你得抛弃之前自己狭隘的观念,耐心地缓步前进,这比你初学时学习基础知识困难得多。

但腊敏茄也不能矫枉过正,陷入还原论的大坑,初学时便一心试图做宏大的理论,这样不仅有一切流于理论的危险,枯燥和乏味还会让你失去推动力。这种情况经常发生在计算机科班生身上。

为了更好理解,可以将学习编程类比为学习厨艺:你为了烧得一手好菜买了一些关于菜谱的书,如果你只是想为家人做菜,这会是一个不错的主意,你重复菜谱上的步骤也能做出不赖的菜肴,但是如果你有更大的野心,真的想在朋友面前露一手,做一些独一无二的美味佳肴,甚至成为「大厨」,你必须理解这些菜谱背后大师的想法,理解其中的理论,而不仅仅是一味地实践。但拿猛是如果你每天唯一的工作就是阅读那些厚重的理论书籍,因为缺乏实践,你只会成为一个糟糕的厨子,甚至永远成为不了厨子,因为看了几天书后你就因为枯燥放弃了厨艺的学习。

总之,编程是连接理论与实践的纽带,是计算机科学与计算机应用技术相交融的领域。正确的编程学习方法应该是:通过自顶而下的探索与项目实践,获得编程直觉与推动力;从自底向上的打基础过程中,获得最重要的通用方法并巩固编程思想的理解。

作为初学者,应以后者为主,前者为轮察辅。

启蒙

「学编程应该学哪门语言?」这经常是初学者问的第一个问题,但这是一个错误的问题,你最先考虑的问题应该是「哪些东西构成了编程学习的基础」?

编程知识的金字塔底部有三个关键的部分:

算法思想:例如怎样找出一组数中最大的那个数?首先你得有一个maxSoFar变量,之后对于每个数

语法:我怎样用某种编程语言表达这些算法,让计算机能够理解。

系统基础:为什么while(1)时线程永远无法结束?为什么int*foo(){intx=0return&x}是不可行的?

启蒙阶段的初学者若选择C语言作为第一门语言会很困难并且枯燥,这是因为他们被迫要同时学习这三个部分,在能做出东西前要花费很多时间。

因此,为了尽量最小化「语法」与「系统基础」这两部分,建议使用Python作为学习的第一门语言,虽然Python对初学者很友好,但这并不意味着它只是一个「玩具」,在大型项目中你也能见到它强大而灵活的身影。熟悉Python后,学习C语言是便是一个不错的选择了:学习C语言会帮助你以靠近底层的视角思考问题,并且在后期帮助你理解 *** 作系统层级的一些原理,如果你只想成为一个普通(平庸)的开发者你可以不学习它。

下面给出了一个可供参考的启蒙阶段导引,完成后你会在头脑中构建起一个整体框架,帮助你进行自顶向下的探索。

完成Codecademy的Python部分。这只是热身部分,尽快完成它,因为你永远只是在浏览器里,你不会学到如何搭建开发环境。在Codecademy这类的编程学习网站学到的那点儿东西,哪怕你只想做一个小的不能再小的项目,你都不知道该从哪儿开始。

完成MIT6.00.1x(中文化)(如果你英语不过关,完成麻省理工学院公开课:计算机科学及编程导论。MOOC是学习编程的一个有效途径。虽然该课程的教学语言为Python,但作为一门优秀的导论课,它强调学习计算机科学领域里的重要概念和范式,而不仅仅是教你特定的语言。如果你不是科班生,这能让你在自学时开阔眼界;课程内容:计算概念,python编程语言,一些简单的数据结构与算法,测试与调试。支线任务:

完成Python核心编程

完成HarvardCS50(如果你英语不过关:完成哈佛大学公开课:计算机科学cs50。同样是导论课,但这门课与MIT的导论课互补。教学语言涉及C,PHP,JavaScript+SQL,HTML+CSS,内容的广度与深度十分合理,还能够了解到最新的一些科技成果,可以很好激发学习计算机的兴趣。支线任务:

阅读《编码的奥秘》

完成《C语言编程》

[可选]如果你的目标是成为一名Hacker:阅读Hacker'sDelight

PS:如果教育对象还是一个孩子,以下的资源会很有帮助:

5-8岁:TurtleAcademy

8-12岁:PythonforKids

12岁以上:MITScratch或KhanAcademy

入门

结束启蒙阶段后,初学者积累了一定的代码量,对编程也有了一定的了解。这时你可能想去学一门具体的技术,诸如Web开发,Android开发,iOS开发什么的,你可以去尝试做一些尽可能简单的东西,给自己一些正反馈,补充自己的推动力。但记住别深入,这些技术有无数的细节,将来会有时间去学习;同样的,这时候也别过于深入特定的框架和语言,现在是学习计算机科学通用基础知识的时候,不要试图去抄近路直接学你现在想学的东西,这是注定会失败的。

那么入门阶段具体该做些什么呢?这时候你需要做的是反思自己曾经写过的程序,去思考程序为什么(Why)要这样设计?,思考怎样(How)写出更好的程序?试图去探寻理解编程的本质:利用计算机解决问题。

设想:

X=用于思考解决方案的时间,即「解决问题」部分

Y=用于实现代码的时间,即「利用计算机」部分」

编程能力=F(X,Y)(X>Y)

要想提高编程能力,就得优化X,Y与函数F(X,Y),很少有书的内容能同时着重集中在这三点上,但有一本书做到了——StructureandInterpretationofComputerPrograms(SICP)《计算机程序的构造和解释》,它为你指明了这三个变量的方向。在阅读SICP之前,你也许能通过调用几个函数解决一个简单问题。但阅读完SICP之后,你会学会如何将问题抽象并且分解,从而处理更复杂更庞大的问题,这是编程能力巨大的飞跃,这会在本质上改变你思考问题以及用代码解决问题的方式。此外,SICP的教学语言为Scheme,可以让你初步了解函数式编程。更重要的是,他的语法十分简单,你可以很快学会它,从而把更多的时间用于学习书中的编程思想以及复杂问题的解决之道上。

PeterNorvig曾经写过一篇非常精彩的SICP书评,其中有这样一段:

Touseananalogy,ifSICPwereaboutautomobiles,itwouldbeforthepersonwhowantstoknowhowcarswork,howtheyarebuilt,andhowonemightdesignfuel-efficient,safe,reliablevehiclesforthe21stcentury.ThepeoplewhohateSICParetheoneswhojustwanttoknowhowtodrivetheircaronthehighway,justlikeeveryoneelse.

如果你是文中的前者,阅读SICP将成为你衔接启蒙与入门阶段的关键点

虽然SICP是一本「入门书」,但对于初学者还是有一定的难度,以下是一些十分有用的辅助资源:

UdacityCS212DesignofComputerProgram):由上文提到的Google研究主管PeterNorvig主讲,教学语言为Python,内容有一定难度。

HowtoDesignPrograms,SecondEdition:HtDP的起点比SICP低,书中的内容循循善诱,对初学者很友好,如果觉得完成SICP过于困难,可以考虑先读一读HtDP。

UCBerkeleySICP授课视频以及SICP的两位作者给Hewlett-Packard公司员工培训时的录像(中文化项目)

ComposingPrograms:一个继承了SICP思想但使用Python作为教学语言的编程导论(其中包含了一些小项目)

SICP解题集:对于书后的习题,作为初学者应尽力并量力完成。

完成了这部分学习后,你会逐步建立起一个自己的程序设计模型,你的脑子里不再是一团乱麻,你会意识到记住库和语法并不会教你如何解决编程问题,接下来要学些什么,在你心里也会明朗了很多。这时候才是真正开始进行项目实践,补充推动力的好时机。

关于项目实践:对于入门阶段的初学者,参与开源项目还为时过早,这时候应该开始一些简单的项目,诸如搭建一个网站并维护它,或是编写一个小游戏再不断进行扩展,如果你自己的想法不明确,MegaProjectList中选取项目。总之,务必在这时拿下你项目实践的第一滴血。

与此同时,别忘了继续打好根基。为了将来的厚积薄发,在下面这几个方面你还要继续做足功课(注意:下面的内容没有绝对意义上的先后顺序):

计算机系统基础

有了之前程序设计的基础后,想更加深入地把握计算机科学的脉络,不妨看看这本书:《深入理解计算机系统》ComputerSystemsAProgrammer'sPerspective。这里点名批评这本书的中译名,其实根本谈不上什么深入啦,这本书只是CMU的「计算机系统导论」的教材而已。CMU的计算机科学专业相对较偏软件,该书就是从一个程序员的视角观察计算机系统,以「程序在计算机中如何执行」为主线,全面阐述计算机系统内部实现的诸多细节。

如果你看书觉得有些枯燥的话,可以跟一门Coursera上的MOOC:TheHardware/SoftwareInterface,这门课的内容是CSAPP的一个子集,但是最经典的实验部分都移植过来了。同时,可以看看TheCProgrammingLanguage,回顾一下C语言的知识。

完成这本书后,你会具备坚实的系统基础,也具有了学习 *** 作系统,编译器,计算机网络等内容的先决条件。当学习更高级的系统内容时,翻阅一下此书的相应章节,同时编程实现其中的例子,一定会对书本上的理论具有更加感性的认识,真正做到经手的代码,从上层设计到底层实现都了然于胸,并能在脑中回放数据在网络->内存->缓存->CPU的流向。

此外,也是时候去接触UNIX哲学了:KISS-KeepitSimple,Stupid.在实践中,这意味着你要开始熟悉命令行界面,配置文件。并且在开发中逐渐脱离之前使用的IDE,学会使用Vim或Emacs(或者最好两者都去尝试)。

阅读《UNIX编程环境》

阅读《UNIX编程艺术》

折腾你的UN*X系统

数据结构与算法基础

如今,很多人认为编程(特别是做web开发)的主要部分就是使用别人的代码,能够用清晰简明的方式表达自己的想法比掌握硬核的数学与算法技巧重要的多,数据结构排序函数二分搜索这不都内置了吗?工作中永远用不到,学算法有啥用啊?这种扛着实用主义大旗的「码农」思想当然不可取。没有扎实的理论背景,遭遇瓶颈是迟早的事。

数据结构和算法是配套的,入门阶段你应该掌握的主要内容应该是:这个问题用什么算法和数据结构能更快解决。这就要求你对常见的数据结构和算法了熟于心,你不一定要敲代码,用纸手写流程是更快的方式。对你不懂的数据结构和算法,你要去搜它主要拿来干嘛的,使用场景是什么。

供你参考的学习资源:

《算法导论》:有人说别把这本书当入门书,这本书本来就不是入门书嘛,虽说书名是IntroductiontoAlgorithms,这只不过是因为作者不想把这本书与其他书搞重名罢了。当然,也不是没办法拿此书入门,读第一遍的时候跳过习题和证明就行了嘛,如果还觉得心虚先看看这本《数据结构与算法分析》

CourseraAlgorithms:DesignandAnalysis[Part1]&[Part2]:Stanford开的算法课,不限定语言,两个部分跟下来算法基础基本就有了;英语没过关的:麻省理工学院公开课:算法导论

入门阶段还要注意培养使用常规算法解决小规模问题的能力,结合前文的SICP部分可以读读这几本书:《编程珠玑》,《程序设计实践》

编程语言基础

Differentlanguagessolvethesameproblemsindifferentways.Bylearningseveraldifferentapproaches,youcanhelpbroadenyourthinkingandavoidgettingstuckinarut.Additionally,learningmanylanguagesisfareasiernow,thankstothewealthoffreelyavailablesoftwareontheInternet

-ThePragmaticProgrammer

此外还要知道,学习第n门编程语言的难度是第(n-1)门的一半,所以尽量去尝试不同的编程语言与编程范式,若你跟寻了前文的指引,你已经接触了:「干净」的脚本语言Python,传统的命令式语言C,以及浪漫的函数式语言Scheme/Racket三个好朋友。但仅仅是接触远远不够,你还需要不断继续加深与他们的友谊,并尝试结交新朋友,美而雅的Ruby小姑娘,Hindley-Milner语言家族的掌中宝Haskell都是不错的选择。但有这么一位你躲不开的,必须得认识的大伙伴—C++,你得做好与他深交的准备:

入门:C++Primer

[可选]进阶:

高效使用:EffectiveC++

深入了解:《深度探索C++对象模型》;C++Templates

研究反思:TheDesignandEvolutionofC++;对于C++这个NecessaryEvil,看这本书可以让你选择是成为守夜人还是守日人。

现实是残酷的,在软件工程领域仍旧充斥着一些狂热者,他们只掌握着一种编程语言,也只想掌握一种语言,他们认为自己掌握的这门语言是最好的,其他异端都是傻X。这种人也不是无药可救,有一种很简单的治疗方法:让他们写一个编译器。要想真正理解编程语言,你必须亲自实现一个。现在是入门阶段,不要求你去上一门编译器课程,但要求你能至少实现一个简单的解释器。

供你参考的学习资源:

《程序设计语言-实践之路》:CMU编程语言原理的教材,程序语言入门书,现在就可以看,会极大扩展你的眼界,拉开你与普通人的差距。

Coursera编程语言MOOC:课堂上你能接触到极端FP(函数式)的SML,中性偏FP的Racket,以及极端OOP(面向对象)的Ruby,并学会问题的FP分解vsOOP分解、ML的模式匹配、Lisp宏、不变性与可变性、解释器的实现原理等,让你在将来学习新语言时更加轻松并写出更好的程序。

UdacityCS262ProgrammingLanguage:热热身,教你写一个简单的浏览器——其实就是一个javascript和html的解释器,完成后的成品还是很有趣的;接下来,试着完成一个之前在SICP部分提到过的项目:用Python写一个SchemeInterpreter

其他

编程入门阶段比较容易忽视的几点:

学好英语:英语是你获取高质量学习资源的主要工具,但在入门阶段,所看的那些翻译书信息损耗也没那么严重,以你自己情况权衡吧。此外英语的重要性更体现在沟通交流上,LinusTorvalds一个芬兰人,一口流利的英语一直是他招募开发者为Linux干活的的法宝,这是你的榜样。

学会提问:学习中肯定会遇到问题,首先应该学会搜索引擎的「高级搜索」,当单靠检索无法解决问题时,去StackOverflow或知乎提问,提问前读读这篇文章:Whathaveyoutried?

不要做一匹独狼:尝试搭建一个像这样简单的个人网站,不要只是一个孤零零的About页面,去学习Markdown与LaTeX,试着在Blog上记录自己的想法,并订阅自己喜欢的编程类博客。推荐几个供你参考:JoelonSoftware,PeterNorvig,CodingHorror

小结

以上的内容你不应该感到惧怕,编程的入门不是几个星期就能完成的小项目。期间你还会遇到无数的困难,当你碰壁时试着尝试「费曼」技巧:将难点分而化之,切成小知识块,再逐个对付,之后通过向别人清楚地解说来检验自己是否真的理解。当然,依旧会有你解决不了的问题,这时候不要强迫自己——很多时候当你之后回过头来再看这个问题时,一切豁然开朗。

此外不要局限与上文提到的那些材料,还有一些值得在入门阶段以及将来的提升阶段反复阅读的书籍。ThePragmaticProgrammer就是这样一本程序员入门书,终极书。有人称这本书为代码小全:从DRY到KISS,从做人到做程序员,这本书教给了你一切,你所需的只是遵循书上的指导。

后记

如果你能设法完成以上的所有任务,恭喜你,你已经真正实现了编程入门。这意味着你在之后更深入的学习中,不会畏惧那些学习新语言的任务,不会畏惧那些「复杂」的API,更不会畏惧学习具体的技术,甚至感觉很容易。当然,为了掌握这些东西你依旧需要大量的练习,腰还是会疼,走路还是会费劲,一口气也上不了5楼。但我能保证你会在思想上有巨大的转变,获得极大的自信,看老师同学和csdn的眼光会变得非常微妙,虽然只是完成了编程入门,但已经成为了程序员精神世界的高富帅。不,我说错了,即使是高富帅也不会有强力精神力,他也会怀疑自己,觉得自己没钱就什么都不是了。但总之,你遵循指南好好看书,那就会体验「会当凌绝顶」的感觉。

首先要想学编程,选一门合适的计算机语言就十分重要了,怎么去选择就显得尤为重要了,这要根据自己的兴趣爱好及每个语言的特性来选择,比如说PHP适合做web开发,易学习,易上手,非常流行的一门计算机语言了,我个人比较推荐php语言。

java可以做web开发,做安卓app开发也用的是java,在学习程度上上可能比php稍微难上手一点,不过也是没问题的,如果对java感兴趣可以尝试一下。

python是目前比较火的一门语言了,比较适合做人工智能领域,另外写网络爬虫类的程序,用python也是非常合适的了,看个人兴趣来选择了。

c,c++,c#这些语言就不推荐给了,特别是c#,已经是比较过时的一门语言了,即使学习好了,也不太适合去找工作,c与c++并不是十分适合初学者来学习,因此也是没必要进行考虑了,还有一些更小众的语言,更是没有必要去考虑,因此关于语言的学习就从上面3种语言去选择一门自己所感兴趣的吧!

研发搭建环境

如果选择好计算机语言,那么接下来就是研发环境的搭建了,因为只有研发环境搭建好了,才可以进行后续的编程工作,比如说PHP,那么就从百度上搜一下如何安装PHP环境,能搜出一些简单的教程,初学者按照教程一步一步来,顶多半天时间就可以把研发环境装好了,如果是java,就需要先安装jdk,进行环境变量的配置等,网上也有相关的教程,也是十分容易的,相信大家只要按照教程来做,都可以很轻易的把研发环境搭建起来的

选好视频和书籍,辅助学习。既然是零基础学习,就需要进行系统的学习,而不是到处百度零基础的知识点进行学习。

代码练习

跟随教程一个一个章节的进行学习,需要注意的一点就是不能只是去看,那样不行,要对每一个章节的知识点要亲自用代码敲一遍,运行一下试试效果才行,这样才能提高自己的动手能力,才开始会觉得有一点生疏,慢慢的就会熟练起来,逐渐会增加编程的兴趣。这个过程就是需要反复的进行练习,大量的代码练习才行。这个过程是5步中最关键的阶段了,重在代码亲自练习,对编程中有的章节不明白的地方,千万不要放过去,可以在网上找一些相关的编程交流群,参加进去,在线上咨询一些过来人,也许就可以轻松帮你解决疑问了,对你的学习十分帮助,并且整个过程也都是免费的。

项目实战

如果说基础教程都按部就班的都实践过一遍了,那么你就有一定的编程的基本功了,那么自己就可以尝试着做一些小项目,把学到的知识给串起来,进入项目实战阶段,比如说自己设计一个学生管理系统,并把它完成,如果不了解怎么设计,可以去网上搜索。慢慢就有思路了。

我也在学习这方面,视频书籍看过不少,最推荐的还是北京尚学堂的学习资料,Java.300集,Python400集,都是很经典的入门基础教程,而且是结合项目学习的,很有意思,干货满满,还都是免费的,推荐你可以去看看,相信可以带你走进变成的世界。

从零开始学编程,第一关就是要选择你所要学习的编程语言。面对着琳琅满目的编程语言,初学者常常一筹莫展,拿不定主意,不知该选哪

来自某互联网大咖的推荐与建议:对于想要进入IT行业的学习者来说,除了学习技术知识外、建议再学习思维能力以及了解职场。掌握意向慧粗岗位要求的技术,学习寻找问题、解决问题的思维能力,提前了解职场利于自身职业发展。精心挑选18本优秀书籍(技术与思维能力),送给当代大学生。

【10本】互联网类(与相关职位相匹配):

《人人都是产品经理》

作者:苏杰-电子工业出版社

知识匹配的岗位:产品经理

特点与推荐理由:

●产品经理入门级书籍

●丰富的工作经验分享

●系统性梳理用户、需求、项目、团队、战略、修养六大话题

《HTML5布局之路》

作者:刘国樱蠢利-清华大学出版社

知识匹配的岗位:HTML5(WEB前端)开发工程师

特点与推荐理由:

●依照网站开发流程进行讲解,更易吸收

●提供丰富的学习方法以及开发实战经验

●理论与实践相结合,提供丰富的案例及面试真题

●最适合初学者使用的HTML5技术入门书籍

《HeadFirst》系列书籍

作者:[美]弗里曼(FreemanE.)等-中国电力出版社

知识匹配的岗位:计算机类IT开发岗位

特点与推荐理由:

●IT技术入门书籍系列

●生动有趣、图文并茂

●易理解入门

《程序员第二步——从程序员到项目经理》

作者:尹华山-人民邮电出版社

知识匹配的岗位:项目经理(技术经理)

特点与推荐理由:

●技术思维到管理思维的改变

●适用于技术人员开拓视野

●从不同视角来审视工作、生活与自己

《SEO实战密码》

作者:昝辉-电子工业出版社

知识匹配的岗位:SEO工程师

特点与推荐理由:

●SEO百科全书类的入门指导

●理论与实践相结合

●从SEO原理到工具再到技巧解析

《乌合之众:大众心理研究》

作者:[法]古斯塔夫·勒庞-新世界出版社

知识匹配的岗位:产品及运营基础理论

特点与推荐理由:

●大众心理学

●群体理论的经典著作

●颠覆人们对群体的认知,对群体层层分析、逐步推进

《部落的力量》

作者:[美]戴夫·洛根等-中国华侨出版社

知识匹配的岗位:产品及运营基础理论

特点与推荐理由:

●互联网时代团队管理圣经

●依靠部落的力量,掌握撬动团队飞跃的4个杠杆点

●指导管理者如何激发每一个人内在潜能

《从零开始做运营》

作者:张亮-中信出版社

知识匹配的岗位:运营(新媒体运营等)

特点与推荐理由:

●运营入门级书籍

●运营工作相关内容广泛

●全面科学的运营思维介绍与案例解析

●介绍相关运营经验

《重新定义公司谷歌是如何运营的》

作者:[美]埃里克·施密特等-中信出版社

知识匹配的岗位:CEO

特点与推荐理由:

●实用、易理解的公司管理指南

●解读谷歌如何颠覆传统的MBA模式

●一本充满能量、令人兴奋的创业入门书

《重新定义团队谷歌如何工作》

作者:[美]拉斯洛·博克-中信出版社

知识匹配的岗位:人事经理(人力资源管理)

特点与推荐理由:

●揭秘谷歌的人才和团队管理的核心法则

●《纽约时报》畅销榜第一名

●BusinessInsider2015最佳商业书籍

●以人为本企业的团队组建和管理原则

【8本】思维能力与职场知识类:

《谁动了我的奶酪》

作者:[美]斯宾塞·约翰逊-中信出版社

相关思维能力:跳出适应区、目标

特点与推荐理由:

●寓言故事

●如何面对变化

《致加西亚的信》

作者:[美]阿尔伯特·哈伯德

相关思维能力:执行力

特点与推荐理由:

●职场畅销书

●提高执行力的方法

●对自己负责

《把时间当作朋友》

作者:李笑来-电子工业出版社

相关思维能力:时间管理

特点与推荐理由:

●时间管理是成功的关键所在

●学会打开心智

●从心智成长的角度谈时间管理

《杜拉拉升职记(共4册)》

作者:李可

相关思维能力:职场故事

特点与推前颂镇荐理由:

●职场故事

●职场指南

●帮助职场新人了解职场规则

《如何阅读一本书》

作者:[美]莫提默·J.艾德勒等

相关思维能力:阅读方法、学习方法

特点与推荐理由:

●学习阅读方法与能力

●学会梳理书籍骨架

●不同书籍适用的不同阅读方法

《学会提问》

作者:[美]尼尔·布朗等-机械工业出版社

相关思维能力:提问方法、如何思考问题

特点与推荐理由:

●批判性思维指南

●锻炼批判性思维,提出好问题

●学会理性分析推理

●克服偏见对判断的影响

《金字塔原理思考、表达和解决问题的逻辑》

作者:[美]芭芭拉·明托-南海出版公司

相关思维能力:如何思考、表达、解决问题

特点与推荐理由:

●学会问题思考的逻辑与练习

●掌握语言表达的逻辑与练习

●解决问题的方法论与练习

《卓有成效的管理者》

作者:[美]彼得·德鲁克-机械工业出版社

相关思维能力:自我管理、团队管理

特点与推荐理由:

●现代管理之父著作之一

●管理者应如何做到卓有成效

●管理者应具备哪些特征

我们身边总有这么两类人,一类人总是在抛出问题 ,不断地向别人寻求帮助,人称trouble maker。还有一类人仿佛什么都会,团队中遇到问题都会去找他解决,人称trouble solver。第一类人的思想依赖越发严重,逐渐发展成臭名昭著的伸手党,变身整个团队中的价值索取者,逐渐被众人远离。第二类人在成长过程中,解决问题的能力不断增强卖枯,逐渐变成团队的价值提供者,变得受人欢迎。

我们大多都希望自己远离第一类人,接近并学习第二类人,并希望自己变成第二类人。那么我们该唤迹如何培养这种解决问题的能力呢?

大多人提出问题的时候,通常都描述不清楚自己的问题,讲一大堆东西,大多是现状、心理感受。更多的是 表达 自己的情绪,希望别人了解你。但自己都不中链洞清楚问题在哪里,那么怎么能解决问题呢?

所以解决问题的第一步,是要澄清问题,真正的问题是要从现状寻找到引起现状的最小可能原因。比如下面的例子。

从现状不断的探究,寻找到最小不可观测疑惑点,然后针对最小疑惑点寻找对策,进而才能解决问题。而且大多数问题当你澄清到疑惑点时,你自己就可以解决了。

我十分赞同一句话,“** 提出问题是解决问题的一半,没有问题才是最大的问题**”。

trouble solver 并不是一开始就知道问题的答案,而是因为他有对问题有探究的意识,进而可以探究出问题的答案。

这是一个较好的问题澄清模型,来自好友马琦博士,当遇到问题时先按照这个步骤试图分析一下根源问题,大部分问题都能自己找到答案。

这是好友大卫发朋友圈的一个案例,我觉得挺有意思的,可以看看。

上周,听到一位德高望重的先生说道“央视的新闻联播也挺好看的”,很诚恳。我突然联想起之前的另外一位老师说,他每天都会看央视的新闻联播。我才突然明白,一直被我们嗤之以鼻的新闻联播,如果带着抽丝剥茧的观察力去解读它后面的含义,的确有非常高的价值。

质疑假的,会让我们发现真理。质疑真理,会更让我们捍卫真理。

所以解决问题,一定要学会质疑,质疑外界,也要质疑自己。

比如在常用软硬件 *** 作过程中,大多数人信誓旦旦的说着“我的做法不可能有错误!,但是结果为什么不对呢?”

他们的心理活动是:“我的 *** 作是正确的!但是结果和预期是不一致的!肯定是系统错了,真垃圾!那我没招啊!我需要找个人,一起证明下是系统错了!因为,毕竟不可能是我错啊?那只能找人看看呗”

真的自己没有问题吗?如果是一个成熟的系统或方法!我相信大多情况是你错了。

有质疑的意识,可以帮助你把质疑点观测区域放大,进而发现出真正的质疑点,从而解决问题。

良好的逻辑分析能力是解决问题最重要的工具之一,我们要养成归纳与推理的习惯。

确定问题有一个很好的方法,那就是单因素对照试验(控制单一可变变量,用实验组和对照组确定问题),这个是不断的缩小可怀疑对象、直到找到问题的最好方法。

尽量避免单因素决策法(就是认为只需要做好某件事就可以达成目的)!世界是复杂的,解决任何一个问题都可能很复杂!比如你要解决成功的问题!只需要靠坚持就行吗?

** 坚持是成功的必要条件!而不是充分条件!放弃也是成功的必要条件!**(《拆掉思维里的墙》)

生活中少用 “只要.....就可以什么...”“这个东西不就是.....”这种句式,避免使用过度的单因素决策!也避免把问题简化。

(《学会提问》)

你的问题并不是那么特别,减少使用 “虽然你的方法说的很好,但是我的情况是......”的句式。全世界60亿人.你的问题大多数人已经遇到过,互联网上大多有现成的答案。就算没有现成的答案,也有类似的答案!

而且别人并不是如同你那么了解自己,别人的方法自然也不一定能适用自己,要将别人已有的答案结合自己的情况,整理出自己的答案!

养成遇到问题先使用搜索引擎解决的意识!多用谷歌、百度、维基百科。

掌握搜索引擎的高级搜索方法(你看到这里第一反应是留言问我高级搜索方法是什么还是自己去搜索一下?)。

我解决问题的方式:

有时面对问题苦苦求索而不得解时,可能就是局限性的问题了。面对这种情况,不妨尝试跳出思维框架,或许有焕然一新的思路。

思考框架,就是你思考这个问题假设的基准。

比如在群里讨论 技术的未来时,有人提出 “人类是技术的一个宿主,等技术继续成长之后,人类说不定就灭亡了,技术会寻找下一个宿主”这种就很值得深思,它跳出来人类中心主义的思维框架,得出了不一样的答案。

昨天参加了一个活动,在自我介绍的环节,我看到每个人的自我介绍最开始的话是“大家好、我是.....”,那么我就在想,我能不能跳出这个定势思维?于是我故意在自我介绍的结尾才说出名字,事实证明,效果不错。

我们要经常拆掉思维中那些定势之墙!避免解决问题的思考局限于几个特定的点!(幽默是个很好的方法!)

显意识能处理较复杂的任务,逻辑性强,但是单进程。潜意识可以同时进行多项任务(比如你在此刻看这篇文章的时候,潜意识控制着你的呼吸、心跳、提问、眼睛都再进行正常的生理活动),而且发散性好。(《思考快与慢》)

用潜意识思考就是把问题放到思绪中,时不时的去想一想,用无意识的思考去思考。这种思考方式比显意识思考更具有发散性。

我一直坚持午睡,既可以为下午工作提供充沛的精力。附加收获就是午睡处于浅睡眠,可以得到很多灵感。曾经在实习的时候,我很长时间都被一个难题给困扰,连续几个重大进展都是在午睡中获得灵感从而完成的。

包括本篇文章,也是在2016.6.3号的早餐时间突然想到这么一个主题,然后边吃早餐,脑海中就冒出来好多关键词出来(随时记录),然后早餐吃完了,本文的框架也就全出来了,剩余也就是水到渠成的事情。

所以有意识地用潜意识思考问题,经常会带给你惊喜。

思想独立是这个世界最难的事情。信息爆炸、人的社会属性不断加强、产品过度(帮助你解决问题的方式)、思想教化都让大众的思考能力逐渐钝化。你不用太聪明、不用多厉害,依然饿了可以点外卖、要出去可以叫车,可以“快乐”地度过一生。

王东岳先生《物演通论》提出的“递弱代偿”原理指出, 世间之物,后衍的物种的生存的顽强程度总是呈现递减态势。250万年之前,非洲的人属开始演化,他们需要有强壮的肌肉、顽强的体魄、敏锐的视觉还要依赖良好的“运气”,才能侥幸存活,最终完成繁衍的生物使命。而250年之后的现在,肥胖、近视席卷了大部分人类,而我们大多都可以活到60岁以上。那么在很多年之后,那时的人类是不是连思考的能力都不需要有就能获得更好的幸福?那时他们还叫人类吗?

保持思想的独立,是努力在这个彼此依赖逐渐严重的社会中保持那么一点点自我!面对问题,有自己的思考方式、看待角度以及解决方式。是成为一个完整的人的重要特征。

互联网的时代,知识是扁平的在,只要你想学,你可以去自学所有你想学的东西。

多用自学的方式去学习一些东西,在增强你个人竞争力的同时,你的个人学习能力和解决问题的能力也会不断加强,独立解决问题的意识也会逐渐加强。这是提高解决问题能力的最好的办法。

我在学习专业知识的时候,经常使用搜索引擎获取答案。然而,在实际生活中遇到一些问题的时候,往往第一时间想的不是去搜索。比如错过了微信群里的通知、资料时,我第一反应是发问,看看有没有群里的人丢出来,但是实际上呢?我其实只需要用下群搜索就能知道结果啊?我可是自诩为搜索引擎的重度使用者呢?怎么会忘了呢?

刘未朋先生的《暗时间》里面对以上情况做了如下描述(有删改):

这就是知识经验跨情境切换的案例,刘未朋先生提出的解决办法是,多观察反省、多抽象本质,从而举一反三。

知乎大神采铜老师在新书《精进》中提到,如果要成为一个很厉害的人,必须有复合型知识结构,善于在所学的知识之间创造关联。让不同的知识进行融合,洞察知识背后的深层结构。发现它们潜在的相似性、互补性、启发性。

比如将“精益创业”思想融入写作? 本文就是分层写作法(不知道有没有这个东西)的应用

将程序员思维融入知识管理?参见我的另外一个案例

通过知识的抽象和关联,将知识进行迁移应用,从而更加多方面的思考问题,解决问题。

没有总结。

思绪

产生时间:2016年6月3日 早餐时间(30min)

第一次:

开始时间:2016年6月3日06:53:49

结束时间:2016年6月3日07:55:57

第二次:

开始时间:2016年6月4日09:35:15

结束时间: 2016年6月4日10:34:35

第三次:

开始时间:2016年6月5日07:16:09

结束时间:2016年6月5日09:36:00

作者简介:西子学院 AB先生(九届杭州创业班)

西子学院:和君九届发起,在坚持每两周读一本书的基础上,坚持学习至上、作品声音、同侪力量的正能量去中心化社群。

什么是西子学院? 点击我


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/12535917.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-26
下一篇 2023-05-26

发表评论

登录后才能评论

评论列表(0条)

保存