码路指南:在博与专之间取得平衡
2014-01-20 00:00
1126 查看
“博”与“专”上的迷失
假设说一个人的学习已经聚焦,并且学习的内容和自己实际参与的项目也相吻合,那么是不是就没有问题了?很不幸,答案仍然是否定的,在任何一个子领域里,仍然需要进一步去考虑“博”与“专”的均衡。对于软件开发而言,设计是再常见不过,再简单不过的一个词了。可如果把视角拔高一点就会发现,单以设计而论仍然是一个不可穷尽的领域,我们可以快速扫描一下和设计相关的部分概念:
面向对象分析与设计
结构化分析与设计
模型驱动开发
契约式编程
面向方面的开发
基于组件的开发
元编程
有些时候方法论也会和设计牵扯到一起:
测试驱动开发
敏捷软件开发
如果感觉这个还不够多,那可以去Wiki上查编程的范式(平衡点时似乎有一种特例,钻研特定算法的人,从一开始就只往专的方向发展,并不会考虑其他。比如:钻研TTS的人,可能几十年如一日只要专注于TTS就完了。
至于具体选择那个方向,则要根据自身情形来定。总的原则是要以当下工作为根基,以实用为目的甄选各种知识,并追求平衡点。
大致上讲,期望做技术专家的更适合前一个方向,而期望做技术管理的则更适合后一类方向。
学习软件工程的时机与必要性
简单来讲越是没实践经验的人越不适合学习软件工程,越需要规划整体把握全局的时候越需要学习软件工程。软件工程中覆盖的元素非常繁杂,可以有管理、流程、开发模型、估算、分析设计方法等。这无疑会把知识面扩展的很宽,一旦没有根底,就很容易变成纸上谈兵,夸夸其谈。
在众多软件相关的知识中,软件工程绝对是很特别的一个。很多人很鄙视软件工程,说:我一看到软件工程的书就直接略过;与之相对应,很多人很推崇软件工程,会花很大的心思去研究敏捷、CMMI等。
刚入职场的程序员大致上是讨厌软件工程的,因为这东西离自己的实践有点远,并且主要是添加束缚。但既然更加复杂纷繁的历史都可以总结出规律,忽视软件开发的内在规律无疑的对有志于成为管理者的人是不利的。
真要学习软件工程,不太适合从抽象层次很高的教科书开始,而适合从《代码大全》这样与实际关联比较紧密的书籍开始。
在国内软件工程的落地似乎始终困难,软件工程相关名词始终在不停的变换(ISO,CMMI,敏捷等),但实际能落地起作用的却不多,这最终导致了一种吊诡的局面:刚对一个绝望,就开始对新的一个报以希望,并在这两个简单的步骤上做无限循环。这种状况也许有其更深层次的原因,比如生存压力过于强大导致工程力量的长远价值被漠视,进而使方法论并不为解决现实问题而存在,而是为了证书而存在。很难据此就说软件工程毫无价值。
延伸阅读
此文章所在专题列表如下:码路指南:缘起
码路指南:怎样才算是编程高手?
码路指南:程序员的几个职场发展方向
码路指南:为何你成不了编程高手?
码路指南:在博与专之间取得平衡
码路指南:别错过人生中学习的黄金时期
码路指南:物质驱动与兴趣驱动
码路指南:保持内心的青春与理想
相关文章推荐
- SOA治理:在流程与机动性之间取得平衡
- 走在技术和商业之间的平衡木上(感想英雄会)
- OpenUP核心原则一:平衡,在竞争优先级以及最大化干系人利益之间建立平衡
- .NET 指南:类与结构之间的选择
- 取得行数为0-10之间的数
- oracle至mysql该指南的数据模式()任意数据源之间的跨导应用
- 走在技术和商业之间的平衡木上(感想英雄会)
- C#/C++ 模板和 C# 泛型之间的区别(C# 编程指南
- 属性和索引器之间的比较(C# 编程指南)
- .NET 指南:类与接口之间的选择
- .NET 指南:属性与方法之间的选择
- PyQt 5.4参考指南 ---- PyQt5和PyQt4之间的差异
- mysql 取得表中重复值之间的间隔以及最大间隔
- 走在技术和商业之间的平衡木上(感想英雄会)
- 走在技术和商业之间的平衡木上(感想英雄会)
- 解读膳食指南(4)-2016版儿童平衡膳食算盘
- Ember.js 入门指南——管理controller之间的依赖关系
- 取得两个标识之间的数据〔爬虫片断〕
- java基础(八)Math/代码块/继承成员方法指南的关系/继承中成员变量之间的关系/方法的重写/继承中构造方法之间的关系/this和super的区别
- 走在技术和商业之间的平衡木上(感想英雄会)