很多开发人员都认为自己是职业人员;然而,这是一个没有成套职业标准的行业,所以很多“职业人员”仍然在开发不安全的软件。有时候这是由重复使用原来的代码、语言规范的缺陷造成的,或者因为库由业余程序员编写造成的。代码、语言、库,以及协议都可能已经在创建之后被用到了其它完全不同的地方,或者是在某些安全威胁被认识到之前开发的。有的不安全软件是编程实践不佳的结果。安全和工程很少会成为大多数软件设计中的共同目标。
当前,大多数程序员都是根据其经验或者教育程度被雇用的——或者有的时候仅仅因为他或者她是能够完成某个项目的唯一人选。公司也会把认证作为聘用过程中的一个工具,但是这些非官方的认证项目大多都是根据知识和代码编写技术制定的。聘用条件可能在不久的将来就会发生改变。
2003年12月,(美国)国土安全部(Department of Homeland Security)发起了一项重要的计划,旨在发现和解决计算机最基础层次的安全问题。跨软件开发生命周期的安全(Security Across the Software Development Life Cycle)工作组的最初建议是在2004年3月1日之前改进软件工程、部署和管理。这个任务组的决定可能最终会对你要如何工作产生重大的影响。例如,在初期阶段的一个主要建议是给软件开发人员发放执业执照。执照的发放将会为安全、良好的(编程)实践,以及道德规范建立并强化一个基础。它还会为这项影响国家和世界重要基础结构的职业建立起相应的法律职责。
开发人员常常会打擦边球,在拼命工作以赶在不可能的最后期限之前完成任务的时候,他们常常会在安全上偷工减料。但是即使不是程序员的人都会意识到:软件是一项重要的资源,不安全的软件会对财政产生危险——有的时候甚至是身体上的危险。例如,不安全的软件会变成经济上或者身体上的威胁,就像不合格的会计师或者建筑师(所存在的威胁)一样。
有的软件对于商业的金融安全来说是十分重要的,但是它不会影响到其重要的基础结构;然而其它软件里的错误则可能造成大范围的影响。这可能导致不同级别的程序员和软件工程师的出现,在这种级别体制下,业余程序员仍然会在低端领域(例如设计人员或者只提供信息的Web网站)受欢迎:通过认证的开发人员能够解决更加复杂和敏感的编程任务;只有拥有执业执照并经过认证的程序员才能够进行关键任务的编程,或者是一旦发生故障就会造成大范围影响的程序的编程任务。
执业执照可能会和某种形式的法律责任结合在一起,这样就会把一些开发人员排除在商业领域之外。但是,职业执照,以及改进的软件质量和安全,会带来程序员的分级——报酬最高的是那些有执照的职业人员。执业执照甚至会对国际采购产生重大的影响,因为建立一种国际机制对不良的编程实践加强责问不会花太长时间。(如果你认为执业执照的发放听起来还很遥远的话,那么你就应该知道:已经厌倦了软件不断崩溃的CEO们,正在开始疑惑为什么清洁工都有自己的责任,而编程团队却没有。
除了对得到软件专家执业执照的开发人员有潜在的经济利益之外,伴随他们的还会有他们工作方式的改变。今天的很多开发人员迫于经济的压力正在生产出不够安全的应用程序,但是当许可证成为必需要素的时候,我们就可能回到制定道德规范和最佳实践的层次,以迫使管理层接受重要的安全特性和测试。
这些变化可能不会很快就生效,但是不会再要多少年,大多数重要的项目就会要求程序员有比通过认证考试更多的条件了。