李云

私信 关注
至简李云
码龄9年

前Motorola软件架构师著有专业嵌入式软件开发懂技术的半个管理者。

  • 424,200
    被访问量
  • 63
    原创文章
  • 13,441
    作者排名
  • 967
    粉丝数量
  • 于 2011-12-12 加入CSDN
获得成就
  • 获得335次点赞
  • 内容获得368次评论
  • 获得32次收藏
荣誉勋章
TA的专栏
  • 软件开发
    15篇
  • 嵌入式系统
    3篇
  • 技术管理
    10篇
  • 行业与职场
    20篇
  • 硬件相关
    1篇
  • C/C++
    10篇
  • OOP/OOD
    1篇
  • 软件质量
    3篇
  • Chrome浏览器
    2篇
  • 最近
  • 文章
  • 资源
  • 问答
  • 课程
  • 帖子
  • 收藏
  • 关注/订阅

聊聊工程师思维

聊一聊工程师思维为什么想到写这篇文章?作者是想通过对工程师思维的分析和解读,让工程师能正确对待那些在现实工作中看上去与本职岗位无关,却对团队效能影响极大的一些点和一些事。在社会分工的背景下,软件行业的工程师群体被划分成了开发、测试、产品等诸多岗位,以协作的方式共同完成价值创造。高度依赖软件的互联网行业正以全新的方式改善着人们的生活,同时在改善的道路上对价值创造的效能提出了更高的要求,而背后...
原创
2540阅读
1评论
0点赞
发布博客于 3 年前

『细节』是什么

图片来自网络,作者不详只要是职场人士,谈及『细节』二字估计很容易让人联想到『细节决定成败』这句话。由于这句话无人不知、无人不晓,以至于容易将『细节』误以为是口号。就我在工作中的感受,发现确实大多数人是将『关注细节』当作是口好。正因如此,我想借这篇文章与大家探讨一下我所理解的『细节』究竟是什么。首先,『细节』代表态度——将工作做到位。『做到位』与『做完』是全然不同的工作水准,前者包含后者但比后者有更
原创
7004阅读
8评论
9点赞
发布博客于 6 年前

打造高质效的技术团队 —— 酝酿篇

入职半年后的2013年6月份左右,淘宝浏览器团队和搜索团队被剥离出阿里巴巴集团,成为阿里巴巴与UC优视所成立合资公司——广州神马移动信息技术有限公司——的主体。在合资公司正式成立之前,主管在一次与我的面谈中告知“我们得成为一家小公司的一部分,且可能要重新基于Chromium的最新内核开发新的浏览器”(注:“新的浏览器”正是指现在的“UC浏览器电脑版”)。当听到这一消息时我非常高兴,因为看到这是一个
原创
3588阅读
0评论
3点赞
发布博客于 6 年前

打造高质效的技术团队 —— 混乱篇

2012年平安夜,我离开工作了近十年的通讯行业投身互联网行业,入职了当时阿里巴巴旗下的淘宝浏览器开发团队。过去的两年,这个团队完成了从淘宝浏览器过渡到UC浏览器电脑版开发团队的巨变。之所以说是巨变,是因为整个开发团队的工作方法、工作质量和精神风貌在过去的两年发生了翻天覆地的变化。在这个过程中,我作为“领头羊”引领着开发团队向前发展,并在最近有机会成为了带领包含开发和测试在内的整个技术团队继续向前发
原创
5660阅读
12评论
10点赞
发布博客于 6 年前

【人在职场】能力与价值

