自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(49)
  • 资源 (1)
  • 收藏
  • 关注

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

我是小马儿,一个渴望良知与灵魂的嵌入式软件工程师,欢迎您的陪伴与同行,如需最新版PDF电子书,或期望深入交流,可加我个人微信**nzn_xiaomaer**,需备注“**异维**”二字。

2019-12-27 21:18:23 7318 10

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

今天对小张来说是一个兴奋的日子,小张同学大学毕业后成功加盟一家优秀的企业,今天是入职的第一天。小张获取了嵌入式软件研发职位,是自己很喜欢的工作,也在心中暗暗下决心,一定要努力工作,争取早日融入其中。入职后,经历各种略带吹牛且繁琐的企业精神宣贯后,小张被分配到了某项目组,项目经理给了小张一些资料和一堆代码,然后就忙自己的事情了。小张有点傻眼,陌生的环境、陌生的产品、陌生的代码,小张不知该如何下手...

2019-11-19 17:40:37 1569 1

原创 3.10 行动指南

前面,我们介绍了四条半编程规范和知识体系构建策略,你如果拆开其中任何一条约定,会发现都很简单直白,但尝试实施过的团队,都清楚形成有效的代码审核机制是多么不容易的一件事情。我曾经帮助过一些团队训练的代码审核机制,最大的体会是:代码审核是一项技能,而非简单的知识。游泳需要的知识点很少,顶多一个小时就可以学完。但即使你清楚手脚呼吸如何配合,进入水里也会立马慌神,因此游泳实际上是一项技能,除了练习别无他法。同理,代码审核机制也是一项技能,你即使记住了一堆编码约定,但接触真实代码很快就歇菜了。诸多编程规范约定仅

2021-12-22 10:08:24 239

原创 “需求——接口——实现”,最舒爽的代码阅读姿势

一朋友在学习我的GUI软件模块时,非常勤奋,用了很多时间逐行阅读GUI模块的实现代码,还请教了我很多问题,且做了很多注释。这位朋友学习态度很好,我想当然的认为他在使用GUI模块做具体应用界面时,会顺风顺水的,让人尴尬的是,他依旧是一头雾水。为何会出现这个问题呢,这个现象引发了我的深思。我记得自己很久前学习ucOS代码时,年少轻狂,也是不管三七二十一,上来就逐行阅读usOS代码,最后好不容易将所有代码理解了,尤其是弄明白那个颇具技巧的就绪列表后,还颇有成就感。然而,遗憾的是,读懂ucOS代码并不等于会熟

2020-12-04 12:01:44 408

原创 《从入职到架构师》原则汇总

丰田的管理模式经过多年的迭代后,早就体系化了。面对这个庞然大物时,我们经常会不知如何下手。《丰田模式》一书的作者将其关键思想浓缩为十四条基本原则,给我们理解丰田模式提供了一个很好的切入点。借鉴丰田模式,我也将本书的一些核心观点浓缩为十四条原则,以方便大家理解。原则一:架构师培养,需要构建成长阶梯最佳的学习策略是“熟悉+陌生”,过于陡峭的学习曲线,反而会让人望而却步。因此,不管是个人学习,还是企业提升,我们没法一开始就高大上,构建合理的台阶,分阶段分步骤的实施,效果可能会更好。作为对比,苏联的休克疗法早已

2020-10-30 11:43:44 505

原创 5.6 visual studio code的接口设计

从入职到架构师的成长之路,“看到——快速入职——审核与团队——接口抽象——可复用架构——质量和团队”,其中接口抽象处于承上启下的关键位置,之前,团队已经拉起来了,跨过这一步,我们就需要思考如何拉着团队更好地做产品了。通过抽象提炼的是接口,更是切口,通过抽象接口,可以对一个产品的工作任务进行有机切割。因此,切口是否合理,会直接决定着团队成员分工是否合理,决定着团队的工作效率,甚至决定着产品成败。很多团队,最常见的分工模式就是按产品切割分工,这几个人负责这款产品,那几个人负责那款产品。这就是一种典型的不太友

