新书《从入职到架构师——我的嵌入式软件成长之路》

精选 0 689
邮箱用户_alzy6
邮箱用户_alzy6 2020年11月30日 19:57 发表
摘要: 今天对小张来说是一个兴奋的日子,小张同学大学毕业后成功加盟了一家优秀的企业,今天是入职第一天。小张获取了该公司嵌入式软件研发职位,是自己很喜欢的工作,也在心中暗暗下决心,一定要努力工作,争取早日做出成绩。

新书自序

今天对小张来说是一个兴奋的日子,小张同学大学毕业后成功加盟了一家优秀的企业,今天是入职第一天。小张获取了该公司嵌入式软件研发职位,是自己很喜欢的工作,也在心中暗暗下决心,一定要努力工作,争取早日做出成绩。

入职后,经历各种略带吹牛且无聊的企业精神宣贯后,小张被分配到了某项目组,项目经理给了小张一堆资料和代码后,就去忙自己的事情了。

小张有点傻眼,陌生的环境、陌生的产品、陌生的代码,让小张不知该如何下手,硬着头皮看资料读代码,一天下来头脑晕晕的。小张想找人请教,但环顾四周,所有人都在忙碌,小张不好意思开口,更不知从何问起。

一段时间后,项目经理得闲想起了小张,问起代码阅读的咋样了,小张只好硬着头皮说大概读了一遍。经理一听挺好,顺手给分配了一项“简单”任务,然后就又去忙自己的事情了。

小张有点弄不太清楚领导布置的任务,硬着头皮试着做,磕磕碰碰的举步维艰。一段时间后,经理想起了小张,顺便检查工作,然后直接傻了眼,因为小张压根就没理解自己的意图。经理破口大骂,心中有点失望,小张内心也满是委屈。

一年后,小张递交了辞呈。

◇◇◇

王工已经工作八年了,一直在负责某款产品研发,因此对该产品每个细节都了然于胸,工作做起来有一种得心应手的感觉,颇受领导和同事好评。

但是,王工最近经常有腻烦和疲惫的感觉,复盘整理自己的工作记录,发现绝大部分工作都是修修补补的维护任务,好似最近几年一直在低水平得重复。

王工想做出改变,带了几个人,给他们逐行讲解代码,期望他们能接手自己的工作,然后逼迫自己跳出舒适区,更上一步。可惜事与愿违,每次现场程序修改,新人不是做的慢,就是漏洞百出。因为影响恶劣,王工被领导批评了几次,不得已继续回去擦屁股中……

王工内心经常涌起恐惧的感觉,难道一辈子就这样浑浑噩噩吗,王工甚至发狠想换一个工作,但这意味着会放弃自己多年的工作积累和生活习惯,而且上有老,下有小。

时间如水,无奈中,王工的工作激情没了,牢骚也多了,开始慢慢活成自己曾经讨厌的样子。然而,更可怕的是,因为新技术迭代,王工负责的产品被公司下架了。

◇◇◇

李总已经是企业的一员老兵了。李总从一个小兵做起,摸爬滚打,十余年来风风雨雨,终于成长为一名合格的产品经理,带领一个十余人的团队,负责公司某拳头产品的研发任务。

但李总最近有点闹心,公司产品现场暴露出一个问题,给用户造成不小的麻烦,也给市场销售人员带来困扰,面对公司领导的责问、用户的愤怒、销售人员的催促、研发人员的情绪失落等,李总被夹在中间,忙的焦头烂额,身心疲惫。

李总感觉现在的产品质量有点失控的味道,没有了自己早年自己独立掌控程序,出问题三下五除二就搞定的快感。新人上手慢,自己也忙的昏天黑地的,也腾不出手去培训,团队人员参差不齐,很多事情不知为啥安排了就是执行不下去。

嘈嘈杂杂中,跟着自己多年的某骨干员工递交了辞呈,李总有点头大,不知该如何应对。

◇◇◇

几个简单的职场故事,不知大家是否有同感呢,但估计每一位从大学象牙塔走出,并试着努力融入这个社会的同学们,都有满把辛酸泪的经历吧。