最近给团队(指#UC浏览器电脑版#开发团队)分享了我的《基层技术管理原则》。在我所秉承的八大基层技术管理原则中,有两个分别谈及了个体的能力与价值,我想通过这篇文章让更多人了解我对这两个概念的理解,希望能给读者带去一点有价值的思考素材。首先,我想给出我对于个体能力的理解,即“能力 = 技能 x 工作好习惯 x 意识”。技能的重要性无需多言,他决定了我们能走上怎样的工作岗位,甚至直接决定能拿多少薪水。
原创
7386阅读
9评论
10点赞
发布博客于 7 年前

技术管理的核心内容——提高团队技能

最近与同事聊天,从软件质量保证的方法论谈论到了技术管理。技术管理的内涵到底是什么?在此通过这篇文章做一个小小的总结和适当的外延。 技术管理给人的感觉更多是工作量评估、项目计划、项目进度跟踪等,但这只是技术管理工作的一部分。大体上,可以将技术管理分为两个纬度,如图1所示。 图1 纬度之一就是项目管理,其中包括项目计划、风险管理、预算管理等。对于基层技术管理者,更多涉及的内容是工作量评估、项目计划、项
原创
5482阅读
1评论
3点赞
发布博客于 7 年前

打造敏捷的自组织团队

敏捷思想的出现让我们看到了新的曙光——以更低的风险、更高的效率开发出更具质量的软件产品。正因如此,敏捷方法得到了业内足够的重视并使各路团队相拥实践。然而,即便我们对于各种敏捷原则、范式、方法和流程了如指掌,仍会发现其所给组织带来的改善远达不到我们的预期。这究竟是为什么?造成这种困境的根源并非我们学得不精,而是实践不到位。在我看来,敏捷宣言过于简单(好吧,是宣言总得简单一点!),以至于足以让人对之产
原创
7884阅读
3评论
8点赞
发布博客于 7 年前

写给同事的一封信

亲爱的同事, 转眼我在这个团队工作已有一年的时光,这一年也完成了我从通讯行业转入互联网圈的过渡。过去的一年给了我很多观察(团队)的机会,也带给了我不少思考,从我过去一年的寥寥几篇博文你应当能看到部分。 今天,我想借这篇文章与大家聊一些内容,以便你更加明白:为什么我在工作中对自己和大家的要求都那么高?为什么我强调责任与重视培养工作好习惯?为什么我会直接批评和积极表扬人与事
原创
13122阅读
14评论
35点赞
发布博客于 7 年前

做一名较真的工程师

近些年与我共事过的同事,一定知道我至今仍有一个较真的性格。我会:指出同事所写代码的不当命名问题(并帮助改进);指出同事所写文档中的逻辑混乱问题(并辅以修订);指出同事所写PPT中乱用标点的问题;我会因为设计的取舍与人激动地争论;诸如此类。当然,我更会较真于会议上达成的共识却得不到实施的问题。有人不免奇怪,你丫都快四十岁的人了,怎么还这么菱角分明地较真!好吧,那我就来说一说为什么要较真,且何以一直较
原创
8127阅读
17评论
14点赞
发布博客于 8 年前

让我们区分质量保证与测试

概念与思辨深度一个行业的发展似乎总伴随着更多的概念被塑造出来。拿测试来说,我们有单元测试、集成测试、系统测试、回归测试、冒烟测试,等等。我们缘何塑造如此多的概念来“为难”自己呢?答案可以用我从@李智勇SZ老师那学到的“概念越纯粹表示思辨深度越深”这句话加以解释,而这一切又为了提高同行间的沟通效率。需要特别指出的是,多个相似但不同的概念想表达的是各自的不同之处,而非共同之处。为此,如果人家在讨论单元
原创
4182阅读
5评论
1点赞
发布博客于 8 年前

对软件测试团队“核心价值”的思考

之前曾写过《软件质量管理的困境与对策思考》,在其中谈到开发部门与质量管理部门(QA)应形成一个有“交集的双环”而非“哑铃型”组织,也指出软件质量管理应重实践轻量化,其目标应是帮助工程师改善工作习惯和提升开发环境的效率。那时并没有认真地思考过测试团队的核心价值,直到读到@段念-段文韬老师的《测试团队与咖啡店》。通常,软件开发团队似乎几乎不谈论自己的“核心价值”,而针对测试团队总有对该问题的特有思考是
原创
9108阅读
1评论
10点赞
发布博客于 8 年前

如何做好基层技术管理工作?

最近有朋友与我探讨了软件基层技术管理工作方面的话题,借此从动机和方法两方面谈谈我的看法。动机要做好基层技术管理工作,首先要确保自己有良好的动机,即明白自己为何要走上技术管理岗位。做管理的根本是为了获得权力,但获得权力的动机却存在很大的差别。第一种单纯是为了利己。有相当数量的人往技术管理岗位“挤”,是为了获得以后在工作中可以少做或挑做工作内容的权力;也有的人是为了更快、更多地获得公司动向的资讯,以体
原创
7001阅读
7评论
3点赞
发布博客于 8 年前

中国软件开发工程师之痛

在近期的一次会议上,有高层谈到之前在中国觉得自己做得很牛,但与美国同行接触后却发现与人家存在很大的差距,这一点我在外企工作时也有过同样的体会。真正与外国同行接触后才会知道什么是差距,在这篇文章中我从软件开发工程师的角度以“痛点”的形式来谈一谈我所认为的差距。技能之痛相当数量的软件开发工程师(后面简称为工程师)认为除了与编码相关的内容外,其他技能都不重要。在这种意识的引导下,很容易出现的一个...
原创
19119阅读
62评论
62点赞
发布博客于 8 年前

【Chrome】如何在C++中增加给JavaScript调用的API

本文示例说明了如何在Chrome浏览器中增加JavaScript API。为了简化,先假设是在已有的namespace中增加一个新的API,文章的最后将指出如果增加一下全新的namespace所需注意的事项。在继续之前,请确保你的Chrome浏览器中已安装了一些扩展程序。可以在地址栏中输入chrome://extensions查看已安装的扩展程序。下图示例说明了我的浏览器中已安装了Google M
原创
6766阅读
2评论
2点赞
发布博客于 8 年前

【编程好习惯】减少搜索头文件的目录数

假设存在下图所示的项目目录结构。如果存在如下包含头文件的代码,则大多的项目中需要通过“-I foo”和“-I bar”指明两个搜索头文件的目录。12foo.c#include "bar.h"12bar.c#include "foo.h"然而,当项目规模很大存在很多的目录时,这种方式将显著地降低项目的编译速度。因为“-I”选项使用得越多,意味着编译每一个C文件时所需进行头文件搜索的目录也越多。为了避
原创
3281阅读
1评论
0点赞
发布博客于 8 年前

通讯与互联网行业软件项目运作的一些不同

最近在工作中体会到了互联网行业在软件开发项目运作中与我以往在通讯行业时的一些不同,特此分享。首先,两者在需求捕获方式上有很大的不同。在通讯行业中,初始需求是由象3GPP这样的标准化组织所制定的,但通讯产品在各版本中所实现的需求是由各运营商向通讯企业提出而得以确定的。产品经理(Product Manager,通讯行业的叫法)与系统架构师在需求的确定过程中起着重要的作用。与之不同的是,互联网行业由于产
原创
4388阅读
0评论
1点赞
发布博客于 8 年前

【Chrome】RSA算法在扩展程序中的运用

RSA算法在Chrome的扩展程序中被用于对其.crx安装文件进行签名和生成ID。下面让我们逐一了解其技术细节。在继续之前,请注意一点,文中对于Web Store的技术细节是基于Chrome浏览器的角度通过一定的测试而推测出来的,要彻底地了解Web Store的细节并不能仅通过本文。 扩展程序的安装文件有两种生成方式,一种方式是由扩展程序的开发者在开发的过程中生成,另一种是通过Goo
原创
4982阅读
2评论
2点赞
发布博客于 8 年前

离开通讯业入职互联网圈的一些感悟

去年年底,我离开了就职了近十年的通讯行业,加入了淘宝(中国)软件有限公司从事淘宝浏览器的软件开发工作,至今已有好几个月了。在过去的这些日子体会着互联网行业的不同,也让我逐渐地理解加入该行业前的一些疑问。下面,我就自己的一些感悟做一点分享,由于个人经历有限,所以局限性难免。首先,理解两个行业软件产品的运营特点具有非常重要的意义。通讯企业(指通讯产品制造商,后同)的产品是卖给象中国移动这样的运营商的,
原创
8041阅读
2评论
6点赞
发布博客于 8 年前

软件技术发展的驱动力

软件产品的终极目标是为了实现用户需求从而满足人们的需要。也正是为了不断满足人们的需要使得软件行业不断向前发展。比如,新的算法(MPEG-1、MPEG-2、MPEG-4、H.264、……)等的出现都在当时为了满足不同的需要而被发明。然而,人们的需要(行业发展的外部动力)却并非是软件技术发展的唯一驱动力,因为它无法解释为什么业内的编程语言、软件平台与框架等会层出不穷,有的甚至给人“重新发明轮子”的感觉
原创
10325阅读
10评论
4点赞
发布博客于 9 年前

软件质量管理之困境与对策思考

相信在不少与软件开发相关的企业内,质量管理部门与软件开发部门在日常运作中形成了如下图所示的“哑铃形”组织结构。  开发部门执行质量管理部门所制定的流程,通过提供证据的形式将各种流程执行后的数据反馈给质量管理部门(包括缺陷率和各种流程记录),质量管理部门根据这些数据监督流程的执行效果,并适时修订流程。联系两大独立部门的,是单薄的两条线和一些部门间的会议。理想情况下,在质量管理部门与软件开发部门间形成
原创
9431阅读
0评论
4点赞
发布博客于 9 年前

走技术线,还是技术管理线?

最近因为要给刚毕业的学生做一次演讲,所以就职业发展这类话题先以写博客的形式做一些思考,希望届时能给同学们带来质量更高的内容。我在《驾驭你的“职场布朗运动”》一文中谈了25条职场感悟并提出了“走技术线,还是技术管理线?”这一问题,但实际上并没有给予解答。在此补上。在正式解答这一问题之前,我想先强调职业发展的“黄金期”。每个人的职业发展我认为大致会经历“黄金期”、“平缓期”、“突破期”和“衰退期”,如
原创
31522阅读
32评论
26点赞
发布博客于 9 年前

驾驭你的“职场布朗运动”

在我的博客空间内,不时会有在校学生就职业发展和学习方面的内容向我寻求帮助。同学们由于初入社会没有行业经验,加上在校所学内容又广(但不深),所以在择业方面很容易产生困惑。在择业观上,他们希望找到一个将来有前途的行业,也希望在“是选择大公司还是小公司”这类问题上有人给予参考意见,也有人担心自己的学历对将来职业发展的影响。 另外,在我的工作中,也不时会有同事就自己的职业发展与我探讨。他们几乎都是对技术很
原创
16577阅读
24评论
18点赞
发布博客于 9 年前

编程思维训练(一)

最近以提问的形式发了几条关于编程思维的微博,有的获得了粉丝的响应,有些却无人问津。今天突然想到可以将我对这些问题的思考整理成一篇博文,以便与大家分享。另外,我计划以“编程思维训练”为名写一些系列文章,希望通过这类文章与读者分享我在编程活动中的一些思考。问:有一对内存管理函数MemAlloc和MemFree,使用形式分别是:分配时为“void *p = MemAlloc (6)",释放时为“
原创
9733阅读
1评论
3点赞
发布博客于 9 年前

软件工程师所需掌握的“终极技术”是什么?

最近,我在微博上看到@程序员邹欣老师发的一条微博 — “不少大学同学都有一个想法:先做几年技术,然后做管理;也有一些同学说:我技术不行,希望直接找到一个管理的工作,就像PM那样。请看 PM 需要什么样的能力:(链接略去)”。在读这条微博的前一部分内容时,我的第一反应是:难道同学们以为做技术管理不需要很好的技术功底?刚好在此之前,我写过《技术敏感度 — 基层技术管理者必备》一文,强调技术功底对于
原创
8408阅读
3评论
3点赞
发布博客于 9 年前

技术敏感度 — 基层技术管理者必备

一说到管理者的能力特质,我们马上会联想到沟通、授权、决策等能力。然而,对于软件开发活动中的基层技术管理者(team lead、line manager等),我想指出被极为忽视的另一种重要能力 — 技术敏感度。对于基层技术管理者来说,何为技术敏感度?技术敏感度表现为:1)工程师解释技术问题时,能快速理解并切中问题要害; 2)面对多个技术方案做选择时,具备权衡能力,并能给出有建设性的意见和
原创
8995阅读
6评论
2点赞
发布博客于 9 年前