2020-10-08 12:54:17 802 1

原创 3.9构建知识体系

随着点滴零碎知识点的积累,我们更应该顺势开始构建自己的知识体系。体系化学习策略可以帮助我们将零碎的知识网络化,相对于传统学习,几乎是碾压式的存在。在高中求学时,我的数学老师是北师大高材生,也是校级优秀教师,体系化学习策略就是老师谆谆教导的,对我后来的学习工作帮助颇大。任何知识学习过程中一开始都容易呈现离散特性,如这段时间学习三角函数,过一段时间学习解析几何,当好不容易学完解析几何,三角函数已经忘的差不多了,导致很多人的学习生涯就是在不断的学与忘之间反复震荡。如何克服这个难题呢?体系化学习策略要求学习的时

2020-09-22 17:54:43 588

原创 尾记,是结束,更是开始

终于,当敲下这两个字后,我发现自己终于写完了,虽然仅仅可以算作初稿,虽然质量文笔组织结构等还有待提升,但我确实是按原计划写完了。在此之前,我别说写书,连稍微长一点的文章都没写过,因此内心难免会激荡一阵。这本书的主体结构对应着我的一个培训课件,当然不管是内容或深度都极大延伸了。原本我仅是希望听我培训的朋友能有一份资料去复习加深,但当我展开目录结构的那一刻,我意识到自己实际上是在写一本书。虽然现在市面上各类书籍已如过江之鲫,但自己从未尝试过,内心还颇有点忐忑。碰到难题我习惯分解大法,我给自己定了一个小小的目

2020-08-12 11:35:56 445

原创 7.6 《戴明管理思想精要》阅读笔记和感悟

二战后,日本企业为了提升产品质量,机缘巧合之下找到戴明博士。可能是巧合,也可能是缘分,戴明的管理思想虽然在美国很少人关注,但在日本却大行其道,呈现出百花齐放的现象。现在,几十年过去了,虽然各大日本企业都发展出了自己独特的管理思想,但在诸多方面都深受戴明思想的影响。为了能进一步理解东芝和丰田的诸多管理策略,我尝试着去理解戴明管理思维,其中《戴明管理思想精要》这本书对我影响颇深。相比于丰田模式,我感觉戴明管理思维更加抽象,更难落地,戴明指出的各种问题我还算比较认可,但提出的解决策略很多却不甚理解,尤其是统计

2020-08-12 11:13:36 2098

原创 7.5 《丰田模式》阅读笔记和感悟

多年的嵌入式软件工作经历,我遇到过很多苦恼,也有过很多的挣扎。为了突破这些困境,我一开始喜欢研究西方(主要是美国)的东东,但总感觉概念一大堆,让人摸不着头脑,好似高大上,但又无法落到实处。机缘巧合下,我有过一年和日本东芝合作研发的经历,好似给自己打开了另一扇窗。我惊奇的发现他们并没用太多太复杂的概念,有的仅仅是简单的符合人性的小技巧,竟然也能组织起庞大的团队联合研发体系,大家各司其职,各有各的发展空间,整个研发过程给人一种非常有序舒服的感觉。这些策略是否可以学习引入,并提升自己团队的研发效率呢?我开始了漫

2020-08-07 22:17:42 3002

原创 7.4 小团队、低成本的管理实践之路

小公司刚开始起步时,做产品的仅几个人,此时是不需要任何管理的,很多事情大家碰个头商量一下即可。但是,随着公司持续发展壮大,产品越来越多,领导和技术骨干都会陷入低级繁琐的事务活动中。经常导致一种现象:企业貌似越来越大,大家越来越忙,但产品却越来越差,研发时间也越来越不可控。出现这类问题时,大家习惯性开始引入各种管理体系,最常见的就是各种流程管理软件了。我们在引入这类管理流程时,经常会抱有不切实际的幻想,如:可自动监督员工的所有工作、可自动记录每件事的工作量,自动提醒每个人下一步做什么等。很不幸,如果这类软件

