Shane 于 2012 在编程哲学、管理、技术、成长之路的新思想

目录
1 【思想】反思编程的起源
2 【管理】管理开发团队的新想法
3 【工作】贯穿的追求与动力源 + 观点共鸣
4 【工作】技术成长是一种慢突变,珍惜生涯贵人


  实际上我的这篇文章,最开始仅仅源于有人推荐我看了别人的一篇优秀博文。
  真是很优秀,大家可以都去看看。
   《驾驭你的“职场布朗运动”》
  作者李云在其中通过描述他的前半段职业生涯,详细解释了他 25 条职场感悟的产生过程;这种方式能够让我们产生共鸣,并以此学会总结自己的工作感悟;这就是所谓的“成功之心”吧。
  下午写了份回复,结果没想到突然笔记本计算机自动重启了!于是只好重新写……很多字呢……  T T  不过借着重写,我自己又重新深入思考了自己的想法,补充了一些没想到位的内容。

---------- ---------- ---------- ----------

1 【思想】反思编程的起源

  这次感悟源于我看到了 《驾驭你的“职场布朗运动”》中程序逻辑控制(PLC)那部分。
  我不是计算机专业出身,所以对于行业历史缺乏足够的了解。因为工作中没有大量的时间做这些闲事,我也就只能了解了下状态机、Unix 发展过程、GNU/Linux 发展过程、服务器思路变更等内容,很多能让我把行业精神融会贯通的东西,我都不知道。
  今天,我看到了程序逻辑控制,一下子有种恍然大悟的感觉。以前很多注意到过但没办法想过的事情,就这么都看通了。对于我来说,程序逻辑控制这种东西,让我看到了电气自动化的经验升级为编程的中间段,让我看到了编程诞生的胚胎。知道了这个中间段,我就终于知道为什么过程化编程会先兴盛,终于知道如今这种重视分支的编程思路是怎么来的。mianshi
  我有种感觉,如果我继续在软件业工作,我就有希望提出一种和面向对象思想同样级别的编程哲学。这就归功于我今天看到过如今程序哲学的来源,让我的思维能够跳出这种定式。

  说起来,其实美国推广软件学新思路的人,哲学素养都挺高的。我想起以前参加第11届中国系统与软件过程改进年会时交谈过的 Ivar Jacobson ,他是 SEMAT ,一个融合现有各软件开发理论的理论,的开创者。此人能够很自然地运用范式理论(库恩哲学)对自己的理论进行宣传,能够应用后热力学时代的状态-过程分离思考法来开发软件生产、管理过程。(参看我另外一篇日志 《参加云时代质量的力量论坛与 16 届软件展览会的一些收获》)
  熟悉自由软件的人也会知道,Richard Stallman 的各种宣言,在不少中国人看来都有些假大空。不过结合 GNU 计划的实干主义色彩我们就可以明白,他们觉得追求“XX思想”、“XX精神”是一种平常的事情,不假不大不空。

  关于新的编程哲学我脑中还没有成型。我隐隐觉得,它会参考人类的思维模式而获得前所未有的“高预证伪性”,然后获得成功……

---------- ---------- ---------- ----------

2 【管理】管理开发团队的新想法

  因为参加中国软件协会过程改进分会的论坛,所以我被这种理念浸入地很深。我认为过程改进应该是每一个软件人员对自己的要求,也就更是管理软件开发最重要的任务。重视过程改进,意味着认同如下观念:管理软件生产,最重要的不是保证这次做好,而是保证下次比这次做得更好。
   《驾驭你的“职场布朗运动”》中提到,在 UTStarcom 研发部,因为软件规模很大,所以才意识到把设计等软件过程独立划分出来具有什么样不可替代的意义。实际上我们无法指望团队中的人都具备这样的经历和感悟强度,能自行悟理;所以我们才需要通过管理去规范化团队开发者的行为。在小型产品的时候,就尽可能为大产品的更高效作出生产制度上的准备。

  我在这方面有个新想法,目前准备下周二(2012-11-13)开始在新研发团队上进行小规模试验。今天看到《驾驭你的“职场布朗运动”》提到作者接触美国软件人员随便谁都知道怎么去做架构师的情况,更坚定了我尝试的信心。

  参考日本的分层模式带来的高效配合和美国软件人员的全能模式带来的软件人员健康成长,我认为应该在软件生产过程中引入“平级”的员工关系,但在具体的事情上,明确分工职责。上述“分工”,采用分层分工,分离分析、设计、单元测试、编程过程。
  也就是说,比如团队有 5 个人,哪几个人做架构师,这是大家讨论决定的,哪几个人做设计、做编程,也都是这么决定,并不把人限制死,也不论资排辈只根据整个团队对他们的信任程度。同样,每个人都有可能但不绝对,会用别人设计的方案来进行编程,为别人要编写的程序准备单元测试。

---------- ---------- ---------- ----------

