易旅游网站建设,宜昌网站建设开发,南京广告公司排名前20,开发平台都有哪些我的同事在看到毫无开发经验的我用三周时间#xff0c;不但从零基础用上了 Python#xff0c;还做出了一个客户关系管理系统#xff0c;强烈邀请我分享经验。惶恐#xff0c;因为我并没有出色的智商#xff0c;也没有觉得三周学 Python 是一个体现自己牛叉的事情(不少人可…我的同事在看到毫无开发经验的我用三周时间不但从零基础用上了 Python还做出了一个客户关系管理系统强烈邀请我分享经验。惶恐因为我并没有出色的智商也没有觉得三周学 Python 是一个体现自己牛叉的事情(不少人可能用一周左右就可以做到)思考过后我还是答应了同事的邀请复盘总是一件能让人获益匪浅的事。首先我接触 Python 也就几周不可能分享 Python 的技巧和经验其次通过对同事需求的分析我发现他的真正需求并不是学 Python 这件事而是他感觉我比他高效。于是我写下了这篇心得以供那些有意愿却未能有机会来参加我分享会的朋友们。绕不开的三个终极哲学问题我是谁- 我是一个全球分布式云存储系统的软件测试工程师常年工作在 Linux 平台下。- 管理过 20 人的测试团队负责测试交付。从哪里来- 曾就职于一家外经公司的国际劳务部管理大量出国人力资源资料档案。- 现任一家软件公司软件测试工程师负责一个全球分布式云存储系统的测试。要到哪里去- 短时间内掌握 Python期望能学以致用。所谓「人生苦短我用 Python」它向我敞开了编程之门。分析态势为什么要花时间研究这三个问题因为我可以在此基础上分析出我的优劣势、机会和威胁也就是肯尼思安德鲁斯的 SWOT 分析法。只有清晰了态势才能规划出一个明确、具体且能追踪管理的实体化目标而非面对一个空虚无法明细的愿望。当时我简单列了一下优势- 拥有 Shell 这一初始技能- 有自动化测试经验- 专业的灰盒测试技能使自己同时拥有客户视角和开发思维- 作为一个大型分布式存储系统的测试经理具有很强的项目管理能力及交付经验- 可以把 Python 作为工作中的一项改进内容劣势- 没有任何语言的开发经验- Python 零基础机会- 网上有不少优秀的 Python 教程- 业内比较看好 Python- Python 可以像脚本一样使用- 项目组内鼓励自我学习型工程师威胁- 平时为追求工作效率可能会使用熟悉的 Shell 而非生疏的 Python- 工作中不要求使用 Python立项分析完之后我制定出了第一个实体化的目标熟悉 Python 思维把工作中现有的 Shell 脚本用 Python 重写。何为 Python 思维我并没有把这个名词定义得多么玄乎其实很简单就是在拿到一个需求的时候我知道从何下手并且能熟练的反应出用 Python 语法不让自己觉得很痛苦。所以当我能够把目前工作中所使用的 Shell 脚本都转换成 Python 的时候就肯定能达到这个效果了。为了达成这样的目标我列出了约束这个项目的三大要素范围- 范围跟目标不一样目标是个最终状态而范围包含了具体要做的事情。- 比如到底要学哪一款教程具体要把哪些脚本重写。时间- 总周期一周。- 为什么逼自己这么紧虽然这个项目看起来不需要花费金钱但这项任务一定会耗费自己很多的非工作时间这些都是应该计入成本的时间就是金钱战线拖得越久损耗越大。- 那这个时间是拍脑袋想的吗当然不是我制定了更详细的日程表后面会提到。资源- 网上的教程很多其实只要认定一个专心看下去都是可以的不必纠结哪个教程最好。我直接搜索了一个在线阅读起来也比较方便的图文教程为什么没有选择视频因为太费时间有时候为了提速我必须要一目十行。- 人力资源很纯净就我自己一个人。- 另外还有一类资源不能忽视随身的笔记本电脑和流量充裕的手机。想要短时间内完成目标必须用上所有可能的时间。有些人觉得零散的时间无法运用我不完全认同。零散的时间可能无法专心编程但可以用来做搜索式学习以强化或者探索学习过程中遇到的问题点所以笔记本电脑用作完整时间的学习手机则是用在碎片化学习的时间中。计划由于只有一周时间所以必须要把时间表细化到每天、每半天、甚至每个时间段比如上班前、中午休息时间、下班后还需要考虑到一些影响因素比如就我来说那一周里面有一个已知的未知状况 —— 可能要出差一天但是预估应该只会占用上班时间所以判断它不会影响进度。时间表不仅仅是思考自己有哪些可以利用的时间段还要计划每个时间段做什么比如哪几个时间段学习学习的具体章节几天之后就要开始脚本重写具体写哪个脚本越详细越好。控制进度每天按照计划的时间表来学习想按时完成教程一般都不会出现状况。意外多会发生在实践阶段比如我经常会发现费力写了一段代码竟然是重复造轮子因为早有人提供了使用起来更方便快捷的第三方库。对此我并不丧气因为我的目标是完成 Python 学习而不是利用最高的效率去写 Python 程序虽然别人已经造好了轮子但我练习了基础锻炼了 Python 思维不亏但它着实影响了进度。每个时间段我都会检查自己是否按时完成进度。如果落下进度只能赶工怎么赶如果真的压缩了工作之外的所有时间那么只能选择稍微牺牲一下睡眠以不影响第二天工作为限。那些「保证睡眠时间」的鸡汤文就不看了天道酬勤才是真理。风险评估但即使这样也难免还会出现失控。当我发现连续两天也就是差不多 6 个时间段的进度都未能达成时我意识到最后的目标肯定要延期了。虽然有点沮丧但并不觉得难以接受项目延期实在是再正常不过的现象了。需求变更在我分析完延期的主要原因是在于时间没有供给充足比如出差那一天的时间远远超出我的预估以至于相当于少了一天的练习。我开始考虑的是延期两天完成目标虽然这是一个非常合理的需求但在第二天我就改变了主意总觉得少了点什么。于是在分析了 SWOT 之后愿意接受增加范围带来的影响对自己提出了一个重大的需求变更- 范围从「把所有 Shell 重写」变更为「挑选两个脚本重写用 Python 写一个客户关系管理系统」- 项目完成时间由「一周」变更为「三周」之所以选择做一个客户关系管理系统是由于我曾经每天都要管理几百人的信息资料对此类信息的管理有一些理解另外因为斜杠青年的身份我也需要这么一个 CRMPython 的简单易用也让这个目标变得可行。由于这一重大变更我不得不重新启动、规划、执行、监控。变更后的项目其实包含了两个目标了所以我的内心是把这次的项目当作两个项目去管理的 CRM 的实现更多还是站在了产品经理的角度去管理。最终我按时完成了预定目标做出了一个适合自己用的 CRM这个 CRM 并不完美当时甚至没有图形界面但它实现了从无到有。(第四周结束的时候我又迭代完成了两个大版本的改进但由于没有产品开发和架构设计的经验导致在第三版的时候几乎重写了所有逻辑)正如一开始我说的一样这不是一篇 Python 的快速学习指南更像是 PMP 的文章我的整个过程涵盖了 PMP 五大过程组。在这次的项目中我接触到了很多新知识、新工具甚至对于产品的架构设计也有了理解希望分享的这次心得能和大家一起进步让自信的朋友更肯定自己让怀疑自我的朋友突破自己。