复盘自己的职场经历,有三道比较难以迈过的坎:

  1. 从学校灌输教育到企业产品思维模式的转变,成为一名合格的职场人;
  2. 跳出自己的专业,脱离自己熟悉的一亩三分地,能负责一款可卖的产品,成为一名优秀的产品经理;
  3. 带领团队一起维护一个产品系列,陪伴团队成员和产品一起成长,成长为一名架构师。
    三次思维和行为模式的转变,或多或少都会让我们陷入困境,中途有太多的人或被淘汰下车,或变得浑浑噩噩。

我大学学的是计算机专业,也蛮喜欢编程,大学期间就写过一些好玩的程序,是同学们眼中的编程高手。然而,即使如此,初期的工作也将我折腾的够呛,有刚入职是面对海量代码的困惑,有因质量问题到处救火的奔波,更有手下得力干将突然离职的苦恼,……,诸多困局,经常让自己处于疲惫和焦虑的状态。

长期面对电脑,经常腰酸背痛,空余时间我喜欢打羽毛球,出一身臭汗,不仅浑身舒畅,肩膀也能好受很多。有一次,一朋友指出,我的握拍挥拍动作都不正确,不仅打的累,而且还用不上力。别人无意间的指导,给我带来立竿见影的效果。从此,我内心中也期盼着工作中的贵人。

幸运的是,一次偶然,让我有机会参与日本东芝公司电制事业部G2平台研发,该平台是用于支撑东芝各类工业嵌入式设备快速研发的技术平台。基于该平台,我还接触到一款地铁上用的工业嵌入式设备。地铁现场运行环境潮湿恶劣,一旦出问题后果严重,因此要求相关设备能长期稳定运行,这些特性对产品研发提出了很多特殊要求。对我来说,这是一次珍贵的旅行,我仿佛看到那个无助的小马儿,带着一堆困惑,不小心走进了一个奇妙的世界,到处都是精彩的石头,随便拾起一块,就能让心中的困惑消融一大片。

◇◇◇

看到不等于做到,在东芝G2研发体系中,最让我印象深刻的是超高的代码复用率,然而,随意拆解一个可复用模块,都严重依赖于诸多可复用设计。东芝的研发体系早就和公司管理制度深度融为一体了,而且我也只能看到很多表面的东西,这让初期的我即使想模仿也无从下手。

后来机缘巧合,我发现日本大公司的管理体系都深受美国戴明博士的影响,虽然形式千变万化,但底层逻辑却有诸多相通之处。巧的是,我早年接受过丰田模式培训,也了解过一些用丰田模式改造的生产线,市场上讲解丰田模式的书籍更是汗牛充栋。

借助于戴明全面质量管理体系和丰田模式,我开始试着拆解东芝研发模式,由浅到深,由易到难,并试着慢慢的融合到自己的团队和产品中。这个过程并非一帆风顺,背后的艰辛很难和别人诉说,如丰田单件流模式在东芝研发体系中最主要的体现就是闭环,但一个简简单单的代码审核就让人焦头烂额,没有人喜欢去读别人的代码,更有人会把着自己的代码不放。朋友的不理解,领导嫌你多管闲事不务正业,……,幸好我努力保护着自己内心的那份执着。

光阴荏苒,一晃就是八九年的时间,当我将诸多的点连成线,线扩成面,时间开始给我惊喜。当公司因为我负责的产品零返修而被邀请演讲时,当我们团队可以两周内快速研发出新产品而拿下合同时,当我不再因担心现场频繁的质量问题而彻夜难眠时,当我的团队不会因为某骨干突然离职而塌掉一块时,……,我知道自己的所有执着都是值得的。

从无序到有序,反思整个经历,我发现自己构建出了一套全新的工业嵌入式产品研发理念,不同于丰田或东芝,这套理念相对小巧接地气,适合小的研发团队,易实施,背后隐含着一个人从入职到成长为架构师的全过程,易学习。

◇◇◇