3 【工作】贯穿的追求与动力源 + 观点共鸣

  《驾驭你的“职场布朗运动”》中提出了 25 条职场感悟。我赞同其中 24 条。这其中特别是关于细节的意义、看似无用的知识积累的意义、文档的多重意义、好习惯的意义这些,尤其能获得我的共鸣——真希望我的同事们、广大中华大地上没有被认真进行过工程学培养的程序员们,都能够在工作中体会到这些……

  然后是关于阶段性目标——第四感悟。我看到李云在自己的成长之路中,不断经由第四感悟“制定阶段性项目目标,以做项目的形式提升学习效果”,来促使自己坚定不移,提高技术水平;也建议对成长迷茫的人采取这样的成长法。
  不知道是不是性格不同。我的各种进步,几乎从没有来自于这种阶段性项目目标。我也一直在做这些通过一段努力而能实现的东西,工作嘛,都少不了做做项目。不过这种项目过程本身只能给我积攒出作品,而整个过程全都是我把已经会了掌握了的东西用出来,对我的技术长进并不大。相反,信念让我在做各种事情的时候都遇到困境,并必须解决迈过。这是我个人的成长来源。

  我的信念有很多,比如我就是所有的东西都要力争做到 0 错误(无错),我的所有出品必须是精品(求精),我就一定得提出比所有视野中的方案都优秀的方案(争强),我就是要前瞻行业的发展方向,我就是一个不一样的人,我就是一个绝不应付绝不糊弄丝毫的人,等等很多。真的,在我的职业生涯中,甚至我生活的其它擅长的方面,这才是我不断努力提高自己的根本原因……

  纵观 《驾驭你的“职场布朗运动”》作者李云的职场,其实根本就没有进行标准意义上的布朗运动,因为他一直在有所为有所不为地进行控制。也因此,他的职业生涯能够实现早年他自己的期望。我个人认为,成功的职业生涯,应该更像是流水中的布朗运动。我们无法控制社会对我们无序的影响,但我们可以选择比较符合我们前进方向的去接受。

---------- ---------- ---------- ----------

4 【工作】技术成长是一种慢突变,珍惜生涯贵人

   《驾驭你的“职场布朗运动”》作者李云在做 Visual C++ 某变电站图像监控程序的时候,长进好大啊。“在大立公司所参与的第一个软件项目,是使用Visual C++从事Windows某变电站图像监控桌面软件的开发。”“通过该图像监控桌面软件的开发经历,掌握了Windows VxD驱动开发、socket通讯、多线程编程、图像处理(锐化、伪彩处理、图像字符识别和图像对比等)、ODBC数据库编程(用的是SQL Server)等。”
  后来李云掌握了x86处理器、PowerPC 8250处理器架构、操作系统实现方法等,都是在接下来的四年多逐渐掌握的。我们可以看到,网络、多线程、图像、数据库、驱动,都是他在一个项目周期内掌握的技术。之后的技术积累都是长年积极工作学习收获的,是慢功。只有最开始这一份 Visual C++ 的监控程序项目,是一种技术的突进型提高。我管这叫做“慢突变”。

  我自己也经历过 1.8 份这样的慢突变。我早年做算法出身,后来为了工作,参加了社会软件培训(达内科技Java工程师培训)。别人为了学习编程,而我本是为了学习工程学理念。就在这个培训期间,我算是深刻体会了面向对象设计、学会了网络编程、HTTP 编程、多线程理念和并发安全、高级数据结构、框架思想、关系型数据库,通过接口体会了解耦合思想、等等。这些所有的长进,都是在短短半年多完成的。之后直到几年后我终于自主设计完整系统的时候,我还是在将这段时期学到的思想、技能使用出来。
  另外 0.8 次,是我关于架构方面的成长。早年某次在北京找工作,应聘英国某发动机公司Java开发岗位,遇到了沙先生。我在此之前刚独立做完一套云基础架构的模型作为上一家公司的服务器基础架构,也像李云刚到 UTStarcom 的时候,有些自满。沙先生是 Oracle 公司出身,听我自述之后,问了我几个架构的问题。可笑我当时还分不清设计软件结构和架构设计工作的区别,一直在答非所问地讲述我对程序组织规划的理解。于是沙先生指责我根本不懂架构,不过因为我是南京大学出身的,他是南京人,所以还是决定录用我。
  虽然我之后并没有去那家发动机公司,但沙先生的冷水成功让我从自满中解脱出来,并对我在架构上的无知提了醒。之后的工作中我一直在尽力关注架构方面的内容,也基于所做产品沿承的习惯对架构有了些少量的了解,但这方面的成长一直很慢。
  直到更后来,我第一次成为服务器首席工程师,必须要负责起架构方面的工作。这时承蒙我的同事哈春宁同志加盟我的团队,这真是雪中送炭啊!在他的引导下,我在短短几个月内熟悉了虚拟化基础环境、熟悉了 GNU/Linux 服务器特性、熟悉了几大主流开源数据库的特长、熟悉了很多种集群方案、熟悉了网络权限认证和安全的各种原理。当这些都被我掌握的时候,我才在某一天惊讶地发现,我为新互联网产品进行的各种架构安排,已经全都具有充分的理由,已经全都能在脑中想到其它可选方案的优劣。我已经实际上成为了一名架构师。
  这就是我的 0.8 次技术成长慢突变。

  我想,大家的职业生涯中,都会有很多人能成为咱们的启蒙、引导、助推的导师。他们就是咱们的生涯贵人;他们能够让我们产生技术成长的慢突变。可惜也许每个人生涯贵人本有很多,却被咱们不小心的或忽视或错过了大部分吧……

---------- ---------- ---------- ----------

好啦,本次博文要发的内容基本上完毕了。

我目前是掌趣科技股份有限公司智能终端事业部服务器组首席工程师李伸。我最近主要的工作是培养团队、将公司项目产品化、主持制作自由软件工具并用于公司产品中。
  接下来我马上准备用 Java 制作一个高可用的内存数据中心产品,对系统的即时性有很高要求。目前包括技术方案选择、基础软件结构都还没有敲定。如对此有兴趣的同仁可以与我联系。本产品依旧准备做成自由软件~


本文发表在我的技术日志
ITeye : http://surmounting.iteye.com/blog/1721902
开源中国: http://my.oschina.net/shane1984/blog/88184
51CTO : http://shanelooli.blog.51cto.com/5523233/1055240

你可能感兴趣的:(软件思想,技术人员)