大家好,欢迎来到图灵课堂。今天,我们来谈谈架构师和普通开发的区别。
每个人都想成为百万架构师。我们来问两个问题。
1.你认为架构师最伟大的地方是什么?
2.你和架构师的差距在哪里?
知道了这两个问题,你就知道怎么努力了。
如何找到这两个问题的答案?
方法很简单。去招聘网站看看对架构师的招聘要求是什么。
我之前说过,在互联网开发领域,架构师可以分为业务架构师、中间件架构师和系统架构师。
根据不同的方向,我们来看看招聘网站上的一些真实例子:
java架构师40-70K 15工资
工作说明
1.参与相关产品需求的讨论、评审和软件设计;
2.根据项目计划,按时提交高质量代码,完成开发任务;
3.编制和维护标准文件,以及其他与项目相关的工作;
4.参与个人征信、企业征信和数据核心业务系统架构的设计和优化。
资格:
1.本科以上学历,计算机科学或相关专业;至少3年java实际项目开发和架构设计经验;
2.有扎实的java基础,Java是多线程并发的;熟悉主流开源应用框架,如Spring、iBatis、XML、JSON、Maven等开发技术;
3.熟悉设计模式和OOA/OOD;;熟悉关系数据库MySQLOracle,SQL优化;熟悉Memcached,MongoDB,redis等。
4.熟悉分布式系统的设计和应用,以及分布式、缓存、消息和负载均衡的机制和实现;
5.有风控产品/数据采集系统架构设计和开发经验者优先。
中间件架构师30-60K 16工资
工作说明
负责云中间件的设计(API网关、服务框架、MQ等。)、核心代码开发、系统稳定性开发、性能优化等。
根据云计算平台的业务需求,完成云中间件产品的架构设计和优化;
帮助业务方解决技术问题,利用技术推动业务发展。
精通c++或java/go并发编程,熟悉高并发、分布式通信、存储等相关技术。
资格:
本科以上学历,3年以上相关工作经验;
熟悉Linux操作系统和开源中间件软件;
熟悉消息中间件、RPC框架、API网关、数据层、性能优化等相关技术经验者优先;
有高并发工作经验者优先;
熟悉spring cloud,有Spring Cloud开发和优化经验者优先;
熟悉服务网格,有istio和envoy开发经验者优先;
熟悉gRPC/thrift框架,有gRPC/thrift框架开发和优化经验者优先;
熟悉开源消息队列RabbitMQ/RocketMQ框架,有相关开发经验者优先。
备注:容器k8s背景优先,但要求熟悉微服务、服务网格、spring cloud、消息队列等中间件方向。
现场PaaS系统架构师20-40K 15工资
工作说明
1.负责开发实时CDN PaaS集成,包括需求分析、架构设计、部署设计等。
2.负责梳理头部客户的业务架构,为客户整体平台建设提供咨询和规划;
3.你需要在工作中具备咨询架构师的能力,掌握但不限于网络、计算、存储、IaaS、PaaS等领域的咨询能力;
4.跨团队整合资源,与前台业务、职能部门、中后台产品/R&D团队共同推动项目高质量管理,共同实现项目目标。
工作要求
1.熟悉直播CDN的基本原理和部署架构;
2.有扎实的编程能力和优秀的设计和代码品味;
3.具有良好的系统分析和设计能力,能够根据客户需求和系统架构设计出合理的技术方案并落地实施;
4.具有强烈的客户服务意识,良好的沟通协调能力,较强的大项目管理能力;
5.具有较强的学习能力和上进心,创新思维和深度思考能力;
6.了解容器/VM虚拟化技术、Kubernetes、Mesos、Yarn、Docker等项目。
那么这么说吧,虽然方向不同,技术略有不同,但其实在成为胜任这些岗位的架构师的路上,你需要具备以下能力:
技术精通,架构师思考和解决问题的能力,团队协调,管理能力和拓展人脉的能力。
让我们扩展它
技术控制:
作为一名架构师,您必须掌握全面的技术堆栈。所有的技术都是工具,包括开发语言,框架,各种中间件。你必须熟练使用它们,了解它们的原理和长短板,有能力合理选择和灵活运用合适的场景。
在学习方法上,首先你需要列出所有的技能,然后把你目前的技能和这个图表匹配起来,标出哪些是熟悉的,哪些是需要提高的,并把重点放在那些需要提高的部分。
架构师思维:
我们经常讲技术的问题,架构思维是架构师的“道”。
下面给大家举几个简单的例子。
第一点:知行合一,做之前,先考虑意义。
也就是说,在你做一件事之前,你必须知道你的目的是什么。你的目的和你所做的应该是一个。这是一个层次。第二个层次是清楚地知道自己手中的资源允许你做什么。比如春云,我很想用,但是我的团队拿不住。你把这个东西逼下来之后,事情就没有成功。结果还是需要你承担责任。
第二点:原生优于定制,约定大于配置。
就是如果你没有什么特殊需求,官方的东西是最好的。保持原样,除非不符合你的要求,否则可以定制。因为你改了之后,一旦出了问题,你就很难搞清楚错误出在哪里了。而且如果有官方的问题,整个社区都在支持你,你可以及时补上。
第三点:一切都是虚无,最终也会是虚无。
这是我早期做架构的时候犯的一个错误。那时候一直想做一个完整的系统。无论你想做什么样的生意,只要稍加修改,一切都可以得到支持。后来发现不是我想的那样,几乎什么都支撑不了。就像造车,舒服也好,锻炼也好。两者之间没有平衡。
控制你的技术欲。不要和你自己或者你的公司鬼混。你有强烈的技术欲望吗?你总是喜欢玩新技术。当你看到新技术时,你想在你自己的系统中使用它们。这不是一个好架构师的行为。架构的前提是稳定,这是底线。试错不能在生产环境中进行。
第四点:离开资料片,但不要想到100年后。
当代人做当代事,不要想那么久。当代人留下的坑,只能由后代人来填。
第五点:没有最好,只有最适合。
和第三个差不多,但是第三个是广度,这个是深度。不要总想在垂直领域做到尽善尽美。
第六点:适可而止。玩的越多,风险越大。
比如有人玩这个++ i++;最后(回归);如果(作业)的话,我们就好好享受面试吧。如果代码是这样写的,那就没什么好找的了。
第七点:大技不工,简约最美。
就是把代码写得非常简洁优雅。
解决问题的能力:
随着解决方案在日常场景中的积累,举几个例子:
单点登录
分布式事务和数据一致性
峰值并发场景
复杂的工作流程
高并发性和吞吐量
团队协调和管理能力(加分):
作为一名架构师,你不再像普通开发一样,局限于你所负责的模块。
如果你的思维和设计要成功,你需要处理好软件开发中的各种角色,你必须具备在团队层面推动事情向前发展的能力(尤其是架构团队的领导者)。
最后,拓展你的人脉。人脉很重要。随着职位和职务的提升,需要一定的背书。顺便在这里分享一下我的亲身经历。我在毕业的前两年没有意识到这一点。3-5年,开始建立技术领域的朋友圈,认识了很多大牌,互相交流,互相学习,进步很快。
这些都是架构师应该具备的能力,其中技术的掌握是基础,可以通过有效的学习方法快速提高。