有一说一,选择这门课之前,我曾将其粗略的理解为一门带我们编程的课程。但是老师带我们上了第一节课后,这种感觉似乎烟消云散了。关于理想的课堂,首先,我不是纯cs背景的学生,对我来说,每一次的学习都是一种提高。我也认为,理想的课程,并非一味给学生灌输知识,这样知识在被动的接受,而是有互动的学习,师生之间的关系更加平等,如同你我是朋友,是共同开发的伙伴,是足智多谋的前辈和精力充沛的后辈之间的合作。在这们课,我不仅希望可以得到code能力的提高,更多的是如何团队协作完成一个项目,以及加深自己对cs的理解。我也相信通过参加这门课,我可以获得更多的收获。闲话少说,关于《构建之法》这本书,大概做了一些粗略的阅读,也产生了一些有趣的想法想交流。之前我并没有写博客的习惯,甚至是github只是在down他人的代码。我觉得,可以把自己一些学习感受整理出来,发在上述平台上,与更多的开发者进行交流。
(1)AI辅助编程是否能真的帮助开发
在开发流程中,写了再改也涉及到AI的帮助。AI帮助开发者高效解决很多问题。比如我们现在的工作中也有很多AI辅助工具,如cursor,claude等。这些在帮助开发者完成工作后,维护是否依旧够用。我个人认为是不够的,甚至,我认为AI辅助编程有掩耳盗铃的味道。个人困惑在于,随着软件的不断维护,代码是只赠不少的。长上下文导致AI的工作会产生幻觉,那么,开发者倘若借助AI,上述困难是如何克服的呢?
(2)初学者如何参与开源
其实我的困惑更加集中于,非csbg下的初学者,参与开源是否容易。以我个人的观点来说,在github上寻找合适项目时,高星是容易吸引我的。但是初学者做到高星是很难的。所以更想知道如初学到高星,成为一个合格的开源者,该如何去做。
(3)MSF中“赋能团队成员”这一原则为何有助于项目成功?
在7.2.2节中,文档讨论了MSF的基本原则,其中包括赋能团队成员。我认为,赋能团队成员有助于提高团队成员的自主性和积极性,进而增加他们在解决问题中的创造力和生产力。但是,我同时好奇的是,在现实中的MSF实施中,如何通过赋能团队成员直接影响项目的效率和成功,特别是在大规模团队中?
(4)“Build To Win”原则与传统的“Build To Show”或“Build To Learn”方法的区别?
在7.5.6节中提到,文档介绍了不同的项目管理方法。我认为,“Build To Win”可能侧重于交付具有竞争优势的产品,而“Build To Show”可能优先考虑演示效果,“Build To Learn”则注重在开发过程中进行学习。但我困惑在于,公司在产品开发的不同阶段如何决定采用哪种方法?这些方法能否在一个项目中有效结合使用?
(5)在不同的团队模式中(如5.2节所提到的“明星模式”和“功能团队模式”),如何确保团队成员之间的有效合作,特别是在处理复杂项目时,如何平衡个人贡献与团队合作?
我认为,在“明星模式”中,团队成员可能以个体能力突出为主,然而这种模式如何确保在需要团队协作的复杂项目中有效沟通和配合?而在“功能团队模式”中,虽然团队成员的角色相对明确,如何保证各方的协调性,避免工作重复或遗漏?然而,面对实际开发项目时,这些模式如何适应不同的项目需求?特别是在需要跨多个部门或技术栈合作时,如何做到既发挥各自优势,又能确保高效协作?尤其是在面对压力和紧迫的项目期限时,如何调整团队角色和流程以确保项目成功?