单元测试实施解惑——别“桩”了!

我在《单元测试实施解惑(一)》中指出,使用象Cmockery这样的测试框架,将所需测试的模块通过打桩的方法实施单元测试并不是最有效的方法。在这篇文章中,让我们一同来探索更好的方法。在继续探索之前,让我从传统单元测试开始引入所主张的方法。图1中所示的分别是某内存池模块(mpool.c)和双向链表模块(dll.c)的代码片断,现在让我们聚焦于为内存池模块的mpool_buffer_allo
原创
6282阅读
1评论
0点赞
发布博客于 9 年前

单元测试实施解惑——无缝整合

在刚过去的一个月中,我完成了一个小软件框架的设计与实现。期间由于并行开发的需要,在没有对代码完成单元测试的情形下我将之check in到了SVN的主干上,随后的心情很是忐忑。因为我知道我一定会犯错(事实也证明在单元测试完成之前就发现了两个缺陷),害怕给他人带来麻烦并影响自己的形象。另外,由于对刚加入项目的单元测试环境完全不了解,所以在该框架的前期开发工作中我并没有运用单元测试渐进地保证
原创
6776阅读
0评论
1点赞
发布博客于 9 年前

该死的“代码就是文档”

我在《专业嵌入式软件开发》一书中指出,编写言简意骇的文档是实施高质高效软件开发的关键要素之一。在此结合自己的工作体会,再谈一谈软件开发活动中文档的重要性。切入正题之前,先让我们浏览二个工作场景。A君刚加入一个代码规模超过百万行的复杂通讯项目。在熟悉项目的过程中发现,上手新项目只能依靠几份单薄的PPT文档,而无法获得象样的系统架构文档、各子系统的概要设计文档和子系统间的接口文档。面对这样
原创
18228阅读
51评论
10点赞
发布博客于 9 年前

