有创造力的工程师

 

      懒人程序员三定律:
      第一定律:能够用代码搞定的绝不手工编辑;
      第二定律:能够用一行代码搞定的绝不写一段程序;
      第三定律:能够动嘴皮子解决的绝不写一行代码;能够用一行代码搞定的绝不动嘴皮子。
 
       注重自动化而简洁的方案
       有创造力的工程师, 能让电脑替代工作的绝不自己动手,能用工具和程序解决的绝不手工编辑,能写一行代码甚至删除代码解决问题的绝不写十行代码,能自动生成代码甚至应用的绝不手工敲代码。工程师的创造力体现于在多大尺度上完全让电脑替代工作而自己可以在一旁睡觉。有创造力的工程师需要静思冥想、闭目养神才能创造出漏洞很少的系统设计。不是靠人力和工期,而是靠创造力激发电脑的最佳潜能来自动化高效完成工作,以及创造支持这种工作方式的环境氛围。
  
      举一个例子:假设有一件事情限期3小时完成,里面有一点需要人工判断的事情。一个工程师花了1.5个小时手工完成,另一个工程师花了4小时写了个程序完成。那么该如何判断两个人的绩效呢?前一个人按时完成了工作,后一个人虽然自己没完成工作,但是以后此类工作都可以通过程序数秒内解决。有创造力的工程师“注重长远”,致力于让一件事不是事儿。
 
      有人说,先干完活再花时间自动化。遗憾的是,人在干完活之后动力通常就减少三分之二了。  且干完这件事,必定有下一件事等着;这样又掉入原来的套路了: 加需求,加班,工期, 但是没有时间用来自动化将事情的成本大幅降低。 业务是永无止境的,自动化是一把双刃剑,它需要花时间,而带来的效益又是相当可观的。不花时间自动化,就会永远被业务压着跑,而花时间自动化并牺牲一点短期利益,就可以逐渐省出时间来做更多的自动化,逐渐进入良性循环。关键点在于,是否敢抽出那部分不用于业务的时间,有没有胆量在关键点做出非常的决定和执行,包括服务化、架构调整、系统重构等。
 
     
      创造力驱动

       一件事情,有的人手工做花费半天,有的人写一个程序只要2个小时,有的人写个程序只要10分钟。你立马就知道谁需要加班谁不需要加班。不加班的人,不是因为他懒或没前途没志向,而是因为加班的人技术比较落后,只能用时间和精力上的勤奋弥补。大多数加班的根源在于技术、方法、手段、制度的落后。因此若要“加班”,一定确保加的是“学习先进技术”的班。

       软件开发的特殊之处在于,它不是用熟练度来衡量的职业。但凡一件事,若涉及到人工操作,就有熟练度问题,而熟练度必有上限。一个程序的效率,可以是一倍的,可以是十倍的,甚至可以是千倍百万倍,取决于编写者的智力考量。程序效率的上限可以提升到相当高的地步。因此,程序员的衡量标准是创造性,而非熟练度。富有创造力的程序员,比高度编程熟练工的效率可能还要高出百倍。因此,程序员不要用熟练度来衡量自己的能力,而要用创造力来衡量。

      创造力如何衡量呢?

       * 一个给定的问题,可以制定出多少种目标?每个目标侧重解决问题的哪个方面?
       * 一个具体工程技术问题,可以想出多少种方案? 每一种方案各有什么利弊?
       * 一个具体业务场景,可以预测出哪些可能的错误? 对于每种错误,该如何避免?
       * 一项新的业务,如何分解成各个功能模块? 每个功能模块该负责什么?如何组合和衔接?
       * 一个程序的效率,能优化到多快的程度? 如何在优化的过程中确保程序的安全和可维护?
       * 一个大数据量任务的处理,是否能够充分利用分布式并行计算的能力来实现?
       * 一个现有程序,如果要给它加功能扩展,有多少种设计方案? 会做哪些权衡和折中?
       * 一个产品需求,与现有设计规则冲突,如何确保系统整体设计不受破坏的情况下满足产品需求?
       * 如何说服小伙伴接受你的方案设计和加入你的业余项目?

 

       谁下的功夫深,谁就拥有恒久的技艺和收益。

       工程师文化的核心是创造以及创造力的激励。
 
posted @ 2016-09-25 20:49  琴水玉  阅读(628)  评论(0编辑  收藏  举报