软件|程序员与软件工程师的区别

【软件|程序员与软件工程师的区别】软件|程序员与软件工程师的区别

程序员和软件工程师这两个概念经常被混用 , 有人说程序员和软件工程师是一回事儿 , 也有人说这两个概念是有区别的 。 当然了这两种说法都有各自的道理 。 我们也不需要评判谁对谁错 。

今天我想从这两个词出发 , 谈一下我的理解 。 观点不一定对 , 我来抛砖引玉 , 还请大家批评指正 。 我认为程序员是缺少工程师思维的软件工程师 。 换句话说 , 程序员不具备工程师思维 , 软件工程师是具有工程师思维的程序员 。 核心点在于工程师的思维 。
那么到底什么是工程师思维呢?所谓工程师思维 , 是指在处理软件工程技术问题的时候 , 可以综合考虑人员、工期、成本、业务流程等因素 , 将软件项目的工作过程规范化、工作成果清晰化、工作效能最大化 。 软件工程师思维是系统思维的具体体现 , 特点就是有原则、有条理、足够稳健和完整 。
软件工程师思维具体体现在哪几个方面呢?下面我来讲一讲:
1. 着重解决业务问题 。 程序员的着力点在于项目里的技术问题 , 工程师的着力点在于解决业务问题 。 有时候只要优化一下业务流程 , 就可以减少很多技术难点 。 我们经常讲的技术驱动就是指这个方面 。
2. 控制开发过程 。 程序员只管闷头写代码 , 实现各种业务功能逻辑 。 工程师会从开发过程、项目成本的角度来思考 , 包括选择开发语言、采用哪些中间件、使用什么数据库等等 。 技术架构尽量简单 , 业务逻辑也尽量简化 , 代码结构也尽量简洁 , 大项目尽量迭代开发 。
3. 降低维护难度 。 程序员通常不会考虑后期维护的难度 。 软件工程师会思考这个问题 , 所以他们会尽量完善项目文档 , 检查代码注释 , 甚至专门做一些工具用于后期维护检查 , 尽量做到容易维护 。
当然 , 软件工程师和程序员还有很多其他方面的不同 , 我这里就不再一一列举了 , 大家有兴趣可以在评论区留言探讨 。