2018年4月16日晚,美国商务部发布公告称,美国政府在未来7年内禁止中兴通讯向美国企业购买敏感产品,中兴事件爆发。那一刻,作为一个工程师的我,内心不知为何堵得慌,连续好几天都非常难受。

我先后就职于国企、外企、私企,理解国内的中小企业研发现状,清楚国内中小企业和国外巨头之间的巨大差距,更清楚不构建类似东芝那种研发体系,所有人都会处于低层次的重复劳动中,根本培养不出各领域专家和架构师,也做不出高精尖的产品。

听中关村第一才女梁宁女士的培训,有一句话深深打动了我:“将自己的价值打包成产品向世界交付,并获取回报,是一个人最底层价值的体现。”我期望自己能成为一个有产品的人,更因为中兴事件的触动,我开始尝试将自己近20年的工作经历提炼出来,不求别人的理解,只希望能帮助到一些人、一些团队甚至一些企业。这也是本书诞生之初最朴素的想法。

◇◇◇

这本书适合期望从事工控类产品研发的朋友们。

谈及工控领域,这个专业方向不仅对普通大众会有点陌生,甚至很多程序猿都不太熟悉。该专业方向期望有扎实的计算机素养、喜欢玩单片机、有工控和自动化背景、且交流和协作能力不要太差的同学。遗憾的是很多学计算机专业同学都一窝蜂的扎入了互联网行业了,反而是自动化或测控类专业的同学在这个方向挣扎,这也导致了国内该领域整体水平不高。

当然,这也是机会,如果你来自某自动化专业,本书会弥合你在计算机知识方面的不足,会帮助你更快跨越职场瓶颈。工控嵌入式产品是很多国家命运攸关行业的基石,试想一个500kV变电站的误跳闸而导致半个城市陷入黑暗的情况,或某DCS控制系统异常而导致剧毒压力罐爆炸的场景。因此,相信自己,你将会大有所为。

该书的内容组织,契合着一名初入职场新人成长为架构师的完整迭代经历。

第一章:“我的嵌入式软件成长之路”。该章从我自己工作中曾经面临的各种困局出发,带领大家去经历一次次跨越这些困局的成长之路。看到,是一种力量,该章内容不仅能帮大家整体理解全书内容,也有助于大家坚定信心,勇敢的迈出第一步。

第二章:“跨越C语言入职陷阱”。从学校到职场,从单一专业跨越到完整产品思维,对很多新人都是一个痛苦的经历。我们没有办法按照大学的模式去慢慢咀嚼各类技能,需要你快速掌握最少必要入门知识,并快速迭代式推进。如何做到呢?本章我以自己带新人快速学习C语言为例进行演示。为了便于大家举一反三,本章我还罗列出一些自己在实践中整理的各方向快速入门要点,供大家参考。

第三章:“代码审核机制”。要实现个人和企业的成长,首要前提是将代码从个人手中解放出来,将其变成流动的有价值标的物。但代码是纯粹的个人智力产物,大家或多或少都有读别人代码的痛苦经历,如何才能让代码顺滑流动呢?本章会提及很多具体的策略,以帮助大家早日迈过最重要的第一步。

第四章:“进入真实的产品世界”。我带新人时,如果完成了代码审核训练,基本就迈过了入职的准备阶段,可以开始接触真实的产品了。职场培训其重点不是学习一个个的知识技能,而是做出一款好的产品。为了后续内容描述方便,我们需要构建一款虚拟产品,让其有一点点工控和强实时的味道,但又不至于像真实产品过于专业和庞杂。本章描述的虚拟产品仅需要大家具备一点点大学电路基础知识即可理解。

第五章:“接口和模块化”。可能最简单的软件复用化,就是从通用函数接口提炼起步吧,然后自然会繁衍出一个缤纷复杂的世界。该章节从虚拟产品需求出发,由简单到复杂的带大家去体验几个抽象例子,同时也为后续复杂程序架构做铺垫。

