文档开发者中心
我的

对软件的一些认知变化过程

By HW-LF

最近一周参加公司组织的安全特战队培训,得以和公司安全技术领域的许多领导专家进行了直接的交流沟通,对认识还是有一些触动和改变。简单回顾一下十几年来对软件的一些认知变化。

第一阶段:神秘的软件 --> 会写 --> 写好。
小地方出身的穷孩子,大学前没接触过电脑,在大学里又属于要么逃课,要么睡课的渣渣,所以基础之差可想而知。第一次上机课看见旁边同学五指如飞,心里只有羡慕的份。所以当时最大的目标就是把编程作业做出来,程序能跑出来一个正确的结果就行。后来烧了一些脑细胞,终于学会了基本语法,可以hello world的时候,自己颇为得意,觉得已经会写代码了,对得起计算机科学与技术这个专业的名字了。做过几个什么学生管理系统之类的习题,就开始睥睨天下,胸中充溢着“不过如此”的想法....

忘了是大几,跟风装x买了本《TCP/IP详解》。这本书搞IP相关开发的同学会比较熟,内容是结合linux的TCP协议栈讲解实现的。开始根本看不懂,啃了一些天后,忽然开窍了,然后就找一些kernel的代码和相关文章看,开始慢慢理解“简洁”的概念。再后来于当年宽松的招聘环境下混进了公司,接触到实际的产品代码,在诸多前辈高手的耳提面命下,才发觉自己的浅薄与无知。看语言规范,学设计和实现模式与套路,啃建模和抽象相关理论,开始思考软件的演进和代码重构。理解得越多,越是惶恐,总觉得自己基础弱,能力差。一直到工作了有四五年的时候,差不多觉得自己有点底气说代码写得还算可以了,对于好代码,有个基本的概念了。

这个认知变化的关键,我认为是在于是否理解了解耦和抽象的概念。

第二阶段:万般皆下品,唯有编码高 --> 对软件系统和软件工程抱有敬畏之心。
在编码能力基本达到凑合的水平后,又开始飘飘然起来:开发人员从一句需求描述到可运行的软件,这是近似魔法的创造。所以编码工作才是软件开发中最核心的,那些个什么PO和SE,天天毛事不干,扯扯淡写写胶片,都是务虚的,产出价值为0。更不要说什么COE、QA之类的角色,除了给我下绊子加约束影响我效率外,一点用都没有。虽然他们也都很认真努力,但显然我们开发人员才是最重要的。

这种想法现在来看当然是可笑的,只是在一个新丁眼中,看到的仅仅是自己面前这几百行代码。只有接触到端到端的软件生产过程,经历过大规模复杂软件开发,参与过团队协作后,才会认识到编码背后的巨大冰山,也才能对软件工程有一个正确的认识。个人英雄很牛x,很关键,在重要时刻能发挥出百倍千倍的作用。但是个人英雄的价值是打开团队和产品的上限,抬高天花板,给业务带来想象的空间。而团队中的短板怎么提升,就是工程能力的价值所在了,工程能力是为软件研发能力托底的。一个团队下限的安全网越高,整个团队的发展基础就越坚实,走得也越稳定。而通盘操控整个系统,决策技术粒度与力度,把控整体方向,更是一个研发团队的核心竞争力所在。与此相比,个人的编码能力倒真是没大家想象的那么重要那么核心(加个限定吧,大部分情况,免得杠精出现)。

从个人视角到系统和工程视角,这一步变化其实是很难的。不少兄弟就是纠结在这一步迈不过去,但就算转变不过来,如果继续专心深入代码,心态OPEN,在软件道路上是大有可为的。怕的就是继续抱着“老子天下第一,总有刁民想害朕”的心态,对系统和工程工作各种抵触和敌对,这种受害者心理是个人发展的最大敌人。


第三阶段:优雅的设计与实现 --> 安全的软件:
最开始了解到安全,其实是不以为然的,无非是一个DFx属性嘛,做好安全分析和安全方案就好了。但是这次UK的问题,经过公司的解读后,个人的理解还真有了一些变化。首先安全绝不仅仅是安全SE做的方案分析和落地,客户想要的其实是一个可信的研发过程和可靠的网络。所谓可信的过程,就是华为的产品研发要能让客户信服,从需求到最后二进制,全程可跟踪可追溯,中间不会有被人恶意埋入漏洞的机会。可靠的网络,是指产品在生产态各组件都能有长期的可靠的持续演进,在运行态遵从IPDRR的模型,能识别攻击、保护核心资产、定位攻击、响应方案和恢复正常。

开始是觉得要求太变态,要搞死公司了。后来想通的是,类比马斯洛的需求模型,在解决吃饭喝水等生存需求后,安全的需求就是最重要的。对于公司和国家而言,也是一样的,在建立了基本功能的网络后,自然而然就会把安全网络提到核心诉求。所以从客户视角来看,这些要求并不过分。从我们自身的角度,现在解决了温饱后,每个人都开始要求食品安全,于是食堂后厨也都搞可视化,实况直播,原材料展示和溯源。理解这个,就很容易换位思考,认同客户的安全要求了。至于韧性网络,更是和技术一脉相承的。分布式系统的设计理念要遵循“design for failure”,韧性网络的思路也是类似的,基于“没有安全”来构筑安全。

现在很多时候还是会把安全当做额外的成本付出来抵触。安全确实是有成本的,而且成本是很高的。但也正因为高成本,它也会成为我们的一个核心竞争力和护城河。想想我们吃饭的时候是否愿意为一个安全的食材额外付出溢价?所以公司现在把安全的owner定为商业领袖,一方面确保前期这部分成本投入,另一方面也是要从现在开始思考商业上安全溢价的模式。

第四阶段:??
下一步的认知变化是什么?不知道。只是每一次认知变化,都是从发现自身的意识局限开始的。心态开放、换位思考,坚持这两条,应该还不至于被很快甩下车。

点赞
收藏
回复
分享
举报
浏览828 发布于2019-08-07 01:31未知归属地
全部评论
最多点赞
最新发布
最早发布
暂无评论
暂无评论
写回答
新增插入模板功能
一键使用模板,快速填写内容,轻松发帖~
知道了
  • 为了保障您的信息安全,请勿上传您的敏感个人信息(如您的密码等信息)和您的敏感资产信息(如关键源代码、签名私钥、调试安装包、业务日志等信息),且您需自行承担由此产生的信息泄露等安全风险。
  • 如您发布的内容为转载内容,请注明内容来源。

我要发帖子

了解社区公约,与您携手共创和谐专业的开发者社区。