个人说明书 v2.2.5
什么是个人说明书
很喜欢《纳瓦尔宝典》中的一个观点,“把自己当做产品,努力推销出去”。无论是面对雇主还是朋友,当我将自己视作一件产品时,首先想到的便是如何以最快、最全面的方式展示自己,就像一份精心编写的产品说明书,突出最重要、最有意思的部分,也就是你最感兴趣的东西。
当然,通过整理这样一份说明书,也让我更深入地认识自己,明确自己的优势和不足,理清生活的目标和未来的发展方向。
版本号
当前版本号:2.2.5
作为一个软件工程师,发布版本是再熟悉不过的事情了。将自己视为产品,自然也需要不断的更新和完善,所以就需要版本号。
我的版本号采用三段式,更新策略为:
- 职业赛道发生变化时,更新 Major version
- 就职公司或岗位发生变化时,更新 Minor version
- 每个版本内的修改和完善,更新 Patch version
我的基本情况
- 网名:P2Tree
- 职业方向:目前我专注于基础软件开发,也就是编译器、操作系统驱动软件、工具软件及嵌入式软件等方向
- 职级:Senior Software Engineer
- 性格特质:我的荣格八维特征是 Si Fe Ti Ne,对应 16 型人格是 ISTP,不过我还是喜欢荣格的理论。
- 强烈的 Si(内倾感觉)作为主导特质,喜欢依据经验做事,对细节异常地在意,乐于成体系地整理知识
- 辅助为 Fe(外倾情感),希望看到集体的和谐,能在意到他人的情感需求
- 逻辑严密的 Ti(内倾思维)作为第三功能,善于构建理论框架,逻辑思维强,乐于追求事物本质
- Ne(外倾直觉)是劣势功能,潜意识希望自由不受束缚,想要无限的可能,但却不敢付诸行动
- 我倾向的环境:喜欢有条理有秩序、安静整洁的环境
- 我的爱好:
- 玩电脑游戏:一个好游戏,可以扩展我生命的宽度和广度
- 阅读好书:这是与跨越时空的智者沟通的唯一途径
- 养花:植物有生长与凋零,人生有潮起和潮落
- 医学常识:生命是大自然最精妙的设计
我的沟通方式
对于正式严谨的沟通和讨论,我更喜欢通过邮件或聊天工具交流,一方面可以方便整理思路,另一方面也便于回顾和总结。
对于技术讨论和头脑风暴,我希望面对面拿着笔和白板聊,这样更有利于准确传递没有经过修饰的信息。
非技术性的会议,我不喜欢讨论超过半小时,比如工作汇报。类似的沟通内容我更愿意落实到文字中。
我的技术栈
我能解决的问题
任何在 Linux 操作系统上的软件开发工作。很长一段时间我都在 Linux 上工作,曾经做嵌入式设备时,有一些平台部署了 RT Linux 系统,我也完成过一些驱动软件和应用软件的项目。即使我没做过,我也可以很快通过学习掌握相关技能。
任何在 LLVM 软件栈上的软件开发工作。我过去的工作都在 LLVM 项目上完成,无论是编译器,还是模拟器和类似的 toolchain 工具。我对 LLVM 提供的软件库和工具都比较熟悉,可以快速搭建原型,也可以对老项目做维护和重构。
虽然很久没有做嵌入式的工作了,但我依然可以提供技术咨询的工作。过去大概有三四年的时间,我负责或参与了一些很有挑战性的嵌入式项目开发工作,积累了不少经验。另外我还有一些能力很强的朋友,可以提供咨询。
我很乐意做一些文档整理、格式排版、UI 设计的工作,虽然我并没有系统的学习过类似内容,但我也确实完成过一些反响不错的业余作品,我对此充满热情。
我不擅长的工作
- 通过说服对方来接受自己观点的工作
- 枯燥乏味且重复性强的工作
- 要求经验积累多于专业深度的工作
我期待的工作
我特别希望能做一份和机器人相关的工作。我喜欢智能化控制的设备,也特别看好这个行业的发展,尤其是智能驾驶和自动化工业。我过去的履历中相关的工作非常少,所以大概率不会贸然切换到这个赛道,但我依然埋下这个种子,期待未来时机成熟时,能够迎接新的挑战。
我做过的项目
GPGPU 体系架构指令集模拟器
我最近的一段工作经历是做这样一个模拟器软件。我所在的公司是一个 GPGPU 芯片公司,我在软件团队的工具链组,主导模拟器软件的设计、开发和推广工作。
模拟器软件对公司第一代芯片做了指令集层面上的完整模拟。可以通过多个 benchmark 的验证,模拟器已投入到其他软件团队的软件验证工作中,并在公司内部得到了很多认可。
最初,我从大佬同事(现在是我的 Team Leader)手中承接了 Demo 级别的软件雏形,并在之后的几年中,将其从 Demo 开发为工业级的产品。整个过程中,大多数时间只有我独立在支撑。
期间短暂地也有同事协助开发,也使得我有机会认识了工作上新的挚友(被他喊了几年 “师傅”,惭愧啊),也锻炼了自己一丝丝的管理能力。
不过可惜的是,这几年一直没有真正遇到我的导师,摸爬滚打之间,还是缺少高人指点。
LLVM 后端入门实践教程
业余期间,整理完善了一份 LLVM 后端入门实践教程,原本是整理自己学习的笔记成文,结果发表出来后在网络上反响很好,于是便重新整理了全部内容,并提交了项目的代码。
这个教程采用相对通俗的语言,使用流程化的步骤编写,旨在指导以最轻松的方式接触 LLVM 后端开发的内容。
这个项目教会我最多的并不是 LLVM 技术本身,事实上我在几年后的今天,已经忘记了其中大多数的内容(遇到问题还会没事翻翻)。它教会我最多的是,输出自己的知识,总有你可以帮得到的人和事。而且反过来,这件看似无偿付出的行为,一定会回报自己。
项目代码:P2Tree/LLVM_for_cpu0 (github.com)。方便的话,可以帮我点个 star 吗?实话说,现在工作忙,没空重写这份教程了,将来有空一定翻新一下。
蓝牙手套与行走姿态捕捉设备
第二份实习工作期间的主要成果,是可穿戴式移动助力设备的一部分。蓝牙采用 BLE 4.0 协议,使用芯片配套的库开发应用层业务,主要功能是手套上设计了几个触摸按钮,按钮连接蓝牙 SOC,通过协议发送到背部的计算设备。
手套部分的电气硬件和软件开发由我独立完成。花费较多时间的地方是平衡蓝牙功耗和唤醒响应速度的需求。
另一个工作是行走姿态捕捉设备,也是可穿戴式移动助力设备的一部分。在腿部服装上安装有多个数据采集器,由蓝牙 BLE、陀螺仪、加速度计组成的微型模块。采集姿态数据,并发送给背部计算设备汇总。汇总后的数据使用隐马尔可夫链来推测关键行走姿态。
腿部捕捉设备的软件开发由我独立完成,行走姿态估计由我和另一位同学一起完成。比较困难的地方是姿态估计的部分,需要大量时间调参。最终效果自认为不太理想。
实习公司叫 北京铁甲钢拳科技,老板是一位非常潮的北京人儿,公司氛围很好,有一帮有梦想有志向的年轻人,如果不是要回学校做课题,舍不得走。第一次体会了真正的创业公司精神。
室内定位机器人
这是我的研究生毕业课题,也是我的导师参与的一个项目。我将项目的一部分单独拿出来,实验验证和引入新的技术,并编写了毕业论文。
机器人为圆形轮式底盘,传感器有激光雷达、红外测距、超声波测距、Wifi。这些是我主要负责的部分。机器人上其实还有双目摄像头和机械臂结构,是另一位老同学(我现在的好伙伴)负责的部分,他负责的视觉定位理论上可以和我的结果做融合,不过最后没时间做完就毕业了。
我的主要工作是通过采集的距离数据对机器人周边环境做二维建模,实现室内小范围精准定位和避障;再通过 Wifi 标签的原理在室内较大空间做到精准定位。定位精度可以做到 50cm。
机器人的主控操作系统是 Linux,运行 ROS,如果你懂这块内容,就会知道我的很多工作在 ROS 上已经被支持了,我当时还只有 ROS 1,功能并不完备,所以我自己也完善了很多内容,包括编写 Linux 驱动采集数据输入 ROS、gmapping 时调参来过滤无关数据。
机器人技术一直是我的一个爱好,可惜造化弄人,现在再想回头换到机器人赛道,需要太多的勇气。如果有机会,我还是会选择抓住它。
项目代码:P2Tree/movingCatchRobot (github.com)。没啥值得看的,曾经的小打小闹。
建筑材料分析测试仪
我的第一份实习经历。主要工作是开发几款不同的建筑材料分析测试仪器,用于测试不同建筑材料的一些参数,比如混凝土的导电率。
我和另外一位老同学(我现在的好伙伴)一起,负责仪器的电控部分,我负责上位机与通信,他负责板卡的数据采样和滤波。老同学比我能力强,从他那里学到了好多好多知识,我很庆幸在求学的最后一个阶段遇到了他。他留学回来后,现在在高校任教,强的可怕。
期间我学习了工控机的开发、工业通讯协议 RS422 和 modbus,以及点出了可观的抗压能力。我们经常需要熬夜开发,出差现场调试,以及为沙雕(一种动物)甲方做培训。
我实习的公司是中国建科院下属的建筑材料研究所,当时带我们的余老师是我见过最有耐心的人,虽然我们当时年轻气盛,有过一些不礼貌的行为,但余老师总是包容我们。当然,还有在学校负责对接项目的邹老师,给我们提供了很多帮助。这也是我第一次和社会接触,庆幸也是一次珍贵的、充满回忆的经历。
我常用的工具
软件
工作中,我在 Linux 系统上开发软件,zsh 作为 Shell 环境,使用 NeoVim 来编程,Git 工作流管理项目,使用 Obsidian 整理成系统的笔记。
工作沟通和协作软件按公司规定执行,目前用到的是(部分):
- Jira:任务管理
- Confluence:知识管理和共享
- GitLab:代码管理
- Jenkins:代码部署、测试和自动化运维
- 腾讯会议:多人会议、外部会议
- 企业微信:内部沟通
- WPS:内部文档编写和幻灯片制作
生活中,我在 MacOS 上管理生活、学习和娱乐。除了上述提到的几个软件,我还用 Notion 做个人知识管理和生活整理,用 flomo 记录自己的灵感和从各种网络媒体上学到的东西。
使用 DayOne 写日记,使用微信读书看电子书,使用 钱迹 管理家庭财务(曾经用了很久 MoneyWiz),使用滴答清单来记录提醒事项。
喜欢得到头条和有知有行小酒馆的内容,对我启发很多。使用小鹤双拼输入法,推荐喜欢折腾的朋友试试。
网络上,使用 Google 搜索,GitHub 管理自己的那些垃圾代码,常混迹的社交媒体有微信公众号、知乎、bilibili、小红书,不过大多数时间都在潜水。和个人建站相关的网站和工具,我写在了博客的 About 页。
MacOS 上推荐几个好玩好用的软件:
硬件
家里使用 MacBook 工作、学习和管理生活,用自己组的 Windows 机器玩游戏。上班时使用 Thinkpad,三屏扩展。家里自建了 NAS,用来存储照片和电影,间断性做备份,再不用为数据安全焦虑了。
手机双持小米和 iPhone,同时享受国产安卓系统的本地化服务和先进流畅的移动应用系统,不做选择,我都要。
我的社交媒体
个人博客
我一直都有自己的网络博客,但早期并没有想要自己搭建博客,原因很多,最主要的原因还是维护成本高。最早我在 CSDN 博客建站,当时主要发一些和嵌入式开发有关系的教程和分享文章。转到编译工具链赛道后,我开始把内容输出转移到知乎,因为 CSDN 的商业化味道太严重,让我非常不喜欢。
然而,现在我也对知乎失望了,想来想去,还是有个自己的博客比较好,干净、整洁,这就是我想要的网络生活空间。
现在和可预见的将来,我的博客域名是 https://p2tree.top
个人生活公众号
疫情那段时间,被隔离了一个月,后来居家办公了一段时间,那段时间突然心血来潮,想学别人搞自媒体,发点自己的生活感悟和读书笔记,于是开了自己的公众号。
但我当时并没有了解自媒体这个行业,也选错了平台。微信公众号在 16 年之后就开始走向没落,我在之后的运营中并不顺利,所以停更了三年。但现在我又续更了,我的心态变了,不应该被平台牵着走。
我的公众号名称是:二树说
知乎
从 CSDN 转到了知乎,虽然现在知乎也已经商业味很浓了,但当时刚来时,知乎还是非常专业的,有不少大佬在这里出没,有很多高质量的回答,所以我曾经也非常看好知乎。
虽然我在知乎上活动不再积极了,但依然感谢知乎,它让我有了一个环境能接触到其他的牛人,也让我自己一定程度上在专业领域内露了脸。
你依然可以在知乎上和我联系,主页链接是:https://www.zhihu.com/people/p2tree
有关标题图片:这是人类拍摄到的第一张黑洞的照片,虽然非常模糊,但却是最接近真相的一张照片。在将来,我们会拍摄到更多更清晰的黑洞照片,这些照片见证着人类探索的脚步。








