[置顶] 【专访刘洪峰】我为什么坚守了.NET技术十多年

【说明】这是一篇关于我的CSDN专访文章文章,原文链接:http://www.csdn.net/article/2014-12-19/2823223/1

  [置顶] 【专访刘洪峰】我为什么坚守了.NET技术十多年_第1张图片

刘洪峰( 博客),网名叶帆, 叶帆科技创始人兼CEO,前微软(中国).NET Micro Framework开发团队成员,微软全球最有价值专家(MVP),CSDN十大MVB。

从事软件开发已近二十年的历史,从最初的DOS平台下的Basic、C、Foxbase,到现在的Windows平台下的VB、VC、C#,顺着微软技术为主的技术路线一路走来,上规模的大型程序(上千行过万行的代码)不少,小程序更是多如繁星;以前主要用VC/VB/EVC开发程序,现在主要用VS2010/VS2012(WinForm C#/.NET MF C#/ASP.NET C#)、RVDS/ MDK(ARM Cortex-M C/C++)开发。

从2008年开始进行硬件设计和嵌入式开发,主要熟悉TI DM335/DM355芯片、Atmel9261系列芯片和ST Cortex-M系列(STM32F103/STM32F207/STM32F405/STM32F429)芯片上的开发,基于ST系列的芯片及.NET Micro Framework系统推出了物联网智能终端、物联网智能网关、NetDIY和.NET Gadgeteer等系列产品。

主要系统/产品研发列表:二型计量监控系统、焦炉四大机车自动化系统、烧结配水监控系统、地铁隧道广告影像系统、通用组态软件、嵌入式系统组态、LED视频影像系统、ICU病室输液系统、YFIOs和YFHMI物联网中间件等系统;物联网智能终端、物联网智能网关、NetDIY、.NET Gadgeteer、医疗注药泵和智能电表等产品。

我的软件开发二十年回顾

CSDN:请和大家介绍下你和目前所从事的工作。

刘洪峰:大家好,我叫刘洪峰,叶帆是网名,由于博客名称是叶帆工作室,创立的公司名称也就自然起了叶帆科技(北京叶帆易通科技有限公司)。

目前正在做的工作,主要就是物联网中间件软硬件技术研发(以.NET Micro Framework为核心技术,做软硬件及跨平台的解决方案支撑)。所谓物联网中间件,就是上可以连云平台(数据存储/运算/展示),也可以用手机和平板去操控,下可以和各种传感器进行通信,要熟悉各种硬件接口和通信协议。所以几乎需要了解和掌握全平台的技术,否则你无法支撑物联网中间件这个技术平台的研发。

  • 硬件方面主要就是各种网关和采集终端,上可以联网,下可以接入各种传感器。
  • 软件方面主要是组态化开发,可视化方式连接各种硬件和系统,少编程或免编程完成系统的快速搭建。

CSDN:通过你的博客,看到了不少好书的推荐和分享,看得出来你是一个重视阅读的人,可否分享一下你的心得和体会等。

刘洪峰:其实我读的书相对杂乱,文学、历史、科技、数学、心理学、天文和地理等等不一而足。相对而言,内心深处比较喜欢中国的古典文学,比如唐诗宋词、诸子百家的代表作、四大名著、三言二拍之类的,其实这些虽算不上古典中的精华,但是对中国的一些古典的传统还是有一定传承意义。读书其实主要学习两种内容:一曰道,一曰术。道是本,术是末;道是思想、是方法,术是技能;道让你知道你该如何学习、该选择什么学习、该坚持什么、该放弃什么,术就是学习具体的技艺了。

所以我很感谢我读过的那些古典书籍,可以让我知道该选择什么,该坚持什么。

CSDN:你也写书,能不能简单介绍下?

刘洪峰:已经翻译出版了一本《玩转.NET Gadgeteer电子积木》,另外和两家出版社也签了出书合同,一本是《STM32快速原型化开发》,另外是一个系列(物联网学堂系列):《.NET Micro Framework入门》、《.NET Micro Framework实战》主要讲述用.NET Micro Framework系统进行物联网相关技术的开发和应用。

CSDN:在大学时,你的编程能力就已很强,能否分享下你早期编程的故事?