2020-07-31 22:32:58 285

原创 7.3 从被动到主动

为了能给家人多一份安全保障,我个人比较喜欢沃尔沃汽车,尤其是它的安全辅助系统。谈起汽车安全,很多人第一时间会想起各种汽车铠甲系统、安全气囊等,但在我眼中,这些仅仅是被动安全系统,我更喜欢主动安全系统,如各类主动刹车、异常识别等系统。这些主动系统联合工作,相当于在你开车时,旁边还有一个人帮你看着路。相比于其他车型仅仅作为可选配件,沃尔沃几乎全系标配主被动安全系统,我猜测应该源于其背后关于行车安全的底层逻辑吧。工业产品类同于行车安全,很多工业产品的安全运行都关系到国计民生,如本书提及的电力继保设备。因此,我

2020-07-24 22:44:32 397

原创 7.2 一次产品异常复位引发的质量提升经历

借助在跨国公司的研发经历,我得以带着大家漫游一次产品质量之旅。然而,知道并非做到,看似触手可及,但又好似隔着万水千山。明明知道采用那些策略可以有效的提升产品质量,然而现实世界中的自己却长时间无动于衷。幸好,上天送给我一个契机。一次,某产品的运行现场出现随机异常复位,问题比较棘手,大家一筹莫展。我脑袋中灵光一闪,为何不增加异常dump信息来协助分析问题呢?我快速行动起来,发现我们的嵌入式设备异常复位有如下原因:其中包含了看门狗、时钟、电源、晶振、软件触发复位、调试等多种复位原因。我快速写了一段异常处理

2020-07-17 21:34:08 546

原创 7.1 我的质量之旅

7.1.1 我们都是灭火队员只要职场工作久了,大家或多或少都会碰到需要灭火的情况。记不清是哪年哪月哪日了,仅记得当时快下班了,我突然被领导叫到了办公室。原来有个用户现场,我们的设备出现了不定时的异常复位现象,用户非常恼火,并放出狠话,如不尽快处理,就要上报国家电网。当时,我就职的那家公司主要产品是面向国家电网的,而国家电网设备采购经常采取统一招标的模式,因此,一次用户投诉,就有可能影响后续几次招标成绩。公司领导非常着急,我连同其他两名倒霉蛋被一起火速派往现场。记得从出发那一刻开始,我内心就异常忐忑,

2020-07-10 21:27:20 409

原创 6.9 重新认识架构师

大家读本章内容时是否会有点发虚的感觉呢?相信我,你并不孤独。实际上,本章探讨的几个话题,要想叙述清楚,不仅需要大家具备诸多前置条件,如熟悉产品了解需求等,而且还要具备一定量的编码训练,甚至最好能跟着我们团队摸爬滚打一段时间,大家才能真正体会。正因为这个原因,在本章内容叙述时,我刻意着墨于各种架构理念的演化过程,而非具体技术细节。在我心目中,架构是活的,是长出来的,别人的架构你很难直接拿走。但看到是一种力量,看到别人能迭代出一套优秀的架构,我们大脑中的镜像神经元就会开始努力工作,帮助我们去“体验”那种经历。

2020-07-03 19:48:30 329

原创 6.8 配置软件和维护软件

在前面的章节中,我们已经多次提及配置软件和维护软件,大家或许也认识到它们是整个平台架构中不可或缺的一环。然而现实经常是无奈的,我的职场生涯中,这两个软件模块也是命运多舛。国内的软件氛围不好,企业舍得为硬件设备花钱,但都不乐意为纯软件项目花钱,会有一种想当然的感觉软件不值钱。在这种大环境下,企业也只好将更多资源往嵌入式设备领域倾斜,至于外围软件,能省则省吧。如我早期研发经历,要做一款新产品,只要市场部认可,领导一般会大力支持。但如果想写一款维护软件,公司会立马意识到投入大且不产生直接经济效益,因此是否能争

2020-06-26 22:02:24 380

原创 6.7 GUI人机接口

