第 1 讲 · 软件、工程与软件工程师
源材料中没有这一部分的教师课件,只有一篇理论作业。我依照这篇作业的概念主线整理,不把它当成原课件的章节划分。
为什么代码前面还有“工程”
写出一段程序,与长期维护一个真正的软件产品,是两种不同尺度的问题。
一段练习代码往往只需要:
- 输入是什么;
- 结果算对了没有;
- 在当前环境能不能运行。
一个工程还要回答:
- 到底在解决谁的什么问题;
- 需求变化时怎么改;
- 多人怎么协作;
- 出错后怎么定位、修复和验证;
- 运行一年后别人还能不能读懂。
所以“工程”不是把代码写得更复杂,而是对复杂性进行分解和管理。
软件工程师需要什么
现存作业提到了三类能力:代码能力、学习能力和创新能力。把它们放到真实工作流程里,可以看得更清楚。
代码能力:让方案可执行
代码不只要得出正确结果,还应该表达清楚、边界可控,并能通过测试验证。“会多门语言”不等于代码能力强;更重要的是能把需求稳定地翻译成程序。
学习能力:让自己跟上问题
工具会变,但需求、数据、接口、抽象和权衡不会消失。学新工具时,先问它解决了哪个老问题,再看新增了什么代价,比只背操作步骤更可靠。
创新能力:找到更好的问题表达
创新不必总是发明新算法。把复杂流程简化、找到真正的用户痛点、用更小的系统解决问题,都是工程中的创新。
把观点变成行动
要从“会写程序”走向“能做软件”,可以对每个小项目练习四步:
- 用一句话说清用户和问题;
- 把问题拆成可验收的小任务;
- 写完后不只“点一遍”,而是覆盖正常路径和边界情况;
- 记录为什么这样设计,以便以后修改。
这四步是简化的工程循环:理解问题、分解工作、实现并验证、为变化留出空间。