刘洪峰: 我应该是幸运的,在大学初次接触计算机的时候就被分到试验班,每周仅有的两次课都可以在机房中度过,最早学习的DOS命令和WPS却没有引起我多大的兴趣,直到Basic语言的出现,才使我的认识有了极大的改观,编程真是神奇的东西,不仅可以进行四则运算,还可以在屏幕上呈现各种各样的线条和画面。从那一刻起,仿佛成了另一种生命的主宰,你可以让它做你想做的一切,你的内心充满了满足感和成就感。俄罗斯方块、贪吃蛇、绘图板等等小程序就是在那个时期实现的。

学习了近一年的Basic,却发现代码量接近一千行的时候,执行时会出现莫名奇妙的异常。最后只好自学C语言(我非计算机科班出身,C语言并不是我们的必修课或选修课),最初的三个月是痛苦的,因为一个分号或一个括号的漏写,就会出现n多莫名奇妙的错误。不过一旦你驾驭了C语言这种计算机语言中最自由的烈马,你就尝到了编程的乐趣。那段时期的每个晚上的6:00~10:00和周六、周日的全天,都可以发现我在机房中的身影,当时最乐而不疲的事就是对数学中的各种各样算法,用C语言作精妙地实现。

这种付出还是有丰厚回报的,我不仅在校高等数学竞赛中获得了一等奖,还在校计算机编程竞赛中折取了桂冠,此外最好的回报就是我作为冶金的学子,毕业设计竟然可以是计算机编程。最终我也不负众望,7000多行的C++仿Window95界面操作代码,使《图书管理系统》在竞争激烈的毕业答辩中获优。

CSDN:你是以物联网中间件软硬件开发和服务为主要业务的北京叶帆易通技术有限公司的创始人,是在物联网一线上的打拼者,能否谈谈你的嵌入式开发之路?

刘洪峰:我从小就比较喜欢电子类的产品,也有一个制造机器人的梦想。但是造化弄人,大学的专业、毕业后从事的工作都和此没有多少关联。不过幸好上帝为你关上一扇门的同时,又为你开启了一扇窗。大学时,我们班被选为计算机课程实验班,只要一上计算机课,就是在机房实操,相比其他班学生可以更多地接触计算机,加上自己对编程的痴迷,后来在校计算机竞赛中也曾获得过第一名。

毕业那年,钢铁行业并不景气,所以本专业很难分配。开明的校领导允许以计算机等相关易于分配的专业进行毕业设计。很幸运,我在DOS系统下用BC3.2开发的 《图书管理系统》获得了当年的优秀毕业设计,并代表获优的同学进行了演讲。

不过毕业后,还是进入了钢铁企业工作。虽然在工作中成功开发了自动烧结配料程序,受到了领导的好评,但是一年后,还是借一个偶然的机会来到了北京一个做工控自动化的公司。

在此公司,一做就是做了7年,从一个开发部普通的程序员,到最后管理整个研发部门。在此期间陆续开发出二型计量监控系统、焦炉四大机车自动化系统、烧结配水监控系统、地铁隧道广告影像系统、通用组态软件、嵌入式系统组态、LED视频影像系统和ICU病室输液系统等等。其开发平台包括Windows、WinCE和PLC等。

2007年是一个转折年。多年的工控经历,让我感觉要想真正做好一套系统,仅仅熟悉软件开发是远远不够的;另外就是为组态软件找一个跨平台、能力强的脚本语言;那一年,在《程序员》杂志上,看到了马宁写的.NET Micro Framework的一个专栏文章,通过他的介绍,发现.NET Micro Framework就是我心目中要找的那个系统。又在当年9月份参加了微软和CSIP(工信部)共同举办的关于.NET Micro Framework技术研讨会,进一步加深了对.NET Micro Framework的了解和认识,这加强了我对学习这个系统的愿望。

2008年8月,在马宁引荐下,有幸加入了微软中国.NET Micro Framework项目组,进行了为期四年的研发和学习。也就是经过了这四年,逐渐从一个对硬件开发懵懵懂懂的人,转变为一个可以相对熟练进行ARM嵌入式开发的人。

随着物联网技术的发展,.NET Micro Framework这种易于开发、跨平台、轻量级的嵌入式系统,摇身一变成了物联网系统开发最好的一种选择。正是7年工控开发和现场实施经验以及四年.NET Micro Framework的深入学习,在物联网开发大潮中,才有底气和信念于2012年离开微软,创立以物联网中间件软硬件开发和服务为主要业务的北京叶帆易通技术有限公司。