软件项目外包之路何以如此坎坷?

通过软件项目外包的形式获得令人满意的产品并非易事,想想当初为何美国国防部要求卡内基梅隆大学的软件工程研究所(SEI)制定现在广为人知的CMM就明白了。在此,我想就我的工作体会谈一谈软件项目外包之路为何如此坎坷。首先要明白的一点是,软件外包项目承包商(后面简称为“承包商”)与雇主之间的关系更多的是博奕,而非真正意义上的合作,因为两者之间存在利益冲突。雇主为了确保外包项目获得成功,必然会为
原创
8149阅读
0评论
1点赞
发布博客于 9 年前

软件外包的形式与质量控制

大体上,我将软件外包的形式分成三种。第一种形式是外资企业在华等低成本国家成立新的研发中心。研发中心虽然名誉上是总部的分枝机构,但所从事的研发工作通常不会是高精尖的内容。很显然,由于所设置的分支机构在公司制度和企业文化上完全采用总部的,因而这种外包形式在软件的质量控制上能与总公司的完全匹配。可以想象,这种外包形式的成本相当的高昂。第二种软件外包形式是人员外包。即外包公司出人参与到合同公司
原创
7834阅读
2评论
1点赞
发布博客于 9 年前

缓解可查错性问题的手段——单元测试

