编程能力|阿里毕玄:程序员如何提升自己的硬实力( 四 )


3). 考虑问题的全面性 。 像异地多活这种大架构改造 , 涉及业务层面、各种基础技术层面、基础设施层面 , 对于执行节奏的决定要综合考虑人力投入、机器成本、基础设施布局诉求、稳定性控制等 , 这会比只是做一个小的系统的设计复杂非常多 。
系统设计能力的成长 , 我自己觉得最重要的一是先在一两个技术领域做到专业 , 然后尽量扩大自己的知识广度 。 例如除了自己的代码部分外 , 还应该知道具体是怎么部署的 , 部署到哪去了 , 部署的环境具体是怎么样的 , 和整个系统的关系是什么样的 。
像我自己 , 是在加入基础设施团队后才更加明白有些时候软件上做的一个决策 , 会导致基础设施上巨大的硬件、网络或机房的投入 , 但其实有可能只需要在软件上做些调整就可以避免 , 做做研发、做做运维可能是比较好的把知识广度扩大的方法 。
第二点是练习自己做tradeoff的能力 , 这个比较难 , 做tradeoff这事需要综合各种因素做选择 , 但这也是所有的架构师最关键的 , 可以回头反思下自己在做各种系统设计时做出的tradeoff是什么 。 这个最好是亲身经历 , 听一些有经验的架构师分享他们选择背后的逻辑也会很有帮助 , 尤其是如果恰好你也在同样的挑战阶段 , 光听最终的架构结果其实大多数时候帮助有限 。
技术Leader我觉得最好是能在架构师的基础上 , 后续注重成长的方面还是有挺大差别 , 就不在这篇里写了 , 后面再专门来写一篇 。
程序员金字塔我认为程序员的价值关键体现在作品上 , 被打上作品标签是一种很大的荣幸 , 作品影响程度的大小我觉得决定了金字塔的层次 , 所以我会这么去理解程序员的金字塔 。
当然 , 要打造一款作品 , 仅有上面的两点能力是不够的 , 作品里很重要的一点是对业务、技术趋势的判断 。
希望作为程序员的大伙 , 都能有机会打造一款世界级的作品 , 去为技术圈的发展做出贡献 。
由于目前IT技术更新速度还是很快的 , 程序员这个行当是特别需要学习能力的 。 我一直认为 , 只有对程序员这个职业真正的充满兴趣 , 保持自驱 , 才有可能在这个职业上做好 , 否则的话是很容易淘汰的 。
作者简介:【编程能力|阿里毕玄:程序员如何提升自己的硬实力】毕玄 , 2007年加入阿里 , 十多年来主要从事在软件基础设施领域 , 先后负责阿里的服务框架、Hbase、Sigma、异地多活等重大的基础技术产品和整体架构改造 。