通过近两年的努力,逐步推出了以.NET Micro Framework系统为核心的一系列产品:如物联网智能终端、物联网智能网关、YFIOs(物联网数据组态)、YFHMI(物联网画面组态)、NetDIY和.NET Gadgeteer。

如果人心中有一个梦想,并且坚定了这个梦想,后续所做所选,也许都是为之铺路。经过十年多的时间,自己也从一个普普通通的软件程序员,蜕变为一个真正的嵌入式软硬件设计人员、开发人员。所有这一切也许都是源于梦想,基于兴趣,还是那句话:梦想是人生之路的灯塔,兴趣是学习最好的老师。

CSDN:十年多的工作经历,你做过很多项目和产品,从开发语言的角度来看,这一路是怎样的?

刘洪峰:这十多年时间,我做过太多项目和产品,在以上几个问题的回答中,也提到了些,所以从使用过的开发语言角度谈一下:

  • DOS平台:Basic(TB,QBasic)、C(TC)、C++(BC3.2)、foxbase等;
  • Windows平台:Basic(VB),C++(VC),C#;
  • WinCE/Windows mobile开发平台:C++(EVC),C#;
  • PLC平台:梯形图,语句表(类似汇编语句);
  • ARM开发(ARM7/ARM9/Cortex-M)):C/C++(MDK,RVDS);
  • .NET Micro Framework平台:C/C++(MDK,RVDS),C#。

从上可以看出,C/C++几乎贯穿我所有开发项目的始终。用武侠小说的术语,学习C/C++就是学习内功,学习其他的就是外家功夫了(好看,不一定中用)。C/C++技术作为底子,学什么语言都很快,并且还学的深刻。比如内力雄厚的萧峰用一套少林长拳几乎无敌天下了(这要感谢我学计算机语言的时代,是DOS时代,大概有2~3年的时间,都在用C和C++做和数论相关的运算和练习了,所以才打下了相对深厚的C/C++基础)。

虽然有几届微软MVP是VB6技术方向,但是在跨越到.NET平台的时候,还是义无反馈地选择了C#,后续几届的微软MVP也选择了微软嵌入式技术为主要方向。

这些技术就是“术”,只有熟练掌握了,才能实现你心目中的那个“道”。

CSDN:从最初的DOS平台下的Basic、C、Foxbase,到现在的Windows平台下的VB、VC、C#,顺着微软技术为主的技术路线一路走来,12年来守着 .Net 为何从未放弃?

刘洪峰:在大学时代,主要是基于DOS系统,进行C/C++的学习,那是典型的面向过程的开发,特别是开发基于图形的界面,更是比较繁杂。

进行工业系统设计的时候,一般现场施工留给软件开发和调试的时间也就40天左右,开发效率和稳定尤为注重的,所以偏数据计算的用VC开发,偏界面开发的用VB进行开发,虽然采用面向对象的开发思想,采用可视化的图形化开发方式,比DOS下的开发效率提升了数十倍,但是在界面放缩、代码输入、通信控制等等方面还是不尽人意,并且COM/DCOM以控件、DLL为主的开发模型,难于注册、难于升级、难于兼容和难于维护。

而用.NET进行开发,这一切问题都得到了有效的解决,窗体放缩自动处理,代码自动生成、自动补齐、自动语法检测,各种类库可以方便引用,大大提高了开发效率,并且是托管代码,垃圾自动回收,系统的稳定性也得到了很好的保障。

后来深入学习的.NET Micro Framework系统,就是标准的.NET开发平台,所以更没有理由放弃.NET开发了。

在回答上一个问题的时候,我提到了“道”和“术”,也提到了传统文化对我的影响。其实做人做事,“道”最重要,道就是你心目中的蓝图,你的想法,你的思路,“术”就是实现你心目中蓝图的方法和工具。既然.NET技术,从云平台开发、Windows开发、手机平板开发、到嵌入式设备开发都能胜任,并且最近微软大力推广.NET开源跨平台支持,支持安卓、iOS系统开发,从技术发展的角度来说,没有让人放弃的必要,并且Microsoft Visual Studio系列开发工具,毋容讳言是当前全球最好,最易用的开发工具(没有之一)。从“术”的角度来说更是没有放弃的理由。