第六章:“整体架构设计”。做产品的朋友们一定会发现,软件模块有紧紧耦合一起的趋势,你稍微不注意,就乱成了一堆麻了。单纯的提炼接口,仅能做到有限程度的代码隔离,面对很多棘手问题时就经常束手无策了。此时,就必须从产品整体角度去思考了。另外,为了让产品代码在团队成员之间自由流动,共识很重要,而架构设计,是团队构建共识的最佳契机。本章以虚拟产品需求为出发点,带着大家慢慢的引出产品的整体架构设计。

第七章:“质量和管理”。职场的朋友应该都清楚,做出产品仅仅是第一步,后续还有无尽的工程问题等着你,持续的代码维护甚至会耗去你的主要精力。如何做出一款高质量的产品,如何有效的降低维护工作量,如何出现问题时快速定位,又如何在用户现场扯皮时能恰当应对……,很遗憾,质量问题的解药从来不是测试,而是管理,本章我会带大家去经历我对全面质量管理体系(TQM)的理解和实践。

◇◇◇

我来自书香门第之家,祖上几代都有教书人,爷爷一直遗憾我不愿当老师,没想到自己竟在以另一种方式言传身教,也算额外的欣喜了。

最后,感谢我的家庭,感激总是埋怨我“玩”电脑不陪他玩的小儿,感激那些曾和我在职场一起头疼一起熬夜一起出差的同事,更感激很多很多中途下车的朋友们,没有您们,就没有该书的诞生,让我们一起上路吧。


本书整体目录如下
0.0 写一本书,纳二十载精华
0.1 前言
0.2 目录
1.0 我的嵌入式软件成长之路
  1.1 自我介绍
  1.2 早期职场的一些痛苦经历
  1.3 亲历代码高复用研发模式
  1.4 我的漫漫探索路
  1.5 破除各种惯性误解
2.0 跨越C语言入职陷阱
  2.1 新人入职困局
  2.2 更好的“速成”策略
  2.3 构建C语言入职教程
  2.4 C语言入职例程一:空心菱形
  2.5 C语言入职例程一:强化指针概念
  2.6 C语言入职例程三:函数指针和程序框架入门
  2.7 趣谈嵌入式C语言十层境界
  2.8 其他快速入门必要知识
    2.7.1快速学习产品
    2.7.2 C++快速入门
    2.7.3 qt快速入门
    2.7.4 芯片调试快速入门
    2.7.5 算法分析,matlab快速入门
    2.7.6 给用户讲产品,ppt快速入门
    2.7.7 写必要文档,word快速入门
    2.8.8 总结

3.0 代码审核机制
  3.1 代码审核机制
  3.2 文件全局观
  3.3 编码细节观
  3.4 约定注释风格
  3.5 统一名称
  3.6 有效借助工具
  3.7 构建知识库
  3.8 行动指南
  3.9 构建知识体系
4.0 进入真实产品世界
  4.1 一款真实的产品
  4.2 基础数据模型
  4.3 架构师眼中的产品
5.0 接口和模块化
  5.1 模块化,知易行难
  5.2 AI数据结构
  5.3 报告类数据模型接口
  5.4 设定值类数据模型接口
  5.5 信号复归——一个强耦合模块解耦过程
  5.6 visual studio code的接口设计
6.0 整体架构设计
  6.1 产品化思维,迈入架构世界
  6.2 严格层次化模型
  6.3 元件化模型
  6.4 分布式模型
  6.5 静态组织架构
  6.6 动态执行架构
  6.7 GUI人机接口
  6.8 配置级维护软件
  6.9 重新认识架构
7.0 质量和管理
  7.1 我的质量之旅
  7.2 一次产品异常复位引发的质量提升之旅
  7.3 从被动到主动
  7.4 小团队、低成本的管理实践之路
  7.5《丰田模式》阅读笔记和感悟
  7.6《戴明管理思想精要》阅读笔记和感悟
尾记,是结束,更是开始
[附录一:原则汇总]  

点赞 0 收藏(0)    分享
相关标签: 架构师
问题没解决?让AI助手帮你作答 AI助手
0 个评论
  • 消灭零评论