从本月初开始,我加入了某基站开发团队。尽管我在通讯行业工作快10年了,但这是头一次工作于机站项目,所需学习的东西自然很多,还是那句话 — 有挑战才会有进步。在此我想与读者分享过去三周我就软件的可查错性的一点新体会。现从事的项目是真正的嵌入式系统,机站上的MAC和PHY程序是运行在DSP之上的。加入团队伊始,同事告诉我,团队在碰到Crash这样的问题时,显得很是被动。经过我俩几番的交谈,
原创
5073阅读
2评论
1点赞
发布博客于 9 年前

一种面向业务流的内存管理算法

在象通讯系统中的基站这样的复杂嵌入式系统中,对于内存管理模块的效率具有很高的要求,因此内存管理模块的算法很有讲究。讲究在于,不仅要考虑算法的效率,还要兼顾算法是否会带来大量的内存碎片以及如何进行内存碎片合并。正因如此,这类嵌入式系统软件大多会对内存管理模块根据业务特点进行适当的优化。优化的方式无外乎引入内存池,或对堆管理模块引入新的算法加以优化,然而这些方法除了引入了一定的算法复杂度外
原创
5347阅读
0评论
0点赞
发布博客于 9 年前

在C++中通过模板去除强制转换

推荐阅读:《在C++中通过模板规避潜在错误》 C++与C语言相比是一个强类型语言,即对数据类型的匹配程度较C更为严格,这有助于避免程序员在编程过程中由于粗心所犯之错。由于历史原因,C++中仍保留了reinterpret_ cast、static_cast等用于强制类型转换的关键字,但从语言向强类型发展的趋势来看,我们在编程工作中应尽量少使用强制类型转换,模板有助于我们实现这一目的。减少使用
原创
4727阅读
0评论
1点赞
发布博客于 9 年前

在C++中通过模板规避潜在错误

注:本文节选自我正在创作的第二本书《C++跨平台与框架开发》,其中一些措词并未就博文进行调整,阅读时请注意。 模板(template)为C++带来了泛型编程的能力,但也带来了使用难度。大体上,使用模板的三大动机分别是提高复用性、去除强制转换和规避潜在错误。在此让我们看一看规避错误的一个例子。假设我们有图 1所示的被简化了的定时器管理模块程序。从构造函数来看,它的三个参数分别指明了定
原创
4845阅读
2评论
0点赞
发布博客于 9 年前

软件工程师在外企学什么?

我在Motorola工作了近6年(注:在这期间我经历了Motorola拆分成Motorola Solutions和Motorola Mobility,以及Motorola Solutions将网络部门卖给NSN,期间我所在团队的企业文化和工作环境一直沿用的是原Motorola的),经历了从开发工程师到架构师的成长历程,在此分享一下软件工程师在Motorola这样的外企应学些什么。首先,
原创
20467阅读
36评论
28点赞
发布博客于 9 年前

软件开发:个人与团队是永远的核心

注:本文节选自我正在创作的第二本书《C++跨平台与框架开发》,其中一些措词并未就博文进行调整。读者阅读时请注意这一点。 Brooks在他的《人月神话》中指出软件行业没有“银弹”,如果将平台与框架开发当作是软件行业的“银弹”可就大错特错了,充其量它只是“龙骑士 ”。软件行业没有“银弹”的原因是,软件开发工作与人——个体和由个体组成的团队,息息相关。再好的方法论都需要由个体去实施,
原创
9575阅读
0评论
2点赞
发布博客于 9 年前

【编程好习惯】 引入中间变量使程序更易读