6.7.1 缘起平时交流,很多人都会感觉单个模块接口设计和整体产品架构设计之间跨越有点大。大家普遍感觉单个模块的接口设计相对容易,但一旦开始整体产品架构设计,就无从下手。前面几章讲解到的静态和动态程序组织结构,应该算是架构设计中比较入门的知识了,但你是否已经开始有一点点迷糊的感觉了呢!又如何破解呢?在多年的实践过程中,我们找到了一个很好的中间抓手:复杂模块的整体设计。所谓复杂模块,并非一个确定性的概念,因人而异,如对刚入职的菜鸟来说,定值模块可能已经是复杂模块了,但对工作多年的老手来说,本章的GUI模块

2020-06-19 22:34:39 554

原创 6.6 动态执行架构

6.6.1 概述本章内容开始之前,我们先来了解一个工业嵌入式产品中很重要的一个基本概念:强实时和弱实时。我们平时接触到的大多数嵌入式系统都是弱实时系统,如家用洗衣机。从我们按下开始按钮到洗衣机开始洗衣服,间隔可以是100ms,也可以是1s,甚至可能出现异响要求在按一次。因为响应慢顶多体验差或引来两句骂声,但没有其他损失,这类系统就是弱实时系统。不同于弱实时系统,强实时系统在规定时间之前如不能正确工作,就会导致非常严重的后果。本书中提及的微机保护装置就是强实时系统,发生电力系统故障时,必须在特定时间内切

2020-06-13 11:25:49 825 2

原创 6.5 静态组织架构

前三节,我们讲解了三种程序组织模型:严格层次化、元件化、分布式。在团队内部,为了简单我们习惯称之为“分层分块分布”。综合这三种策略,基本可以决定一个产品中各软件模块的静态组织关系,因此,“分层分块分布”是一种静态组织架构。目前,虽然各有侧重,我们团队研发的各类产品几乎都遵从“分层分块分步”的静态组织架构。为何会持续的演化出这种程序静态组织模式呢?复盘整个演化过程,我发现这种模式与其说是设计出来的,不如说是长出来的。现实世界中,需求在持续不断的迭代,但人力永远是紧缺资源。为了能让更少的人做更多的活,平台

2020-06-05 20:39:14 1753 1

原创 6.4 分布式模型

2019年春节档有一部黑马电影《流浪地球》,我个人很喜欢。这部电影中有一个悲伤的情节,因为地震杭州被岩浆吞没了。网络上有人调侃,杭州没了,花呗还要还吗?大家也就是搞笑,没想到支付宝官方竟然也跑来凑热闹,告诉大家支付宝三地五中心备份,杭州没了,花呗依然要还。杭州没了,花呗依然要还,这或许就是分布式模型的魅力。类似这样的模型很多,如著名的比特币分布式网络,面临世界各国政府的轮番制裁,依然稳定运行了十多年,无一秒宕机。回到我们的嵌入式系统,这样的分布式模型对我们会有哪些启发呢?在真实世界中,大家还是喜欢集中

2020-05-29 20:33:33 1874

原创 6.3 元件化模型

通过严格化层次模型,软件各层之间进行了隔离,但同一层内的各软件模块之间还易存在耦合。回顾我们的微机保护产品架构图,会发现其它层还好,但api抽象层各模块之间容易出现耦合。如何缓解这一问题呢,在前一章信号复归例程中已经给出了答案:脚本和元件化模型。因为需求迭代,信号复归模块和按键模块存在强耦合,为了解耦,对信号复归和按键模块进行了元件化改造并提炼接口,然后由脚本模块实现这些接口之间的耦合,这种策略被我们团队称之为元件化模型。信号复归和按键模块抽象过程如下图所示:其中:信号复归模块增加了两个接口:sig

2020-05-22 17:27:35 687

原创 6.2 严格层次化模型

