欧易

欧易(OKX)

国内用户最喜爱的合约交易所

火币

火币(HTX )

全球知名的比特币交易所

币安

币安(Binance)

全球用户最多的交易所

「经验分享」编程五年,才发现原来我还只是一个高级新手?

2022-10-09 17:21:08 332

摘要:我大二开始接触编程,如今已经过了五年,本以为自己即使没有多厉害,但是也好歹可以在社区指点一二了,但是最近发现自己不过是个高级新手而已!今天,我就来分享,我的所思所得,也希望忙于需求和解bug的程序员们来驻足一下,重新审视自己的思维方式。我的...

我大二开始接触编程,如今已经过了五年,本以为自己即使没有多厉害,但是也好歹可以在社区指点一二了,但是最近发现自己不过是个高级新手而已!

今天,我就来分享,我的所思所得,也希望忙于需求和解bug的程序员们来驻足一下,重新审视自己的思维方式。

我的办法

我自己在需求中遇到编程难题时,经常是这样解决:

将报错信息或者疑惑在google中搜索,大概率看到stack overflow网站出现,往后会有csdn,博客园等。

点进去,不看问题,先看最高赞的描述,如果意思和我的想解决的是同一个问题,就复制代码,大致改改,黏到我的项目中。

如果生效并有时间,我会认真理解这段代码,确保没有副作用;如果没时间,就直接过了,反正,能跑就行。

如果不生效,从步骤1再开始,如果stack overflow没有了,就选csdn……

靠着上面的步骤,我曾经解决过无数问题,但是有什么问题呢?我们来看下面的模型。

德雷福斯模型

这个模型,主要是按照水平将程序员分为5个阶段:

下面的加粗部分是水平的核心描述词,大家可以对照下自己处于的水平。

新手:靠着指令清单可以解决问题,但是需要脱离情境

但是一旦遇到与清单不符的事情就没辙,比如各种装机,配环境教程,一般新手遇到与教程不符合的场景就没办法了,所以这类教程一般需要详细再详细

高级新手:可以独立尝试完成任务,但是很难靠自己完全解决,高级新手不想要全局思维

他们想要快速获取信息。例如,当学习一门新语言或API时,你可能会感觉到这点,你发现自己会快速浏览文档以寻找一个方法定义或参数列表。你不想在此刻寻根究底,或者重新温习一遍基础知识。

高级新手能够根据过去的经验,逐步在正确的情境中采纳建议,但比较吃力。同时,他们能够开始形成一些总体原则,但不是“全貌”。他们没有全面的理解,而且的确不想有。

上面这段话,完全匹配我我解决编程遇到问题时的情景……读得我后背发凉,手心冒汗,要是我继续以前的方法,估计我就算工作十年,也仍然是一年经验循环十年的高级新手

胜任者:能够建立问题域的概念模型,有效地使用它们,并解决问题

我觉得一般每个组里面都有那么两三个人很让人很放心,几乎没有出过错,每次问进度都是顺利完成那种……

精通者:需要全局思维。他们将围绕这个技术,寻找并想了解更大的概念框架

这种就属于架构师级别了,一个很大的需求,能够拆解出对应的技术栈,分配给到对应的人处理,一般这种人都能当上leader,或者是组里面的救火队员,仅仅凭借听你的问题描述就大致猜出问题所在

另外,精通者属于靠近专家的水平,从胜任者到精通者是质的飞跃,大部分人一生只能到胜任者

专家:靠直觉工作,多的就不说了,这不是光靠努力就能达到的,不在我们今天的讨论范围

不知道你属于哪种水平,我现在,且预计未来两年内,可能都还是处于高级新手的行列,因为坦白讲,在我做需求时,我经常会遇到靠我自己无法解决的问题与知识缺漏,没有谷歌,我早失业了……

也不是说胜任者就不需要谷歌,只是也许不应该像我现在这么频繁。


关注情景,系统思维

我想大多数人都处于新手或者高级新手的行列,而高级新手要想达到胜任者,其实也是质的跨越,因为有一个思维的鸿沟需要跨越,如果不是天赋异常,或者读书,靠自己恐怕很难琢磨清楚

而现在,我就要告诉你,这个鸿沟是什么,以及去尝试跨越他

我先问个问题,人是什么?

如果你没有想过这个问题,可以先思考下,再继续看

古人说:人是没有羽毛的两腿动物

然后有人就将鸡拔掉了羽毛,说,这就是你定义的人

那么人到底是什么?

你会发现,从这个思路上走,你需要说无数个限定词,人是,

没有羽毛,但有头发,但也可能没有头发

两腿,但也可以一条腿或者没有腿

双眼,但也可以一只眼或者没有眼

……

根本无法下定义,因为你犯了上面模型中说的“新手”错误,也就是

新手:靠着指令清单可以解决问题,但是需要脱离情境

人的状态实在太多了,任何脱离情境的指令清单都无法全部囊括,只有胜任者的问题模型 和精通者的全局思维能够描述

比如马克思的:人是一切社会关系的总和

这句话,将人放入了社会当中,人不是独立的个体,而是系统特定功能的一部分

人的状态是无穷的,系统的一部分组合也是无穷的,无穷就可以穷尽无穷,只需要找到系统中具有共性的一部分作为人的定义即可

同样的道理

问题是什么?问题也不是独立存在的实体,是系统内部的元素交互产生的错误关系,我解决的不是某个独立的问题,而是将系统内部某些部分的错误关系,修正了

在解决问题时,除了看问题本身,还要看到背后的系统关系,抽丝剥茧,顺藤摸瓜,不断完善,即使前路漫漫,但这是从高级新手迈向胜任者的必经之路,也是建立问题模型的必要考验

这条路注定枯燥,所以需要有效的方法,每个人的方法各不相同,但是究其本质,需要满足以下四点

(1)需要一个明确定义的任务。

(2)任务需要有适当难度——有挑战性但可行。

(3)任务环境可以提供大量反馈,以便于你采取行动。

(4)提供重复犯错和纠正错误的机会。

比起更加枯燥的理论学习,编程开发,所见即所得,也许是最适合满足上面要求的领域之一了,毕竟当编译代码的时候,编译器永远永远忠实的告诉你,你到底出了多少错误。

掘金作者:小松漫步


对啦对啦!另外的话为了帮助大家,轻松,高效学习C语言/C++,我给大家分享我收集的资源,从最零基础开始的,帮助大家在学习C语言的道路上披荆斩棘!可以来我粉丝群领取哦~

编程学习书籍分享:

编程学习视频分享:

整理分享(多年学习的源码、项目实战视频、项目笔记,基础入门教程)最重要的是你可以在群里面交流提问编程问题哦!

对于C/C++感兴趣可以关注小编在后台私信我:【编程交流】一起来学习哦!可以领取一些C/C++的项目学习视频资料哦!已经设置好了关键词自动回复,自动领取就好了!

版权声明:本站所有文章皆是来自互联网,如内容侵权可以联系我们( 微信:bisheco )删除!

相关推荐

友情链接
币圈社群欧易官网