我的时间比CPU的时间更值钱

时间就是金钱

各行各业都需要计算机软件,甚至有人说:“未来的所有公司都将是软件公司”,这预示着社会发展和科技进步对软件设计的需求非常大。

软件设计成为了一个普通的职业,软件工程师像平面设计师一样普通,平凡。网络上程序员戏称自己是“码农”,其实是非常贴切的。30年前,公司里都有一个职业叫做打字员,可是现在人人都会打字了,打字员这个职业消失了。在不远的将来,大多数人都可以将自己的想法,创意用计算机程序实现,那时程序员也将会和打字员,绘图员这样传统的职业一样消失。

不过现在的情形却不同,随便请人写一个手机App还是非常贵的,一个简单的android的App开价大概是3万元,加上服务器端程序和一年的维护将会超过10万元。这一现象的主要原因之一就是软件开发的效率低,周期长,和所有的手工职业者一样,软件设计的人力成本太高了。

学习曲线的定义为”在一定时间内获得的技能或知识的速率”,又称练习曲线(practice curves)。学习曲线效应指的是越是经常地执行一项任务,每次所需的时间就越少。

软件行业基本上是以人力资源为核心竞争能力的行业,而程序员对某一项技术的学习能力对软件生产的效率影响巨大,解决这个问题的方法之一就是降低程序设计的难度,提高程序员的工作效率。

不知道别人是怎么想的,至少我是这么认为:程序员的工作的很大一部分时间是学习。新的程序设计语言,系统架构,API层出不穷,每当程序员设计一个新的程序,通常是一边写程序,一边在google,百度语言的语法,API的调用方式。就我的经验而言,程序员大量的工作时间都是在看书,学习新的设计工具,API的使用,而不是在考虑算法和程序本身。降低程序员的学习量也是提高程序设计效率的主要方法。

一个应用软件涉及的软件技术非常多,公司只能将程序员的工作分成了前端工程师,UI设计师,后端程序员,嵌入式程序员等等奇奇怪怪的岗位。而且不同岗位的程序员交流,接口定义,调试也是一大堆的问题,这对于一个小型公司或者初创公司而言,是承担不起的。不是可以外包么?其实所谓的外包公司也一样,需要配置许多的各式各样的程序员,最终出来的开发费用也是非常高的。

面对这样严峻的问题,我们可以采取什么样的解决之道呢?我认为就是使用最少的开发工具来开发软件—这个方法我称为“最少工具法(minimum tools method)”。也就是说,尽量使用同样一种软件工程的体系架构来开发所以软件,让程序员可以迅速地进入程序设计的工作,降低程序员学习工具使用的时间成本,具有快速的学习曲线。

跨平台程序设计技术能够有效地实现“最少工具法”,使用统一的设计语言,来适应更多场合的程序设计,使用简单的IDE环境和工具。

人们欢迎简单的程序设计方式。比如ardunio,processing都是人们欢迎的程序设计语言。