前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >手持 Python 利剑,一路向前

手持 Python 利剑,一路向前

作者头像
企鹅号小编
发布2018-01-24 16:20:03
6040
发布2018-01-24 16:20:03
举报
文章被收录于专栏:编程编程编程

学习 Python 课程究竟有什么用?Python 课程学员假牙运用课程所学,在工作中设置自动化检验脚本,为团队排除 bug 规避风险。「最难受的时候再坚持一下,不要轻易放弃。放弃这种事儿,等到多试一次再去考虑。」从磨砺、失败到成长,假牙的学习经历值得一看,其学习感悟更值得你借鉴!

我是假牙

软件测试工程师一枚,主攻大数据方向。Python 课程期间因 Scrapy 爬虫初窥其神奇,这一年来开路填坑,也幸亏手中握有 Python。数据科学基础班三期参与复训,获得全额学费退还。我将继续在开智课程的路上勇猛精进。

磨砺

学会用 Python 编程是一件我从大学时代就在不断规划的事情,且屡试屡败。但最终还是在大妈的带领下,找到并达成了跳出循环的条件,然后执行了数据分析基础班(两次)。现在,准备投身深度学习。

当初报名,只是想要一把利剑,完成一个技能的收藏。在大妈言传身教的启发式教学方法的指导下,种下 Python 这棵技能树,才发觉我得到的是铸剑术,进入了一种「不服写点 Python 」的状态。

今年初,加入新项目组,遇到了一个尴尬的问题。我们产品基于一个内部工具构建,但是这个工具对开发者并不友好,很容易在开发和修改的过程中引入各种 bug,而且几乎只能在运行态才能发现这些问题。测试团队指责开发团队提供的产品质量低下,开发团队转而指责内部开发工具能力太弱,火药味儿很重。换一个开发工具?不行,这不在选项列表中。

这有点像 Python 基础班的时候,要求大家禁止使用 IDE 写代码,只能通过文本编辑器写出一个个的 .py 文件。对个人学习来说,这种放开手让自己犯错的方式确实很有用处,毕竟你不闹几回 敲成 、括号不匹配,是很难静下心来对待的。但对产品开发来说,这种套路就是灾难,因为这会降低开发测试效率,降低最终交付的产品质量,影响项目进展等等。

于是我决定用 Python 写一个静态扫描工具,在不依赖运行环境的情况下,发现尽可能多的问题,让开发修改。原型花了一周左右的时间,然后不断增加功能,优化扫描结果的日志。到前几个月停止维护,这个工具的代码行达到了 3k 左右,能识别出所有的静态问题,也能识别出只有产品运行才能发现的 bug。

之后,写了 Nmon 日志的解析脚本、MapReduce hist日志的解析脚本,基于数据科学基础班学习到的数据分析和可视化的技能,又给这些脚本增加了图形化的能力。月初,用 Flask 写个 Web Server 来当跳板机转发自动化执行机发出的 REST 请求,绕开了大小网环境网络不通的问题。周末加班玩了下 Fabric,又有信心做部门 500 多台服务器的日常维护了。

失败

「铸剑术」提供的优势是:见招拆招,四两拨千斤。在跨界或者领域交叉的情况下,这种优势会展现出降维打击的效果。可是,从 Python 基础班、数据科学基础班的经历来看,「报名参加课程」与「习得技能」并不等价,总有小伙伴没有走到终点线。

拿下 Python 课程,数据科学第一次课程失败,数据科学第二次课程再次成功完成。结业的时候,我总结成功的经验为「坚持」,想要放弃的时候再尝试一下另外一种可能。现在看来,这两个字总结的简单粗暴。

失败可以分为两种,系统性失败和非系统性失败( http://t.cn/RGk5uRJ ),偶尔遭遇技术难题导致作业不能准时提交,或者学习进展暂时阻塞的,其实只是非系统性失败。这种失败是良性的,可以通过上面说的「再尝试一下另外一种可能」或者求助他人从而得到解决。

但阻碍的自己没能走到终点的,更多的是系统性失败。系统性失败的原因有几种:短期压力与长期目标冲突;周遭环境不利于实现目标和工作时间过长。

数据科学第一次课程的失败其实受多个因素的影响。具体来说,自己原本存在拖延的习惯,没有将每周任务拆解落实到每天,期间突发出差任务导致工作时间过长(每天工作十几个小时)。拖延症碰上没时间,死局。所以在数据科学第二次课程的时候,不管发生什么事情,拼死确保周末两天有足够的时间投入学习,采取各种措施来规避系统性风险。

从理性的角度来考量,这次的深度学习班也有可能失败,逆向思考一下失败的可能原因:

突发出差或者工作任务过于忙碌,导致课程学习时间投入不足

学习「深度学习」的门槛知识不满足,影响课程消化

继续犯拖延症,或不能很好得处理好短期压力与长期目标之间的冲突

日常练习不足,影响对基础知识的理解,进而根基不牢

成长

但,再次失败了也没什么。单纯的结果导向,是僵固型心智的表现。

非系统性失败指出了具体的改进方向,是优化、夯实系统内部要素的机会。系统性失败暴露出系统本身固有的缺陷,描述了当前框架下的瓶颈与极限,其意义就像是鱼儿终于发现了水。这两者都指向了「学习」的根本目的:改变。

第一序改变处理非系统性失败,在不改变原有系统的前提下,对系统内部元素、元素间关系进行优化。第二序改变则是改变系统本身,即改变自身时间管理能力、改变自控力、改换一个有助于实现自己目标的环境。

所以,不管是 Python 班还是考驾照,技能学习仅仅是一小部分,更多的是要学习新的思维方式,反思自身时间管理能力、自控力、学习方法、固有的方法论,后者才是更需要 Study and Practice 的对象。扔掉单一标准,使用多维视角来看待分析问题,这样才能前进得更远。

本文来自企鹅号 - 开智微播媒体

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文来自企鹅号 - 开智微播媒体

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档