新手上路有多难?
这个问题其实很常见。
特别是对于初学者来说, 往往会有一种感觉, 那就是会觉得这门语言的外观是很简单的, 但是为什么会感觉到学习的过程是如此的吃力呢?
我记得我在才刚刚进入这一行当那个时候, 因为偶然的原因, 被一位从事数据相关工作的人员所取得的成果给惊呆了, 他讲出来的一段话的内容是指称在去年的期间里面使用了我之前可能忽略掉的一个手段, 从而使他自己承担的工作任务的数量达到了翻一倍的增长状态, 同时他完成这些工作的速度或者效能也被评价为是提升了有三倍那么多的幅度。
这话听得我心里头突然动了一下, 差一点就让我觉得, 难道说我自己这边也是非得去学一下这个不可。
但实际上,刚刚开始接触,不少人都像我一样,踩了很多坑
我对于第一天的记忆, 那是相当深刻。当时我一拿到书本, 就抱着脑袋在那儿拼命地读, 把变量、循环还有条件语句这些内容往脑子里塞, 那种痛苦的程度, 真就像是在高中时期进行紧急补课一样糟糕极了。
而且那天还特别固执, 非要把 print('hello world') 这行代码抄写十遍, 心里想着那样就能够确实掌握一点知识了。但是结果却是, 头两天过去, 我根本就没搞懂任何东西。
后来发现的情况还不错, 大家学习的道路实际上真的没有必要搞得那么死板。
重新来说一下第一个这个坑, 我开始的时候疯狂地吃透那些很厚的教科书, 把所有的那些很高的上大的概念都硬生生地塞到了我的脑子里面去。结果呢就发现, 这些知识对我实际工作的帮助可以说是几乎没有。
举一个非常具体的例子的话, 像我们常用的装饰器以及类的继承这种东西, 我根本就不需要用到它们。所以反过来看的话, 把时间和精力花在去理解那些基本操作上面, 会显得更加现实一些。
后来, 我明白了这样一个道理。想要把问题解决掉, 并不是要把所有的语法知识都背下来。而是需要借助于去处理那些非常具体的问题例子。比如说在进行数据合并, 或者是进行Excel文件的读写操作的时候。往往只需要用到寥寥几行代码就可以了。如果你只是去死记硬背了几十个函数, 那么这些函数也未必派得上用场。
第二个坑, 就是我那个只看着教程而不愿意去实际操作的情况。关于这一点, 我也是有着非常深刻的体验与体会的。具体表现就是, 每当我为了去搞明白某一个API是怎么回事儿的时候, 我会把相关的教学视频完整地看完, 然后在看完之后就会产生一种错觉, 觉得自己已经彻底理解并且掌握了这个知识点。
但是结果, 真的到了需要编写脚本代码的那个环节, 我就连最基础的一个文件路径都搞不清楚或者说弄错了。在前几次遇到这种问题的经历中, 我耗费了非常漫长的时间, 到最后才发现, 问题竟然是因为我在输入或者确认路径的过程中, 不小心遗漏掉了一到两个字符这么简单的原因。
当时我一下子就想明白了, 学习这件事, 只有看书和动手练习同时进行才是真正的方法。在真实的工作场景中, 写代码这件事情实际上和做科学实验非常类似, 犯错并且通过试错来发现问题的过程是绝对不可缺少的环节。
正确的做法应该是先把别人写好的代码拿过来抄一遍, 然后再自己动手去修改里边的各种参数设置。通过这样反复的操作和调整, 才能够让自己对相关的知识点有更深刻的理解。
再说一下第三个坑, 就是那种一定要追求高大上的心态。你会观察到, 有一类人, 他们脑子里面总是想, 只要把这个技术学会了, 那么自己就能够去制作网页爬虫,还或者能够去搞那个AI模型。
我自己, 当初也是抱着这样一种信心, 想着将来要靠这个能力去立足,可是结果却是什么情况, 结果是卡在写一个自动批处理文件这个问题上面解不出来。
到了最后的最后, 才弄明白一个道理, 那就是应该先把注意力放在解决那些比较小但是很实际的痛点上, 就像说自动去整理每天的工作日报, 又或者是自动的去给文件夹里面的文件做重命名, 先干这些小事, 做事要稳当一点, 一步一步地走, 不要急于求成。
每完成一个小项目, 内心都会感到特别的满足, 这种成就感是远比盲目去追逐像大神那样设定的目标要来得强烈的。
自己在技术链条上上面摸索, 也让本人体会到, 在产业链里面, 硬件、软件以及算法, 它们其实是环环相扣的, 比如以前尝试过做一些硬件自动化方面的事情, 像是用树莓派来控制温度传感器, 虽然这个看起来是很简单的, 但是看到硬件和代码结合在一起的时候, 那种感觉才让人觉得, 好像是真的用上了。
这事情让我对技术的魅力有了重新的一种认识, 这种认识不是那种没有实际内容的空泛的理论看法, 而是能够被应用到咱们日常生活里面的那些内容当中去的一种感受。
环境因素也是非常关键的这一点, 虽然不排除我自己在慢慢总结的过程当中所积累的经验可能会显得比较有限, 就比方说在小公司那边所使用的自动化平台以及相关的工具, 它们通常情况下是没有那些非常高大有档次的硬件来进行支撑的, 因此, 在大多数时候实际能够使用到的那些方案, 往往要比那些看起来非常华丽的理论方案要实用得多, 把时间节省下来、让界面显得更加友好并且容易上手操作, 这才是真正的主导地位。
说到这个点子的话, 其实我从前曾经走进了一个叫做追求完美的错误陷阱里面, 看到旁边有人在进行PyQt的GUI开发工作这件事的时候, 就觉得自己肯定也要去这样做一番, 结果自己亲自去动手折腾了两个星期的时间之久的事情, 最后发现除了界面的整体布局看上去是比较漂亮这一点之外, 在程序功能的实现方面依旧是非常混乱且糟糕透顶的情况, 到了后来才终于想明白了这样一个道理, 即在刚开始进行项目开发的前阶段, 不要过于地执着于去追求那种完美无缺的操作体验水平, 最好是首先使用最简单的界面形式来进行设计呈现, 并且一定要确保基本的功能能够顺利实现完毕之后再考虑其他的事情。
这个经过让我想起一个同行的说法是, 不要去开始的时候就去追求是最优的情况, 是要学会怎么用那些最基础的工具去做最关键的事。
这一点, 我常常会去提醒身边的亲朋好友, 意思就是不要把自己给逼得太紧了, 学习方面这件事并不仅仅是去堆积那些项目内容, 它更重要的一个方面在于去积累自身的思维角度以及如何解决问题的实际能力, 有时候观察一下别人能够花费一整年的时间来完成某件事, 而自己仅仅只用了两个月的时间就把同样的事情给搞定了, 这其中的原因其实并不是很难被发现, 核心问题就在于其他人所关注的焦点会显得更加集中一些, 他们设定的目标也会变得更加明确清晰。
当谈到具体的数值的状况, 我个人做了一个非常粗略的估算。我是用了大概有3个月的时间, 才算是彻底学会了那些基础层面的命令以及使用方法。
这个过程里, 我没有去强迫自己遵循那种追求完美的学习规划, 而是完全依靠每天实际动手来写一些小型的工程项目, 进而一点一点地把相关的技能给积累起来的。在这个经历之中, 我遇到的最好的一个办法就是——要去动手做。
如果能够将那些碎片化的、零零散散的时间段, 投入到去编写代码以及进行调试的相关工作当中, 那么其所能产生的实际效果, 毫无疑问会比单纯地去看各种书籍或者聆听相关课程所带来的学习效果要更好得多。
我自己曾尝试与一些行业的同仁们展开交流互动, 向他们提问: 在学习的过程中, 你们觉得最大的体会和感悟究竟体现在哪里? 对方的回答大多是, 相比于单纯地掌握某一项具体的操作技巧而言, 内心深处更加在乎的是如何借助既有的工具来妥善解决现实生活中的实际难题。
比方说, 我认识的一位朋友就曾向我讲述过他的经历, 他说他会使用特定的工具来自动执行图片的打包任务, 经过这样做的结果就是, 他因此每天能够节省下来两个小时的宝贵时间。
听到了这个之后, 我也开始进行反思活动了, 也就是说, 我们不能够只是去追求技术的深度方面的一些事情, 而更加重要的, 是要找到各种各样的办法, 使得自己的工作能够变得轻松一点。
对于这个问题, 我们以后还是可以接着深入去探讨的, 具体的内容可以包括自动化脚本那种比较高级的使用方法, 或者是关于怎么更加合理并且有效地去安排学习方面的计划这些事情。
不过, 大家刚开始着手做的时候最最感到害怕的那个点, 往往是缺少那种踏踏实实一步步来的态度, 所以大家千万不要给自己施加过大的心理负担, 步子放缓一些没有关系。
只要你真心实意地去做哪怕只有一点点的内容就可以了, 同时还需要把那些复杂的问题划分成一个一个最小的功能模块, 然后针对每一个小模块去逐个进行解决, 这样做就算达到效果了。
其实我个人是非常喜欢这一句话的, 那就是编程它是属于一门工程方面的学科, 它并不是一种狂欢性质的行为, 所以我们务必要记住一个重点, 就是不要为了去追求那种所谓的完美状态, 从而自己陷入到一种死磕的死胡同里面去, 就算是把每个小脚本都写得比较简陋一些, 这种情况也是要比对着那张空白的纸张强上许多的, 毕竟我们所说的积累就是这样子发生的一个过程, 我们要做的就是从那些最基础的东西开始着手去做, 然后通过一点一点的慢慢积攒, 最终达到积少成多的这样一个效果。
你仔细瞧瞧, 这些经验看起来虽然很普通, 不过亲身经历过那些错误的人, 心里却会觉得这是实实在在的。我不知道你到底是不是也有过这种特别痛苦的经历?
也有可能咱们都走在相似的路上, 一边不断地去摸索, 一边去调节自己前进的速度。你不要害怕, 也不要恐慌, 只要你坚持每天向前走小小的几步, 肯定能够达到更远的地方的。
这部作品是属于作者亲手创作的, 里面的内容都是靠人工做出来的, 不过在创作的时候也用到了人工智能(AI)工具来帮忙生成了一部分。让AI去帮忙整理资料、把语言改得更漂亮、把表达弄得更优化、或者去拓展一下灵感, 这些都是它提供支持的方面, 但是核心观点和主要内容还是由作者自己一个人独立完成的。