※ 引述《musashi023 (太阳鱼)》之铭言:
: Senior:
: 1. 能设计软件架构
: 2. 活用design pattern
先说
我不会写C++
但是关于软件架构和Design Pattern我可以补充一下
软件架构实际上在台湾多数职场里的状况
大概可以用一句话来形容
理想很饱满、现实很骨感
学习怎么设计架构和Design Pattern当然是一件好事
这些工具放入你的工具箱里
不只代表你会使用这些工具
而且你还具备了“知道这世界上存在这些工具”的概念
看起来好像是废话
但其实这么多年看下来
很多工程师甚至连有Design Pattern这些工具都不知道
或者只是稍微听过但因为各种原因没有深入理解
你看到这里可能会觉得奇怪
你明明问的是学这些算不算senior
但我怎么开始提“其它人”或“职场状况”?
因为
其实重点就在“其它人”身上
我挑明了说
软件架构和Design Pattern
绝大部份时间不是工程问题
是政治问题
除非你进的公司只有你一个工程师
或你是带头的底下只有一两个工程师
而且他们唯你是从
不然你要讨论架构
或是什么地方该用哪一种DP
我的经验是
到最后都会沦为某种形式的政治角力
如果组织大一点
一切都要看那些资深老屁股们愿不愿意听你的话
你如果想把一个模组重构
最好是先说服其它人再开始干
事实上
所有关于这类架构方面的东西
通通都是需要团队先沟通过
大家都OK愿意照着开会所订出来的规范走
最后才可能会有比较好的结果
不然很可能会变成最常见的状况
就是大家各自为政
想怎么改就怎么改
每个人都自成一派
架构就变得乱七八糟
而做review的人很可能也不具备判断其它工程师设计的架构到底是好是坏的能力
所以就乱review一通
最后系统变得四不像
每个地方的写法惯例都不一样
然后主管看导入这些有的没的根本没有比较好
接着就放弃继续使用DP或其它一些架构方面的工具了
这也才是架构与DP最困难也最精华的地方
不是学习怎么使用
是学习什么时候什么场合该用
甚至是学习怎么说服别人一起来使用
你要真正学好这些东西
你永远都要把这个概念放在心底
架构永远是人的问题
不会只是工具的问题
解决人的问题就解决八成了
剩下的就是执行面的细节而已
这真的简单多了