说眼高手低其实并不过分,做架构本来就是一件要求极高的事情,相对于做业务类的架构,做基础性的架构要求更高,毕竟最后搞出来的东西不仅仅是一个产品,而是使用频率超高的基础设施。
@
yangzhezjgs #1 楼说了很多技术上必须具备的能力,我再补充一点,还需要掌握 UML,SysML,熟练掌握泳道图,时序图等,对 OOP 有非常深入的理解, [精通] 各种设计模式,工具上要熟练掌握 Enterprise Architect。基础性的东西为了追求性能,很多都是直接用 C/C++写的,如果系统足够复杂,会用到自动代码生成,这部分又是一大堆东西。
然后,这都只是工具和手段,比这些更重要的是你的思路和思维方式,考虑问题是否全面。
除了上述实现上的考量,你还要考虑可扩展性,可维护性,系统鲁棒性,安全性等其他各种方面的问题。
此外,除了上述技术方面的考量,你还要考虑成本,后续实现的人力开销,用了第三方的组件或者第三方的服务还要考虑知识产权和法律风险,考虑第三方缺失带来的风险,还要考虑如果整个系统挂掉了的应急和备份方案。
一个优秀的系统一定是一个或者一群厉害的架构经过千锤百炼打造出来的,做架构的不仅要求知识面广,而且各个方面都要足够深入,所以不是新手三两下能倒腾出来的。
当然,我也不是为了吓唬楼主或者劝退楼主,事实上架构也是从新手村出来的。对于想学习如何做架构的人来说,最好的方法就是从一个小一点的系统做起,循序渐进,不断改良,不断寻找 Best practice,同时自己也会逐步提升。