聪明的程序员使用50%-70%的时间用来思考

       不過對于文章里很多觀點我個人覺得都有值得推敲的地方。首先我感覺作者對Agile有些誤解。下面把我的觀點一一道來。


  軟件開發真是這樣的嗎?難道不需要花時間去思考嗎?


  Agile里定義的開發應該不止是Coding吧?研究,計劃,設計都是開發活動。用Agile不是說把所有開發活動都變為Coding了。


  TDD、快速原型和迭代可能會對軟件和團隊產生負面影響。一開始,你需要花很大的精力來讓你的軟件從無到有(做過軟件的人都知道,從零開始寫代碼是很痛苦的事),但是因為你沒有想好,先做再說,所以,后期你會面臨更多的質量問題而讓你需要花更多的時間精力。。。TDD、迭代、原型只關注功能性需求,其不會關注非功能性需求,比如性能問題,高可用性問題,系統維護問題(模塊的耦合問題),等等。而這些問題往往都可以讓你的軟件設計重新來過。


  同理,如果你把研究計劃設計定義都算為Agile里的開發,這個論點的依據就不成立了。此外還有一個我覺得普遍的觀點就是傳統開發由于計劃周全,所以后期出現的意外質量問題少。其實很多問題早期設想根本不可能看到,只有實際deploy后才會發現。而如果從0到開始部署周期太長的話問題會出現的很晚,解決起來更痛苦。


  重構是惡夢,重構應該越少越好。


  我個人反而喜歡重構。比如以前寫了10個method現在重新設計為3個,或者基本沒什么變化但是變量,縮進設計和method安排使得代碼可讀性更高了,其實都是增加了價值。我覺得代碼就要經常重構,大的或者小的。這樣才能改進產品和個人能力。當然一般的老板意識不到重構也是做產品。本人是Clean Code和Beatiful Code這兩本書的忠實執行者。


  所以可能對重構的抵觸也是和Agile不兼容的原因之一?但是很多傳統的開發方式不是避免了重構,而是把重構的成本變的很高所以公司會選擇能拖則拖,最后technical debt越滾越大。


  我現在在做的項目,花了幾乎4個月的時間來做設計,在這個過程中,我們反復思考、討論和權衡若干種實現方法,并盡可能地窮舉所有的場景和細節以及未來可能的變化(那怕是那些簡單的模塊),有個模塊被重寫了至少三次,每次都是寫到一半就被推翻重寫,我們整個團隊不斷地在和其它團隊討論,并在對系統不斷地認識中對系統進行簡化和優化,并力求達到完美。現在看來,沒有貿然使用Scrum是明智的。


  我們公司用的是scrum。在寫新系統的時候,大部分任務都是investigate,或是benchmark不同的solution,或是按照想法做demo。可見我們花在計劃上的時間也不少。所以這個和你用不用敏捷是無關的,而是思考和計劃在公司里的位置。


  最后聲明一下,我對Agile的知識都是在公司里工作學來的,沒怎么看過理論。而公司里用的是Scrum。我個人對開發方法沒什么喜好,什么管用用什么。但是我們公司開發情況比2年前用Waterfall時好太多了。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
提供的源码资源涵盖了安卓应用、小程序、Python应用和Java应用等多个领域,每个领域都包含了丰富的实例和项目。这些源码都是基于各自平台的最新技术和标准编,确保了在对应环境下能够无缝运行。同时,源码中配备了详细的注释和文档,帮助用户快速理解代码结构和实现逻辑。 适用人群: 这些源码资源特别适合大学生群体。无论你是计算机相关专业的学生,还是对其他领域编程感兴趣的学生,这些资源都能为你提供宝贵的学习和实践机会。通过学习和运行这些源码,你可以掌握各平台开发的基础知识,提升编程能力和项目实战经验。 使用场景及目标: 在学习阶段,你可以利用这些源码资源进行课程实践、课外项目或毕业设计。通过分析和运行源码,你将深入了解各平台开发的技术细节和最佳实践,逐步培养起自己的项目开发和问题解决能力。此外,在求职或创业过程中,具备跨平台开发能力的大学生将更具竞争力。 其他说明: 为了确保源码资源的可运行性和易用性,特别注意了以下几点:首先,每份源码都提供了详细的运行环境和依赖说明,确保用户能够轻松搭建起开发环境;其次,源码中的注释和文档都非常完善,方便用户快速上手和理解代码;最后,我会定期更新这些源码资源,以适应各平台技术的最新发展和市场需求。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值