条条道路通罗马,.NET技术这条路,是我最熟悉的一条路,通过它我可以更快地实现我心目中的蓝图。另外根据我的经验,熟练掌握任何一门技术,都需要投入很大的精力,正所谓十年磨一剑,见异思迁,泛泛而学,是很难用不熟练的“术”来实现心目中的那个“道”。

编者注:和刘洪峰的聊天是一个很享受的过程,随和、谦逊的他让人很舒服。以上内容会让你对刘老师的一路走来有一个清晰认识,以及他对于工作和生活的态度,都令人敬佩。下面就请网友们跟随乐于分享的刘老师的脚步,深入谈谈物联网、程序员等相关热门话题。

未来的物联网开发平台

CSDN:08年的时候你就对人工智能谈了自己的看法:《论本我、自我、超我对人工智能的启示》,现在是否有新的方向和理念?

刘洪峰:创造机器人仍然是自己的梦想,虽然由软件到硬件,掌握了一些软硬件开发技能,但是这远远不够,所以依赖目前物联网相关的业务,积累优秀人才、积累软硬件技术、积累研发资金。尤为重要的是,自己要想明白机器人的创作蓝图,等这一切规划好的时候(所谓的“道”成),也许才是真正投入到机器人研发事业的起始之日。

CSDN:物联网这个概念最近很热门,很多人也觉得物联网这个领域非常有发展前途:它可改变人们日常工作、生活的方方面面,也将让世界变得更加智能,更加人性化。其中的最大功臣莫过于嵌入式开发技术,很多人都对嵌入式软件开发一知半解,能否结合你这么多年的开发历程,谈谈你对嵌入式开发的理解。

刘洪峰:我们小时候碰到的一些玩具大都是机械式的,也很容易进行拆解,一眼望穿其系统结构,很容易满足自己年幼的好奇心。但是现在的一些智能玩具,打开一看,你所有的疑惑止步于一个个黑黑的芯片。人遇到问题,难以解惑的时候,往往有三种反应:

一是直接放弃,泯灭了自己的好奇心; 
二是求助于专家,希望专家只言片语,就可以让自己短时间解惑(其实是永远陷入半知半解中); 
三就是上下求索,通过长时间的努力,让自己真正解惑。

以我个人的经历而言,如果不是遇到了.NET Micro Framework,可以让人相对容易的接触嵌入式和学习嵌入式,也许就和嵌入式无缘了,比如以太网功能的实现,USB功能的实现,别说功能实现,连最起码的原理了解都要花大量的时间,如果一开始就触碰这些偏底层的内容,也许兴趣还没有养成前,你学习的勇气就已经丧失殆尽了。

理解物联网,理解嵌入式,其实这和人的认知规律有关系。我们东方人的思维方式是一种先总后分,是希望站在一定的高度上先总体把握这个事物,然后再逐个分析;西方人的思维方式正好相反,一般是先研究每个细节,然后汇总成整体。

  • 目前的Arduino、树莓派等各种嵌入式模块的学习大概都是走西方思维的路子,先让你学习各种细节,并且即使从细节学起,门槛还是比较高的,比如你要对硬件有一定的了解,要熟悉C/C++开发(最好还要懂点汇编),还要熟悉掌握开发环境(嵌入式开发环境,我个人一直都认为,这是最难的一步,不是你程序不会编写,而是你根本很难把程序下载到硬件运行),所以学习这些的人群,大部分是嵌入式开发的从业人员,或者是开了相关嵌入式专业的学生,真正靠个人自学,前期还真需要投入很多时间,真正学好更需要毅力和坚持。
  • 其实我们做物联网开发,大都是基于一种整体思维,举一个简单的例子,比如我们想采集温湿度,并上传到服务器,然后通过网页呈现,通过电脑、手机和平板都可以查看。其实最开始你并不关心温湿度传感器是什么硬件接口的,是什么通信协议的,你只想获得温度和湿度,同样你也不关心以太网(或Wi-Fi模块)具体的底层实现,你只需要会用Socket或Http开发,把数据上传到服务器即可。
  • 如果你一开始从温湿度传感器研究,你会发现温湿度传感器有很多种,硬件接口有RS485、RS232、I2C、单总线和AD模拟量等等,即使硬件接口相同,但是不同厂家,通信协议又往往不同,这个时候你就会只见树木不见森林,迷失在技术的细节里。

