软件随想: 软件 = 程序 + 软件工程
最近和几个同道谈论了一些程序,架构,软件的问题,大家身在此山中,绕来绕去,始终没有能有明确清晰的结论。我把一些想法写在这里,供专家指正。
几乎所有程序员都知道“程序 = 数据结构+算法”这句名言。但是在实际的学习和工作中,也有不少人产生了疑问。 例如:
1) 我写了二叉树的周游算法实现,在这里,二叉树是数据结构,周游的实现细节是算法。我写的C 程序就是结果。 但是我这个程序有什么用呢? 在Java 中,似乎没有指针,那我可以不必了解二叉树么?
2) 我找到了工作,成了一名程序员, 但是我发现所有的算法别人已经实现了,我只要调用就可以了。似乎我公司的软件和数据结构,算法的关系都不大。那我当初辛辛苦苦学习的数据结构和算法有用么? 如何区分一个好的程序员和不好的程序员呢?
3) 我来到软件公司上班后,发现公司以前同事写的程序真是垃圾,根本无法维护。我要推翻重写!后来一个老员工笑嘻嘻地告诉我,我们现在看到的程序,就是去年的新员工愤怒地推翻重写之后的结果,大家反映还没有以前的版本好用呢。
那么我们软件行业赖以生存的“软件”, 我们程序员用来安生立命的“程序”是什么? 我们平时在博客和论坛上讨论各种和程序相关的问题,是在哪一个层次上谈论“程序”呢? IT 专业的大学毕业生去找工作的时候说, 我懂软件工程, 我画了很多图, 写了很多文档, 最后得了很高的分数... 这些同学是真的懂软件工程?
全文请看 -
/SoftwareTeacher/archive//11/20/6023769.aspx