今天查看自己为《专业嵌入式软件开发》一书所写的代码时发现,个别函数由于没有引入中间变量,使代码行既长又不易读。重构前后的代码如下所示。 重构前:if (TIMER_STARTED == _handle->state_) {     timer_handle_t next;          if (g_timer_next == _handle) {         g_timer_n
原创
5097阅读
0评论
0点赞
发布博客于 9 年前

面向对象设计的优点

一旦明白了软件设计的真谛(参见《软件设计的真谛》),我们就更能理解面向对象设计的优点。简单说来,它更便于我们在软件中构建更真实的虚拟世界。首先,对象的引入方便了在软件虚拟世界中模拟现实世界。现实世界是由很多独立的抽象或具体物体组成的,比如房子、汽车、空调、书等等。为了构建更真实的虚拟世界,在软件中需要存在用于表达类似现实物体的编程元素,这正是引入对象概念的意义所在。以对象为设计中心
原创
6092阅读
0评论
1点赞
发布博客于 9 年前

软件设计的真谛

假设我们身边的一切都是用制造材料加以描述的:“空调”不是“空调”,而是“由金属和塑料做成的物体”;“书”不是“书”,而是“由纤维和墨做成的物体”。沟通时我们也不用“空调”和“书”这样的词汇,而是“金属和塑料做成的物体”和“纤维和墨做成的物体”。可以想象大脑在面对这些信息时会让我们觉得多么的痛苦,显然这样的事情在现实中很少发生,因为我们的大脑具备很强的抽象能力 ,会通过抽象塑造“空调”和“书”这样的
原创
3839阅读
3评论
1点赞
发布博客于 9 年前

明晰单元测试

最近,身边的一位朋友因为需要在其单位与同事分享单元测试(Unit Test,UT)方面的知识,邀我对他所准备的PPT进行审阅。在审阅的过程中我发现,他在PPT中指出:“实际工作中,写好程序后对程序功能的调试就是一种单元测试”。由于我知道这位朋友并没有运用单元测试的经验,所以我问到:“你的这一认识是从哪里获得的?”,朋友答曰:“从网上搜来的”。无独有偶,这两天我在微博上看到了对单元测试相似的理解:“
原创
2448阅读
2评论
1点赞
发布博客于 9 年前

C程序员要学C++吗?

最近网友问到这一问题,但我更希望被问的是“C程序员需要学面向对象编程吗?”,那就让我先从回答这一问题开始,并做适当的扩展。就我的成长经历来看,C程序员必须学习面向对象编程!面向对象编程语言有其天然的一个优势 — 将软件世界的一切象现实世界那样视为对象。我在《专业嵌入式软件开发》一书的《设计,质量之本》一章中指出,软件设计的一个原则是“以人为本”,在软件世界中构建现实世界就能很好地贯彻这
原创
3151阅读
1评论
4点赞
发布博客于 9 年前

软件开发工程师技术能力层次模型

下图是根据我的经验所得到的软件开发工程师技术能力层次模型。在这个模型中,你属于哪一个层次?你的心中也有类似的模型吗?推荐阅读《高质高效软件开发组织能力模型》。本文出自 “李云” 博客,请务必保留此出处 http://blog.csdn.net/hzliyun/article/details/7190280。
原创
4475阅读
1评论
0点赞
发布博客于 9 年前

面向对象和基于对象

原创作品,允许转载,转载时请务必以超链接形式标明文章原始出处 、作者信息和本声明,否则将追究法律责任。http://blog.csdn.net/hzliyun/article/details/7186781。面向对象大家都很熟悉,可是基于对象就不一定了。两个听起来好象是同一回事,而事实上它们却千差万别。基于对象是指:我们采用对象封装技术,将数据和操作捆绑在一起,但是并没有合理地使用多态、继承等面向
原创
2050阅读
1评论
1点赞
发布博客于 9 年前

C++中实现Singleton的正确方法

原创作品,允许转载,转载时请务必以超链接形式标明文章原始出处 、作者信息和本声明,否则将追究法律责任。http://blog.csdn.net/hzliyun/article/details/7178930。如果某个类管理了系统中唯一的某种资源,那么我们只能创建该类的一个实例,此时用到singleton设计模式(后面为了简化将省略“设计模式”四个字)就比较合适了。然而,如果
原创
3764阅读
0评论
1点赞
发布博客于 9 年前

软件平台与框架的生命周期

原创作品,允许转载,转载时请务必以超链接形式标明文章原始出处 、作者信息和本声明,否则将追究法律责任。http://blog.csdn.net/hzliyun/article/details/7170501。以静态的思维看待平台与框架开发,极有可能最终导致所获得的平台与框架是一个臃肿、易出错的软件包袱。出现这种状况的原因,是我们没有明白平台与框架是存在生命周期的。
原创
2261阅读
1评论
0点赞
发布博客于 9 年前

如何成为一个技术“牛人”

原创作品,允许转载,转载时请务必以超链接形式标明文章原始出处 、作者信息和本声明,否则将追究法律责任。http://blog.csdn.net/hzliyun/article/details/7086930。今天给浙江大学过来的几个还没有毕业的研究生做面试,这些研究生是想来公司实习的。在面试的过程中,一个学生问我“我们有C/C++、JAVA等等多种语言,我如何才能成
原创
3931阅读
3评论
5点赞
发布博客于 10 年前

揭示C++中全局类变量的构造与析构顺序

原创作品,允许转载,转载时请务必以超链接形式标明文章原始出处 、作者信息和本声明,否则将追究法律责任。http://blog.csdn.net/hzliyun/article/details/7081148。在完成《专业嵌入式软件开发 — 全面走向高质高效编程》一书后,我将下一本书的创作集点放在了基于C++的面象对象设计与开发上。从现在开始我将陆续推出关于C++和面高对
原创
2752阅读
0评论
0点赞
发布博客于 10 年前

警惕工作中的“假设综合症”

原创作品,允许转载,转载时请务必以超链接形式标明文章原始出处 、作者信息和本声明,否则将追究法律责任。http://blog.csdn.net/hzliyun/article/details/7079494。工作中不少人(包括我自己)都犯过“假设综合症”(这词是我发明的啊!我Google了一下还没有找到有这一说!),其直观的表现就是你觉得他很“神”,有些东西并不清楚结果
原创
1957阅读
0评论
0点赞
发布博客于 10 年前

别把自己变成了“二等公民”

原创作品,允许转载,转载时请务必以超链接形式标明文章原始出处 、作者信息和本声明,否则将追究法律责任。http://blog.csdn.net/hzliyun/article/details/7079481。上周参加一个代码审查会,在会上发现了设计上的一个很严重的错误。于是,我提了好几个问题,想知道为什么会出现这一错误。但是,我的同事告诉我这都是印度团队做的设计
原创
3030阅读
2评论
5点赞
发布博客于 10 年前

我对应聘者的面试原则

原创作品,允许转载,转载时请务必以超链接形式标明文章原始出处 、作者信息和本声明,否则将追究法律责任。http://blog.csdn.net/hzliyun/article/details/7079471。最近参与了几次单位招聘面试工作,在面试工程师时,我是用我的分层准则指导与候选人的交流内容,以确定他的能力层次是否达到我所期望的。大体上软件工程师可以分为三大
原创
4180阅读
11评论
9点赞
发布博客于 10 年前

软件设计中的“自上而下”和“自下而上”

原创作品,允许转载,转载时请务必以超链接形式标明文章原始出处 、作者信息和本声明,否则将追究法律责任。http://blog.csdn.net/hzliyun/article/details/7079464。在切入主题之前先要了解“上”与“下”的含意是什么,这需要从图1中找答案。图中,应用层在最上面,其下依次是框架、平台、库和操作系统层,因此“上”是指靠近应用层
原创
7689阅读
0评论
3点赞
发布博客于 10 年前

明晰软件架构与数据结构

原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 、作者信息和本声明,否则将追究法律责任。http://blog.csdn.net/hzliyun/article/details/7079444。相信大多软件工程师在谈及软件架构(software architecture)时立刻会联想到数据结构(data structure),这是正常的反应。但是,有些工程师
原创
2323阅读
0评论
0点赞
发布博客于 10 年前

如何通过3/8译码器扩展处理器片选信号

原创作品,允许转载,转载时请务必以超链接形式标明文章原始出处 、作者信息和本声明,否则将追究法律责任。http://blog.csdn.net/hzliyun/article/details/7079400。本文的内容本来是打算放在我刚出版的《专业嵌入式软件开发 — 全面走向高质高效编程》一书中的。但后来由于将该书定位为偏向软件,所以将本文所在的章全部删除了,打算将之放在我
原创
5351阅读
0评论
1点赞
发布博客于 10 年前

软件系统架构师成长之路(一)

原创作品,允许转载,转载时请务必以超链接形式标明文章原始出处 、作者信息和本声明,否则将追究法律责任。http://blog.csdn.net/hzliyun/article/details/7078967。几个月前,公司因为战略调整,将位于美国的系统工程(system engineering)部门的工作转到了国内。也因为这次调整,我有幸以系统架构师(system arch
原创
3424阅读
1评论
0点赞
发布博客于 10 年前

软件架构师的能力与特质

原创作品,允许转载,转载时请务必以超链接形式标明文章原始出处 、作者信息和本声明,否则将追究法律责任。http://blog.csdn.net/hzliyun/article/details/7078959。软件开发工程师的职业发展无非两大类:一是做“官”,从事管理工作;二则继续从事技术工作。对于后者,软件架构师(software architect)是很多软件开发工程师追
原创
4119阅读
2评论
2点赞
发布博客于 10 年前

致IT同仁 — IT人士常犯的17个职场错误

记得刚参加工作时(那是97年),中国的IT刚刚兴起,那时,作为一个IT人士是一件很光荣的事,而那时的我正在做电气和电子相关的工作。99年第一次跳槽,进入了IT行业做软件开发。至今,中国的IT已经走过了十多年。但昔日的“光荣一员”却成为了现在的“IT农民工”,这究竟是怎么了?是中国的IT发展已经很好了所造成的吗?不是!在我看来中国的IT还比较的原始,还有很大的提升空间。我认为造成这一切的都是我们自己
原创
4044阅读
6评论
1点赞
发布博客于 10 年前

出色技术团队的关键要素

原创作品,允许转载,转载时请务必以超链接形式标明文章原始出处 、作者信息和本声明,否则将追究法律责任。http://blog.csdn.net/hzliyun/article/details/7078947。对于出色技术团队的关键要素可以从下图中找到。下面让我来对其进行解读。这幅图首先映入眼帘的是,它是一个三角形,而其顶点则是求精。求精离不开
原创
2038阅读
0评论
1点赞
发布博客于 10 年前

无能的很可能正是我们自己

原创作品,允许转载,转载时请务必以超链接形式标明文章原始出处 、作者信息和本声明,否则将追究法律责任。http://blog.csdn.net/hzliyun/article/details/7078937。现实工作中,存在不少情形让我们觉得身处混乱使得工作应付不过来。最为常见的现象有:工作量太大、人力资源不足、沟通不畅等等。对于混乱状态的出现也存在不同的解释,比如:1
原创
1881阅读
0评论
3点赞
发布博客于 10 年前

技术管理的核心内容 — 提高团队技能

原创作品,允许转载,转载时请务必以超链接形式标明文章原始出处 、作者信息和本声明,否则将追究法律责任。http://blog.csdn.net/hzliyun/article/details/7078920。最近与同事聊天,从软件质量保证的方法论谈论到了技术管理,那技术管理的内涵到底是什么?在此通过这篇文章做一个小小的总结和适当的外延。 技术管理给人的感觉更多是工作
原创
5706阅读
1评论
2点赞
发布博客于 10 年前

软件开发架构师的职责

原创作品,允许转载,转载时请务必以超链接形式标明文章原始出处 、作者信息和本声明,否则将追究法律责任。http://blog.csdn.net/hzliyun/article/details/7078905。我在Motorola的网络部(注:今年4月份该部门被Nokia Siemens Networks收购,所以我现在是NSN的员工)担任架构师(Software Archi
原创
3569阅读
0评论
0点赞
发布博客于 10 年前

高质高效软件开发组织能力模型

原创作品,允许转载,转载时请务必以超链接形式标明文章原始出处 、作者信息和本声明,否则将追究法律责任。http://blog.csdn.net/hzliyun/article/details/7078896。背景至今,我在Motorola网络部工作超过了5年,所在的产品线也是采用统一软件开发过程和敏捷思想(但不是SCRUM)来组织软件开发活动的,但这5年多的工作经历从未
原创
3248阅读
3评论
0点赞
发布博客于 10 年前

《专业嵌入式软件开发》的样章、建议和勘误

互动  京东  当当  亚马逊  豆瓣该书已全面上市。您可以通过本博文以留言的方式写下您的建议和发现的错误,我会不断对之整理以作本文内容的一部分。谢谢! 感谢您在购书网站或豆瓣写下书评以帮助他人选书。如觉得该书不错,请帮忙推荐给周围的人。另:本书入选CSDN 2011年度十大最具技术影响力图书(本版)。感谢读者的喜爱与认可。样章《前言》《目录》第10章《ABI/EABI规范,缔造程序兼容合约》第1
原创
6062阅读
13评论
10点赞
发布博客于 10 年前

实施软件平台与框架开发的注意事项

原创作品,允许转载,转载时请务必以超链接形式标明文章原始出处 、作者信息和本声明,否则将追究法律责任。http://blog.csdn.net/hzliyun/article/details/7078298。我在《专业嵌入式软件开发 — 全面走向高质高效编程》一书中用一章的内容指出,软件平台与框架开发是高质软件的打造之路。这里想进一步谈一谈实施这一高质软件打造方法所需注
原创
2135阅读
0评论
0点赞
发布博客于 10 年前