但是你采用基于.NET Micro Framework为核心的.NET Gadgeteer技术,就可以通过可视化拖拽的方式快速完成硬件连接和搭建,各种硬件接口,通信协议,系统自动为你完成,你可以快速完成相关项目需求。让你可以在短时间就能对整个项目有一个总体把握,如果你还希望继续投入,可以抽丝剥茧层层去深入研究(.NET Micro Framework完全开源,无任何授权费,几乎没有什么限制)。

毛主席说过,要想知道李子的滋味,就要亲口尝一尝。同样要想真正的理解嵌入式开发,就要亲自尝试一下。如果你和我一样,最开始也是一个普通软件人员,我推荐你不妨体验一下.NET Micro Framework开发(特别是.NET Gadgeteer开发),看看是否也和我一样,可以很自然地成为一个真正的嵌入式开发人员。

CSDN:嵌入式开发的开发板有哪些?初学者又该如何选择与学习?

刘洪峰:市面上的大部分开发板如Arduino系列、树莓派系列、特定芯片开发板(如STM32系列),我个人感觉门槛还是相对较高的,如果你是一个有志于硬件研发为方向的用户,有一定C/C++功底,并且有很好的学习环境,可以尝试选择这类开发板。

如果你只是一个物联网爱好者,想一窥物联网的奥秘,有如下建议可以选择:

  • 纯软件开发人员,我建议你从.NET Gadgeteer开发套件开始学习,这是一种典型的以软件开发的方式,去开发硬件,基本上没有什么门槛,让你可以很轻松的和硬件打交道,基本熟悉后,后续的嵌入式开发之路就会好走很多。
  • 标准硬件开发人员,比较喜欢Arduino这种插针方式的硬件开发,那么你可以从NetDIY开发套件开始入手,可以让你,不知不觉地熟悉了软件开发的技术和理念。

总之,无论是软件人员,还是硬件人员,想跨界发展,那么.NET Micro Framework是一个很不错的选择。

CSDN:你著有《.NET Micro Framework》专栏,有着深入的研究,也总结了一些常见的问题,请问你为何选择.NET Micro Framework技术?开发时有哪些需要注意的地方?

刘洪峰:做系统集成和产品开发有很大的不同,其实做系统集成和做网页有些类似,都是把很多已有的功能集成在一起,综合运转起来。对做网页来说,脚本语言必不可缺,虽然它运行效率不是最好的,但它确实是必要的粘结剂,把各种功能集成在一起。

我在工控领域,做系统集成大概7、8年的时间,就急需找一个这样的脚本语言,可以在PC系统,在嵌入式设备中运行,可以方便连接各种各样的设备(当时也做PC组态开发和WinCE组态开发,也急需一个脚本语言)。

在大约2006年的时候,.NET Micro Framework进入我的视野:

  • 它是一个轻量级的.NET框架,专有的直接操作硬件的库(如GPIO、AD/DA、PWM、I2C、SPI、串口和网口等等),用完全面向对象的思想去构建程序;
  • 可以和桌面开发一样的体验用Visual Studio IDE去编写、调试程序;
  • 不依赖操作系统,有自启动的能力。在当时.NET Micro Framework就已经可以在Windows平台运行(.NET MF模拟器)、Linux运行(Digi的一款产品)和在芯片上自启动了。
  • 易于开发,支持跨平台。

这就是我当初选择.NET Micro Framework的最主要原因。

.NET Micro Framework既然是微软推出的,所以还是偏于软件思维去开发硬件,如果你是一个软件人员想做硬件开发,很自然就能接受它。但是你一开始就是一个纯硬件开发人员,估计要熟练掌握,还真需要一定的时间。

注:关于该技术的入门,我们也选出了刘老师的一篇精华博文以飨读者:《.Net Micro Framework 快速入门》。

CSDN:嵌入式的开发要学什么?所要掌握哪些必备的知识?另外,你认为嵌入式工程师需具备怎样的素养?