前文提及,直面真实可卖的产品,才会品味到真正的架构设计。真实可卖的产品有一个很重要的特点:有很多约束条件,其中最主要的一项约束条件就是团队人员约束。作为项目经理,我做产品时肯定希望自己手下人才济济,能人辈出,但现实经常打脸,能给我一两名稍微有点经验的就不错了,其他大多都是新招聘的,很多甚至都没写过几行代码,(꒦_꒦) 。一个公司不可能将优秀的人员都集中到一个项目组,不仅不经济,而且会带来诸多管理问题。现实情况约束下,大多数项目组构成都是一个牛人带着一群新手。团队能力约束仅仅是一方面,还有专业水平的约束。

2020-05-15 20:09:14 2268 1

原创 5.5 信号复归——一个强耦合模块的解耦过程

前面几个例子,虽然抽象的味道越来越浓,但功能都比较单纯,因此接口也容易构建。本节我们面对一个稍微复杂一点的例程:信号复归。在微机保护装置中,发生保护动作后必须进行人工干预,只有排除故障后才可以重新投入运行。为了确保这一过程,发生保护动作后,相关led状态或类似信号等都会处于自保持状态,为了清除这些状态信息,需要执行一个复归命令,称之为信号复归。早期,信号复归主要用于清除动作led灯的状态,如我...

2020-05-01 19:16:33 3751 3

原创 5.4 保护设定值数据模型接口

我新换一部智能手机后,一般会忍不住将所有设置菜单功能体验一遍,虽然设置层层叠叠,但能将手机设置成自己喜欢的样子还是颇有成就感的。类同智能手机,微机保护等工业产品随着各种功能的增加,各种各样的设置也变得繁杂起来。微机保护产品有很多类型的设定值,如遥测越限值,如设备通讯状态等,但其中有一类设定值比较特殊,就是保护功能相关设定值,我们团队习惯称之为保护设定值。保护设定值用于配置保护功能,如过流保护有...

2020-04-24 12:25:05 386

原创 5.3 报告类数据模型接口

在继保的各种数据模型中,有一类数据模型其组织方式非常类似,包含遥信变位、动作报告、操作事项、遥测越限等,都是多条条目的方式组织。我们团队习惯将这类数据模型称之为报告类数据模型。在嵌入式应用领域,这类信息一般存储在flash或eeprom等非易失性存储芯片中,各条目信息组织结构一致,并在产品构建初期就约定好存储条数、空间和位置等信息。报告类数据模型,一般采取环形缓冲区数据结构,如果缓冲区满且有新...

2020-04-17 13:09:24 699 3

原创 5.2 AI数据接口

本小节,我们尝试从一个相对简单的模块出发,尝试提炼接口抽象函数,而在基本数据模型中,模拟量输入AI模块就是最基础的数据模型。欲构建AI模块抽象接口,需先进行需求分析。AI是基础数据模型,不仅是各种高级数据模型的基础,也是各种应用模块的基础,如规约、液晶等。汇总后AI的需求主要包括:初始化。AI值,包括读写操作。属性,包括个数、名称、描述、单位、精度等属性值。取代操作。遥测越限等高级应...

2020-04-10 12:58:25 1932

原创 5.1 模块化,知易行难

从入职到架构师,我们在逐级台阶慢慢往上爬,入职——团队——抽象——复用——架构——标准化,现在我们又迈上了一个新的台阶:模块化和抽象层。学习软件编程时,老师会告诉我们软件模块接口要清晰,要追求低耦合强内聚,这样,整个程序才能具备易扩展易维护的特点。可惜理想很丰满,现实很骨感。在真实产品中,我们会发现软件模块初期还能相对清晰,但几次迭代下来,模块之间就会冒出很多相互调用,用不了多久,模块化就名存...

2020-04-02 23:09:47 509

原创 4.3 架构师眼中的产品

前两节描述的所有功能都来源于用户需求,如能实现这些功能,此时已是一款可用的产品了,然而,可用的产品并不一定是好的产品。产品的“好”有两方面,针对用户和针对研发人员。乔布斯眼中的苹果手机,一根指头改变世界,就是对用户友好性最极致的追求。用户友好型不属于本书讨论内容,我们侧重于如何让产品对研发人员友好。本书第一章已经描述过许多传统产品研发模式的困局,假设现在我们启动研发过流和变压器差动两款继保设备...

