1. 我的工作经历
2019年7月,研究生毕业,入职A公司,从事通信协议测试工作。
2022年5月,离开A公司,进入B公司,首先是从事自动化测试开发工作,而后又转向负责稳定性测试工作。
2. 我的深度思考
2.1 分析过往
职业生涯的第一份工作是通信协议测试,其专业技术栈是:
1.NB-IoT/LTE/5G通信协议:只了解LTE/5G协议栈,而未能跳出协议看协议框架
2. FreeRTOS/嵌入式Linux操作系统:未曾想过软件系统架构,只盯着3GPP协议,而缺乏框架意识
3. C++/MFC/QT编程开发:钻研C++而未能持续深耕,喜欢钻研QT图形界面开发也未能持续学习
4. 软件测试理论:未形成测试知识体系
5. 项目管理理论:TMMI、CMMI
2.2 分析现在
职业生涯的第二份工作是稳定性测试/自动化测试开发,其专业技术栈是:
1. Android系统知识:未能系统性地深入学习Android源码AOSP,同时缺乏某个垂直领域的持续研究
2. Java/Python编程开发:
- 未钻研Java亦未钻研Python,都会也都不会
- Gradle项目构建工具,与Android系统强相关,但未真正了解
- Git版本控制工具,也只是基础入门,无法应对复杂问题
- Linux系统,是Android系统的基础,也未曾完整地系统学习,包含Shell脚本
- Bat脚本/Adb命令,不重点关注,会用即可
3. 软件测试理论:渐成自有测试知识体系,但是需要继续阅读软件测试理论书籍,未至精通
4. 项目管理理论:IPD流程、全集特性树,渐成自有项目管理知识体系,但需要持续积累
5. 行业技术洞察:属于新增能力,对于个人而言,需要重点人工智能/大模型/Tranformer,是未来的必然方向,也需要重视
3. 我的职业成长规划
由于我是一个完美主义的人,总是希望或者幻想自己什么都要会,这是个人意识的隐患,造成因涉及技术面广而不够专注、不够深入。虽然早已察觉,但是未能及时强行改正,导致多年以来技术深度始终不够,因此今日幡然醒悟,迷途知返,谆谆道来。
虽然,我将职业发展需要的能力都考虑到了,包括项目管理理论、软件测试理论、Android技术、Python技术、Gradle、Git、Linux、Shell、Bat、Adb,导致学习广度太广而不可控,感觉都会一点,但是感觉又都不会,处于尴尬境地。同时,基于完美主义或者是强迫症,在每天阅读微信推送的技术文章或者查看Bilibili推送的技术视频时,总是习惯性地收藏,但是不会认真阅读,时间久后,就会积累地越多。然后过段时间会整理,但是在整理时,我发现我好像只是知识的搬运工,不是知识的汲取者,并未真正地学习到技术。换句话说,就是费时费力而未见成效,准确地说是低效。因此,我的总结就是:
- 学习范围过广,缺乏深度专注
- 收藏多于实践,缺乏动手操作
- 没有明确的技术发展路径规划
- 完美主义导致行动瘫痪
于是,我重新制定了自己的职业成长规划,避免完美主义,专注于技术深度,真正地提升自己的技术实力。
3.1 从"收藏家"到"实践者"的策略改变
总体策略的核心是:"主导进程"与"奖励机制",即:
-
以Python+Linux学习作为主导进程、以软件测试理论作为奖励进程。
-
重实践、轻理论,先会用,再懂原理,用项目驱动学习,完美克服“纸上谈兵”和“收藏癖”
1. 时间沙盒策略
(1)周一至周五:每天晚上固定1-1.5小时为 “Python+Linux深度聚焦时间” 。期间手机免打扰,关闭所有无关网页,只做计划内的Python+Linux实践。
(2)完成后:在1.5小时之后,奖励自己15-30分钟的"甜点时间",自由地阅读软件测试理论的书籍或文章,无任何负罪感。
(3)周六至周日:安排一个更长的时段(例如2-3小时)给软件测试理论,作为一周专注学习的奖励。
2. 项目导向策略
(1)实践出真理:将所有的Python技术理论直接融入到Linux实践中,每天必须至少写15分钟代码,避免只看不练的糖衣炮弹。具体做法:用Linux去解决测试领域的具体问题。例如:
-
项目:“使用Shell脚本和Linux命令搭建一个自动化日志分析平台”。
-
学习Linux:你会用到
grep、awk、sed、cron、文件操作等所有你正在学的命令。 -
结合测试理论:在实践这个项目时,你自然而然需要思考:“测试中需要分析哪些日志?”、“如何定义错误模式?”、“怎样呈现报告最有效?”。这时,你再去翻看测试理论中关于“日志分析”、“缺陷管理”的章节,目的性极强,学习效率倍增。
(2)真正项目驱动,而非教程驱动:不要试图看完所有教程再开始。学完基础语法后,直接想一个项目(如“自动化整理我的桌面文件”),然后为了完成这个项目去查怎么实现。这是最高效的学习方式。
(3)接收"不完美":完成比完美重要100倍
(4)单一焦点:严格执行周计划,绝不看下周的内容。拒绝任何临时跳出来的新知识诱惑。
3. 文章发布策略
-
以"飞书"为文章本地主战场,以"稀土掘金"为文章发布副战场(包含思维反思),以"BiliBili"为视频发布副战场。
-
以建设主战场为首要,再牵引副战场。
4. "收藏癖"应对策略
(1)收藏时加标签:在收藏文章时,立即用两个标签分类,比如#Linux-性能优化和#测试理论-性能测试。
(2)定期清空收藏夹:每周六/周日下午,固定拿出1小时作为"收藏夹处理时间"。
(3)对待收藏夹的新方法:收藏一篇Python文章时,在备注里强制自己写下一句话:“我将在[具体日期]用这里的知识做一个[具体的东西]”。
3.2 总体规划
基于过往经历与现状,总体技术路线是:以Python为主轴,以Linux+Android为副轴,灵活地将Shell、Git、测试框架、数据分析、桌面应用开发、大模型/Transformer编织进来。Python系统学习路线图如下所示(持续更新):
下面是总体技术学习路线图:
4.我的第一步
第一个小目标:搭建Linux环境,如下所示,优先选择方案二,不会影响现有系统的正常使用。
第二个小目标:《Python软件测试宝典》,微信读书收藏的一本书,每学一个知识点(以节计算),不再关注记录了多少个知识点,而是更加关注使用这些知识点做了什么事情,说明你学了,动手了。
1.Linux 学习怎么办? -> “用Python来学Linux”
你的策略不是“另外抽时间学Linux”,而是 “强制自己在Linux环境下编写和运行Python”。具体做法:
-
环境准备:在你的电脑上安装一个Linux虚拟机(如Ubuntu)或使用WSL2。这是你未来所有的Python编码和学习的主环境。
-
第一课就是Linux:学习最基本的Linux命令来支撑你的Python学习。
-
cd,pwd,ls(进入你的项目目录) -
mkdir(创建新的Python项目文件夹) -
python3 my_script.py(这是你最常用的命令!) -
vim或nano(简单编辑一下文件,但主力还是VS Code)
-
-
-
实践融合:
-
目标:写一个Python脚本,自动整理某个目录下的文件(比如按后缀名分类)。
-
你学的Python:
os模块、shutil模块、文件路径操作。 -
你同时练的Linux:你在Linux终端里频繁使用
cd,ls来查看脚本是否生效。 -
结果:你既学会了Python操作文件的核心技能,又无形中巩固了Linux基础命令。你用Python给Linux学习提供了目标和场景。
-
2.软件测试理论怎么办? -> “为Python自动化项目而学”
你的策略不是“抱着理论书啃”,而是 “为了给你写的Python工具增加专业性而学习测试理论”。
-
具体做法:
-
学习Pytest:这是Python世界最主流的测试框架。它本身就是测试理论的完美实践。
-
实践融合:
-
目标:给你之前写的“文件整理脚本”增加单元测试。
-
你学的Python:Pytest的用法、如何写测试用例、
assert语句。 -
你同时学的测试理论:你正在实践单元测试的概念、测试用例的设计方法、断言的概念。你写的每一个
test_开头的函数,都是一个测试理论的鲜活例子。 -
结果:你不再觉得测试理论是枯燥的文字,而是能立刻让你Python项目变得更健壮、更专业的实用工具。
-
-