刘洪峰:对一个非科班出身的技术人员来说,要学习嵌入式的内容应该是非常多的,其实很多是概念和理解上的。比如对中断的理解,我记得花很长时间,才有了一种比较透彻的理解。

  • 常见的硬件接口交互都需要逐步掌握,比如GPIO读写、AD/DA、PWM、串口通信、SPI、I2C、SDIO、网口等等。当然这是基于特定的MCU芯片上的学习,因为不同系列的MCU,不同厂家的MCU,实现上述接口,方式有很大的区别。
  • Cortex-M/Cortex-R/Cortex-A系列是ARM最新的基于32位芯片上的架构,代表当今最新的技术,所以你如果是一个新嵌入式学习者,我到是建议你学习这个,这代表了未来的趋势,否则你去学习8位芯片、16位AVR,然后再过渡到这上面来,其代价也是蛮高的,毕竟开发区别很大。
  • 至于选择哪一家的芯片,这个是仁者见仁智者见智的事,很多时候,选择哪一种是一种机缘,比如我选择ST(意法半导体)就是因为当时手边就有这样的开发板。另外需要注意的是,一旦选择,并且深入学习,然后再切换其他厂家的同类型芯片,代价还是蛮高的,特别是对该芯片基于寄存器级别的研究很久后。

嵌入式工程师需要的素质:

  • 最起码一点,我感觉应该是有耐心的人,因为硬件开发投入在调试上的时间还是非常多的,需要分析的事也很多,没有耐心很难做得深入。
  • 另外就是你最好要非常熟练地掌握C/C++,这是一切的基础。

CSDN:很多行业从业人员都有职业等发展瓶颈,您认为嵌入式开发者的瓶颈在哪里?又该如何晋升?

刘洪峰:我起始于纯软件学习开发,自认为在很长的开发时间里,都不是一个真正的嵌入式开发人员,虽然在2001年起,就开始进行直接读写DOS系统上的ISA板卡,用类似汇编的语句表编写PLC程序,开发基于WinCE系统上的组态软件,和各种智能模块通过RS232、RS485或网络通信。但是以上充其量只能算偏应用层面的嵌入式软件开发。

2008年起开始用RVDS和MDK工具,编写基于DM355上的I2C、USB Device驱动程序,才算真正的嵌入式软件开发。2010年之后,才开始进行硬件设计(MCU选型,接口定义等等,后来偶尔还会绘制一些原理图和PCB),才算真正的嵌入式硬件开发。

现在随着ARM推出新的Cortex - M/R/A芯片技术架构,MCU的能力越来越强,很多以前只能在PC上做的程序,现在直接就可以在芯片上运行了。另外很多属于嵌入式软件的功能,也集成在硬件芯片了,通过寄存器进行操作。所以嵌入式软件开发和嵌入式硬件开发的界限越来越模糊和泛化。

有了类似.NET Micro Framework这种嵌入式开发系统之后,你会发现开发嵌入式软件和开发Windows或WEB程序别无二致,又模糊了嵌入式软件开发和传统软件开发的界限。

大到一个航天飞行器、小到一个温度传感器,都属于嵌入式开发的范畴(其实从某种角度来说,PC也是一个嵌入式,很多嵌入式系统都支持在X86架构的CPU上运行)。特别是目前比较热的物联网领域开发,需要网络、手机、嵌入式智能模块和传感器等领域的技术开发,需要掌握的技术更是无穷无尽。

所以对嵌入式开发的从业人员来说,这是一个最坏的时代,也是一个最好的时代。

  • 说最坏的时代,是因为需要有太多东西要学,仅仅拼老本是很难有未来了。
  • 说最好的时代,是因为无论向完全偏软方向发展,还是向完全偏硬方向发展,界限不在那么清晰,技术门槛也不是那么高了。嵌入式的天空那么高远,嵌入式海洋那么深迥,完全可以任君遨游。

所以非要说嵌入式开发者的瓶颈在哪里,那只能在自身寻找原因了。

现在挺流行当产品经理的,比如周鸿祎。在智能硬件和物联网热火的时代,嵌入式开发者的晋升之路其实很清晰,做一个好的架构师,做一个好的产品经理。

但是真正做好任一种角色,如上所说,需要学习的东西太多了,我们永远在路上。