2020-03-27 09:42:26 402

原创 4.2 基础数据模型

4.2.1 基础数据模型使用和设计是工业产品的一体两面,作为设计者,我们需要从用户需求出发,穿越过去,然后构建出产品的骨架。本小节,我会带着大家从用户的需求出发,构建出产品的基础数据模型。我们的抓手是两款保护产品:用电端过流保护和变压器差动保护。用电端过流保护适用于用户端电气设备保护,其工作原理类似保险丝,如果电流大于特定值且持续超过特定时间,发出开出命令并跳开断路器。变压器为多侧电力设备,...

2020-03-20 13:25:16 1061

原创 4.1 一款真实的产品

在我们团队,新人经历C语言入职培训和代码审核机制训练后,就开始接触真实的产品了。该过程需要先熟悉说明书,并在家中模拟各种现场运行工况,然后就是通过现场实践持续迭代提升了。本书是一本工程化实践的书籍,为了便于后续内容展开,我们需要一个抓手,一款真实的产品,一款高可靠、强实时、种类繁杂的工业产品。小时候农村经常停电。家里没电了,我会赶快跑出去看一看,如果各家都没电了,那就只好在外面侃大山乘凉了。如...

2020-03-13 09:31:47 436

原创 3.8 行动指南

前面,我们介绍了四条半编程规范和知识体系构建策略,你如果拆开其中任何一条约定,会发现都很简单,但实施过的团队,应该会理解形成有效的代码审核机制是多么不容易的一件事情。我曾经帮助过一些团队形成有效的代码审核机制,最大的体会是:代码审核是一项技能,而非简单的知识。游泳需要的知识点很少,顶多一个小时就可以学完。但即使你在清楚手脚呼吸如何配合,进入水里也会立马慌神,因此游泳实际上是一项技能。同理,代码...

2020-03-06 10:02:19 311

原创 3.7 构建知识库

至此,我们已经将新人入职需要掌握的编程规范介绍完毕了,是否感觉和其他版本的编程规范不太一样呢。出现这种现象,最主要的原因是因为我们的编程规范仅仅是工具,便于代码审核才是目的。同时,其他版本的编程规范就没有价值了呢?我认为所有的编程规范都是很多一线工程师的经验总结,都是值得去尊重的,虽然不能不加区别的拿来乱用,但很多内容是非常值得借鉴参考的。还记得本章一开始我整理的那一段警世危言吗?“一名优秀...

2020-03-06 09:50:38 553

原创 3.3 编码细节观

通过文件全局观,我们将代码审核的着力点从设计文档细化到了具体函数。面对详细的一行行代码,有哪些策略可以提升代码审核效率呢?我们人类的大脑喜欢结构化思维,但讨厌流水账。很不巧,现实中的代码经常是灭绝老太的裹脚布——又长又臭。程序主要功能夹杂在各种繁琐的检测代码中,层层叠叠的分支判断和缩进,冗长的句子,经常让我们代码审核时举步维艰。破解这一困局的最佳策略,就是要让程序结构化起来。我们团队在多年的实...

2020-02-21 10:57:52 551

原创 3.2 文件全局观

3.2.1 从文档到程序我方向感比较强,去一个新地方之前,必须先简单研究一下地图,有个大致脉络,才不会晕头转向。同理,你让我冒然去阅读或审核一大堆代码,我会立马陷入细节中,晕头转向了。我们人类的大脑擅长逻辑分析,擅长关联推理,擅长脉络架构,但唯独不擅长记忆,更难以同时关注多个对象。很不巧,如果不加控制,大多数产品的代码都是粗暴的碎片化堆砌。缺个子函数,前面堆一个,但阅读时不会先读后面在跳前面...

2020-02-21 10:51:11 655 1

原创 3.1 代码审核机制

