在不遠的過去,當 IDE 剛剛誕生時,老一代程序員曾擔心程序員的基本功會退化,認為 IDE 限制了程序員的靈活性,擔心代碼質量會因此下降。
- “使用 IDE 就像小學生在考試時帶計算器,它讓程序員變懶。”
- “真正的程序員不需要 IDE,只需要一個簡單的編輯器和終端。”
- “自動生成的代碼就像速食品,方便但不健康。”
- “我寧願用 vi,Eclipse 啓動時間足夠我編譯一遍了。”
- “一個好的程序員,應該在沒有工具幫助的情況下寫出乾淨、可維護的代碼。”
儘管 IDE 最初受到了不少抵制,但它迅速成為現代軟件開發中不可或缺的工具。事實證明,IDE 的出現不僅提高了開發效率,還沒有導致程序員能力的普遍退化。
相反,許多資深程序員認為,IDE 提供的強大輔助功能幫助他們將更多精力投入到更高層次的設計和問題解決上。
正如一位程序員所言:
“但實際上,IDE 讓我能做編程的‘真正工作’,也就是思考、與不懂的人溝通、以及編寫測試——儘管很多人至今仍然不寫測試。”
儘管“忽視基本技能、依賴自動化”的擔憂在一些新手身上有所體現,但在整個行業中並沒有引發廣泛問題。隨着 IDE 的不斷髮展,這些工具逐漸實現了效率與靈活性的平衡。基礎技能與工具輔助並非對立,而是可以互補的。
如今,隨着基於大型語言模型(LLM)和 AI 驅動的智能 IDE 技術的逐步成熟,自動代碼生成的能力不斷增強。上一代程序員的擔憂再次浮現。新一代程序員——那些善用 AI 工具的“原住民”——將藉助智能工具的幫助茁壯成長。同樣,善於思考和解決問題的程序員將會脱穎而出,反而不注重基本技能的程序員,代碼質量也可能得到提升。
Martin 在最近的 Goto 大會上提到:或許真正有趣的,並不是編程是否會被 AI 取代,而是程序員的工作內容將如何發生變化。引入 AI 工具後,我們可能需要更多地學習如何為非確定性系統編程,並且如何將這些新興的技術與我們傳統的確定性系統結合。
以測試為例,雖然你可以讓生成式 AI 為你編寫測試,但這並非正確的方向。AI 只能生成那些證明你所寫代碼能正常工作的測試,而不會思考代碼應該做什麼、預期的行為是什麼。這些更深層次的問題仍需要程序員親自思考,這也正是為什麼測試如此難做,同時也説明了生成式 AI 無法完全替代人類在這一環節的作用。
同樣,需求分析、架構設計、性能優化、複雜問題的根因分析、算法設計和團隊協作等任務,未來程序員的工作重心將從簡單的編碼任務逐漸轉向設計非確定性系統、解決複雜問題和進行高層次的抽象思考。這既是挑戰,也是成長的機遇。