CSDN:一个比较现实的问题,你认为嵌入式开发、软件工程和网络技术哪个更有前途?

刘洪峰:这个问题其实不好回答,因为角度不同,最终的答案也会不同,对别人有前途的,对你不一定有前途。

所以我的答案是,选择你喜欢的,选择你擅长的。另外嵌入式开发其实包含软件工程和网络技术,有了嵌入式作为基础学习其他的,我个人感觉相对容易一些。

CSDN:对于技术平台的选择,其实受到的限制很多。包括技术人员的组成、项目时间和资金的情况,以及所选技术的成熟度等,你认为软件开发者应如何选择技术平台?

刘洪峰:这个我感觉还是和公司的性质和最终的发展方向有关。

如果公司是一个以项目开发为主的公司,最终的目的是快速完成项目,那么可以选择一种可以快速开发的框架,只要满足既定的需求即可。

如果公司以产品开发为主,想长期发展,我个人感觉,最好从最基础的平台选起,甚至从零开始做属于自己的系统。

CSDN:微软于上月中旬宣布.NET开发框架开源计划,该开源计划对物联网有着怎样的影响?未来物联网的开发平台是怎样的?

刘洪峰:物联网其实是一个包罗万象,相对复杂的技术体系,和最初RFID+Zigbee的定义不同,现在人们心目中的物联网大概是这样的:

云平台(数据存储/数据处理/数据展示)+手机/平板(访问入口)+智能设备/传感器(数据源/被控端)。

虽然微软的.NET开发平台具备上述三大平台开发的能力,但是其自有手机和平板市场占有率太低,所以谈不上全平台开发了。但是微软宣布了.NET开发框架开源计划,后续还还支持iOS和Android平台的开发,那从物联网开发角度来看,微软的开发平台将具有很大的吸引力,因为你只需要掌握一种技术,就可以全平台开发,开发代价会大大减小。

未来的物联网开发平台,肯定是一个可视化、模块化、可扩展、组态化、易用的开发平台,并且可以同时支持上述三种领域的开发。目前来看,无非集中在三个层面:云、移动入口、端。

在云这个平台上,微软的战略眼光和实际执行都比较到位,至少技术和整体布局上并没有落后。但是在移动入口(手机、平板),起个大早,赶一晚集,拉一个偌大的诺基亚来垫背,也没有摆脱败局。所以现在宣布开源.NET,支持Android和IOS开发,就是想在移动入口有所作为(最近office一些产品也为这些嵌入式平台免费提供了)。剩下的就是端,这个端不是指传感器等设备,而是指接入端,虽然.NET Micro Framework设计之初,是专为智能设备开发而准备。但是随着物联网时代的来临,接入设备的多样性,及通信的复杂性,让易于开发和易于调试的.NET Micro Framework重新焕发新的生命力。微软重新重视.NETMicro Framework,云+端同时发力,在物联网时代,胜算就会多几分了。 

我已经连续7年参加ARM的技术研讨大会了,近几年来,ARM通过推出Cortex系列的产品,在硬件层面,尽可能统一了不同厂家的芯片的核心功能,另外又通过CMSIS中间件,抹平了各厂家的芯片差异, 借力mbed和CoAP技术提供物联网开发支持。通过JS、HTML5、C/C++等开发语言,借助开源库,通过几年的努力,逐渐形成了相对完整的物联网开发体系。不过C/C++开发,开发门槛比较高,调试和维护都不是太方便,对微软这种以易用起家的公司来说,物联网领域充满机会。

物联网从云到端、到手机、到平板,各种软硬件平台,借助.NET开发,通过统一的开发工具,统一的开发语言,花最小的代价,完成整体开发——至少这是目前我所看到的,最诱人的前景。

技术人员创业的合伙人最好是偏于市场和销售

CSDN:你作为资深程序员,到如今叶帆科技的缔造者,你认为程序员是产品的参与者和实现者,还是应成为产品的推动者?也就说一个程序员应该如何定位自己的身份?

刘洪峰:现在是网络时代了,做产品不再是闭门造车了,很多的时候产品都是迭代开发,也就是先推到市场,客户反映问题,然后修改调整后,再推到市场,等待客户继续反映问题。产品使用的人越多,影响力越大,客户越多,反馈的问题越多,越利于开发出好的产品,考验出真品(另外对一些工控类产品,其实现场能持续稳定的运行,就是最大的考验)。