一次咨询活动,同一朋友交流基于复用的架构设计理念时,他说:“你讲的那个很好,但离我们现状有点远。我现在每天要编码、要开会、要出差、要交流、要带人、要流程,招个能干的人可难了,而刚做顺手的就想跑,留一堆代码让我擦屁股……”一段话不知道出了多少一线工程师的心酸,我们又有多少人是整日忙的晕头转向而最后却又碌碌无为。额外,这段话也道出了一个关键点,我们的技能提升是分层次的,跨层次对话,如和饥饿的人交流饮...

2020-02-14 10:54:43 1490

原创 2.8 其他快速入门必要知识

完成入职后,大家首当其冲的就是开始开始接触各种真实产品。真实产品一般都跨越多个学科,需要大家快速补充各学科基础知识。而且新人入职后,还需要尽快补足各种基本职场技能,如写作、演讲、交流、出差、安全等。因此,在新人刚入职后的一段时间内,快速入门成为新人的主要任务,更是负责人的职责所在。职场,没有无缘无故的“速成”,所有的能力都需要水滴石穿的积累,但却可以 “快速入门”。本节和大家简要分享一些我们团队...

2020-02-07 12:26:21 3473

原创 2.7 趣谈嵌入式C语言十层境界

至此,我们已经完成了嵌入式C语言快速入门。这部分培训一般是从新人招聘完毕到正式入职之间完成的,因为需要多次反复,外加远程互动的原因,耗时较多,但大部分人会在两个月内完成。在长期实践中我发现,经过这样的训练后,虽然新人初次面对真实的产品代码时依然会磕磕碰碰,但会少一些那种双目茫然的木讷感。随着熟练程度的持续提升,大家很快就可以找到节奏,比较快融入团队了。而且,随着工作闭环、代码审核、注册机制等策略...

2020-02-07 12:10:50 788 3

原创 2.6 C语言入职例程三:函数指针和程序框架入门

2.6.1 勿在浮沙筑高台前文介绍过,很多企业的培训体系是这样的:新人入职后,师傅会给一堆资料让看,然后新人硬着头皮看一些;哪天师傅不忙了,惦记起这个新人,然后交给其一个产品,让其折腾;可惜真实产品一般都涉及多个学科,面对一大堆疑问,新人会感觉腾云驾雾般难以前行;一段时间后部分新人迈过了入职时的绝望悬崖,有了自己的积累,开始慢慢的深入接触产品,但因各种文档资料奇缺,只能一边学习一边调整...

2020-01-31 12:27:25 1457 2

原创 2.5 C语言入职例程二:指针

2.5.1 强化指针概念指针是C语言中最基本且很重要的概念,某种程度上甚至可以说:指针是C语言的灵魂。不巧的是,我们公司新招聘的好多新人对C语言指针都比较陌生。和大家交流,思考背后原因,可能要拜人性中的“选择性遗忘”了(最近脑科学研发成果。人们一般会将极伤心的事忘记的干干净净,如果C语言会给我们带来痛苦,我们会第一时间忘记它)。大家因为道听途说C语言指针很难,然后就故意躲得远远的,即使尝试学了...

2020-01-17 15:15:20 1132 9

原创 2.4 C语言入职例程一:空心菱形输出

2.4.1 工作闭环和边界判断为了帮助新人快速上手,我将自己当初学习Pascal时的第一个例程借了过来。我给新人布置的第一项任务是:“快速复习阅读《C程序设计语言》前4章,然后写一控制台程序:已知内层和外层菱形的高度,输出一空心菱形”。大家是否会感觉这是一个很简单的例程呢?实际上这是我精心挑选设计出来的一个例程,因为其中有很多的坑。这个例子本身并不复杂,一般通过公司层层筛选招聘进来的学生,总是...

2020-01-11 09:14:06 5388 2

九连环自动程序

该例程实现了9连环自动拆卸的程序,这个程序是类似于汉诺塔的游戏程序,个人感觉比那个好玩多了,一时兴趣,写了一个程序自动解锁,希望有人感兴趣。

2014-06-30

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除