序
##昨夜西风凋碧树。独上高楼,望尽天涯路。
第一次读还是学生的时候,那时候读的很艰难,根本理解不了描述的情况,那时候还是200年,好多人对于这本被好多人奉为圣经的书,没有什么具体的感受,仅仅是感叹软件工程领域真是一个令人费解的、匪夷所思的、充满困惑的世界!!!也确定了自己对于这个世界的向往,那个时候接触的第一门编程语言是HTML。(very interesting)
##衣带渐宽终不悔,为伊消得人憔悴。
第二次读的时候已经在读研快结束的时候,那时候接触了导师带的项目,也学习了软件工程,编写了大量的代码,完成了一些工程项目的实践,回头再看这本书的时候,对于一些理念仍然是云里雾里,但是深刻理解了一些项目管理上的事情,作为乙方参与实施的项目确实接触到了一些非量化数据转成量化数据,用来核算月结工资,那个时候还没有具体的折算概念,但是读这本书的时候确实贴合甲方的好多事情,一些事情理解起来也就没那么困难,但是困惑的事情依然不少,从这本书出书(1975年)到2015年,这四十年的时间,原书中提到的“高级语言、面向对象、可复用的构件”已经成为默认的事实。他们那个时候期许的事情,成了我们这种后来者的起点。接触的项目也是省科、市科、重点单位合作的类型,接触不到所谓“高端局”。也就是造就了读这本书的时候,很难理解好多人对于工程领域内:“没有银弹,没有银弹,没有银弹!!!”,这句话的理解是摸不到头脑的那种……
##众里寻他千百度,蓦然回首,那人却在,灯火阑珊处。
最近一次读是2022年的春节假期,这一次没有认真的通篇去读,但是好多概念好多内容也因为随着年龄、知识、阅历、经历的增长,有了很深刻的共鸣。就像之前好多人不理解的问题、不理解的答案是一个道理,没有经历过书上描述的再深刻,再栩栩如生,再发人深省,依然是隔岸观火,雾里看花般的不通透。转过观念过来,作为软件开发工程师,深度参与一个项目,理解需求,估算工时,开发任务,上线运维,解决bug。好多人在认真的评估、认真的理论、认真的记录、认真的复盘,认真的总结。唯一错过的是认真的去理解软件工程,谷歌的技术代言人Jeff Dean证明了:“七天能做完的工作,普通的小型的开发团队可能需要几个月的时间来完成!”,这其中的差距为什么会这么大的原因就在这里。像极了我在敏捷认知里面谈到的,一定是见仁见智!
想发一些牢骚:(哈哈哈哈哈!!!)
时代在发展
现在,计算机领域经过几十年的飞速发展,软硬件都比作者所处的年代有了极大提升。尤其是硬件资源实现了跨数量级的提升,更是诞生了云计算,边缘计算等。包括AI的发展也让很多很多的场景不再是单一需要考虑资源的问题,原书中提到的“高级语言、面向对象、可复用的构件”也已经成为默认的事实。但是不管技术怎么发展,技术仍然是第一生产力,包括最近爆火的ChatGPT也是,所以:
“在新的时代我们依然面临着新的问题,新的纠结,新的无可奈何!”
时间未能改变的
到现在更快的硬件、更快的网络、更多的计算、更大的存储资源、更优秀的重用库、更完善的框架、更方便的语言、更先进的思想、更新奇的管理模式等等一切较之前无法想象的海量资源,以至于我们能够感觉软件工程领域的种种问题可以迎刃而解,最次也是新的问题来困扰我们了。然而事实上:
- 我们依然无法准确评估工作量
- 我们依旧难以进行合理的进度安排
- 项目落后时,只能被动的延长工作时间或者增加人力。
- 大量的bug反复出现
- 开发的软件不能让用户满意,甚至用户仅仅使用软件极少的功能。
- 大量的软件项目以失败告终。
这些作者当时描述出来的问题,到了现在仍然无法解决,大量存在,是几十年没有什么发展吗?还是软件工程的根本问题没有有效解决呢?
“不用妄自菲薄,这些软件项目的问题是普遍存在的,不要对自己的能力产生怀疑”
“众多前辈已经总结了大量软件项目的问题和解决方案,并且经历了时间的考验。我们应该坚定的学习掌握,同时在实际工作中运用、改善,从而形成行业规则,达成行业共识。这样才能推动软件行业不断发展。”
唯一不变的就是变化
软件领域的名言:“唯一不变的就是变化本身”,潜台词就是“其他都会发生变化”。变化意味着不可预料、不可提前准备、准备好的可能徒劳、不可控。 例如:
- 用户不会在初期提供明确的需求,用户的实际需要和用户的感觉会随着程序的构建、测试和使用而变化;
- 软件开发和运行过程中的环境不一定一致甚至运行环境本身也在变化;
- 设计人员在软件开发完成之后才能意识到设计上的缺陷,从而试图在下一个版本中弥补;
- 团队成员由于各种因素(私人的或者公司的)发生变化,甚至于核心成员发生变化可能直接导致软件推翻重来;
“软件的变化是不可避免的,所以软件行业也由“控制变化”转变为“拥抱变化”,既然变化是不可避免的,那么就以最快的速度去响应变化。这不是就会敏捷吗?哈哈哈”
时间在缓慢流失
《人月神话》中提到:“一天一天的进度落后比重大灾难更难以识别,不易防范,更加难以弥补”。而在实际的项目过程中,更多的时间是浪费的,某天关键人物请假了,延误一天;某天服务器资源申请没到位,耽误个两三天;某天公司网络出问题了,停格半天;突然的某种会议,全员参与,浪费半天等等,也许你会说加加班就赶回来了,但真的能赶回来吗?这种还只是加班能挽回的吗?
“慢性的进度偏离绝对是士气杀手”
直到有一天,项目到了时间,才发现“时间都去哪儿”?甩锅的时候到了!!!
展望
在软件工程领域,大师在接近50多年前就提出了高屋建瓴的思想,我们应该看的更远一些。所以在日常的工作中我们要严格要求自己,提高自己的追求,将眼光放长远,有些小小的倡导,与看到此处的屏幕前的共勉:
总则:小处着手,大处着眼。
第一:不要重复出现已知得的缺陷。
第二:持续不断的学习相关的知识和经验。
第三:思考和使用合理的解决方案。
第四:正确认识新的问题和现象。
第五:努力积累形成属于我们时代特色的思想和经验。
终身学习!!!吾辈当自强!!!