所以程序员不应仅仅是产品的参与者和实现者,还应该是推动者,让更多的人去用你研发的产品,并且站在客户的角度去开发产品,不断完善升级。

CSDN:作为一个走上创业之路的技术人员,能否谈谈你对创业的理解?以及技术人员创业的优劣有哪些?

刘洪峰:我对创业的一个最直白的理解就是,你有一个想法(或者说是一种信念),你充分借助一切条件去实现的过程,其实就是创业的过程。

创业要成功,或者说做成一件事,其实最初具备的条件倒不是最重要的事,关键就在于你对想法的清晰程度、坚定程度,成功大多数是坚持的结果。

技术人员创业,肯定是比较有想法,也相对坚持,可以相对容易地研发出产品,但是能否让用户接受和推销出去,相对很难,这对公司的长久发展很不利。所以如果有条件,最好和偏于市场和销售的人共同去创业。

CSDN:作为一个公司的创始人和资深程序员,你现在每天还会写代码吗?以及一天的生活节奏是怎样的?

刘洪峰:曾经有一个网友问过我,你是不是天生就喜欢写代码,为什么天天写,还不厌烦?其实从1995年开始写第一行代码开始到现在,虽说不上天天在写代码,但是至少每周会有一半的时间去写代码,已经成为一种习惯,并且内心确实很喜欢写代码,那种你有一个想法,然后通过写代码去实现的过程(特别是自己能设计硬件之后),是一个特别享受的过程。

现在几乎天天上班,很少有休息的时候,不过即使这样,还是感觉有很多事做不完。每天基本上就是看看微博,看看邮件,和客户谈方案,在群里或论坛里回答一些问题,然后剩余的时间基本上就是写代码了。

我写博客的心得和体会

CSDN:你已经在CSDN写了十年的博客,你有什么心得和体会可分享。

刘洪峰:其实从2004年开始写博客算起,几乎每个月都有一到多篇的博客文章发表,但是从创立公司以来,各种杂事太多,少有时间写博客了,深以为憾。希望后续有机会恢复每月至少一篇博文的习惯。

要说心得体会,涌上心头的肯定有很多,但是简而言之,有如下几个方面:

一是写博文可以整理自己的技术心得和思路; 
二是写博文可以让志同道合的人找到你; 
三是写博文可以给你带来荣誉(比如2008年获得CSDN的十大MVB); 
当然写博文更是可以给你带来很多你意想不到的机会……

CSDN:你与CSDN深厚的渊源和友谊,从04年的第一篇博文,到CSDN十大MVB,在CSDN论坛VB版版主,参加CSDN举办的英雄会……你对CSDN有着怎样的情感?

刘洪峰:说起和CSDN的感情和渊源,往事历历在目,犹记得我在CSDN 2008十大MVB获奖感言中所说,CSDN是一所大学,每个人都可以在其中学习和成长……

从2003年加入CSDN论坛后,大部分时间都在交流和分享VB开发技术,另外从2004年也开始写博客文章,正是在论坛和博客上面的不断耕耘,才有机会在2006年起连续6年被评为微软MVP,才有机会在2008年被评为十大MVB,才有机会进入微软.NET Micro Framework项目组进行为期四年的学习和研究,才有机会以.NET Micro Framework为核心技术,进行物联网中间件平台的搭建,并以此创立叶帆科技公司。

从当上了CSDN论坛的版主之后,几乎每年都去参加CSDN举办的活动,不仅可以了解最新的技术,更结识了不少技术网友,对自己整体素质的提高非常有助益。

十多年时间一晃而过,从初识CSDN时的懵懂技术初学者,到现在成为物联网、智能硬件开发的创业者,这一切都离不开CSDN的培育和提携。希望我们未来能有更好的发展,用我们的成绩为CSDN争光添彩。

CSDN:你对CSDN有什么建议?

刘洪峰:谈不上什么建议,只是我个人感觉,在科技时代,对人类发展最具有推动力的其实是一群技术人员,所以应该站在技术人员的角度,更关爱他们,给他们提升的空间,助他们成功(其实CSDN大多数也都是这样考虑,这样去执行的)。




你可能感兴趣的:(物联网中间件)