6年iOS开发,自述通往 架构师的四条路线,(值得收藏)

前言:

我用了6年的时间,一步一步走到了现在,中途也有了解过其他的技术,也想过要转其他的语言,但是最后还是坚持下来走iOS这条路,希望我的经历可以帮助到后来的人,要是觉得对你有帮助的话,可以点赞关注一下。

导读:

1、架构师应不应该写代码

2、为什么别人的系统总是那么烂

3、成为架构师最困难的门槛是什么?

4、如何更高效的学习?

作为一个开发者,有一个学习的氛围跟一个交流圈子特别重要,这是一个我的iOS交流群:638302184,不管你是小白还是大牛欢迎入驻 ,分享BAT,阿里面试题、面试经验,讨论技术, 大家一起交流学习成长!希望帮助开发者少走弯路。

1.架构师应不应该写代码

合格的程序员对于明确分配的任务会完成的很好,但是大部分情况下“架构”这个词意味着架构师并不会涉及太多细节,架构图和代码实现之间总还是有些距离,你无法保证所有人都会正确的理解你的设计,或者是程序员写代码时遇到障碍时会立刻想出足够优雅的解决方案。

在我看来,写代码的架构师更像是在做后勤保障的工作:在代码中第一时间发现可能存在的问题,向其他人提出警告,或是给予其他人改进的意见,必要的时候或是给其他人演示一下正确的姿势。

大部分情况下我作为架构师并不需要揽下“核心模块”开发这种工作,毕竟我能调配的时间太零散了,效率难以保证,很多人在专注的情况下比我做的好很多,我只需要保持大局观需要适度参与就可以了。

总的来说,架构师和程序员在某些方面上有点像产品经理和用户的关系,大部分程序员并不会主动告诉你他们想要什么、哪里需要优化,甚至自己也不知道这些。想要做出好的产品,捷径之一就是跟用户做同样的事情。

2.为什么别人的系统总是那么烂

很多程序员解决问题的能力很强,说要解决一个什么问题,下午就能写出几百行代码把功能实现了。但是做出来的东西有种少考虑了什么东西的感觉。大部分程序都能实现功能,但是如果把“时间”这个也作为一个考虑的维度的话,就会意识到一个合格的项目需要考虑更多的东西:更通用的使用方式、易于理解的文档、简单而易于扩展的设计,等等。

很多公司应该都会有一些遗留系统,它们庞大、笨重、难用、几乎无法维护,所有人都在抱怨这些系统,并且每天都在想方设法换掉那些遗留系统。但是一段时间过去之后,又会发现身边的新人又开始吐槽当时替代遗留系统的那个系统了。

“大多数系统当初都很好使,功能当时够用,扩展性看起来也可以,但是这些系统都是开发的人离职之后变坏的。”

3.成为架构师最困难的门槛是什么?

很多人自称架构师的人跟你讲一个架构时简直滔滔不绝,各种技术名词像是说相声一样从他嘴里说出来,三句话不离高并发大数据,但是稍微追问一下,就会发现很多基本概念的缺失,例如自称精通高并发的人说不清楚他所谓的高并发系统的瓶颈在哪里,自称精通架构设计的人说不明白他的系统怎么保证高可用,自称超大数据量的系统实际上只有不到100万条数据,等等。

架构师虽然听起来很高大上,但本质上仍然是工程师,不是科学家,也不是忽悠人的江湖骗子。学习再多,也需要实践落地。设计架构方案更多的是在做一些抽象和权衡:把复杂的需求抽象成简单的模型,从功能、性能、可用性、研发成本等等方面规划如何构建一个系统,这些内容需要更多的实践练习。

4.如何更高效的学习?

大多数人每天能留给自己学习的时间有限,这个阶段如何提升学习效率就成了要解决的重点。

说说自己提升学习效率的心得,其实非常简单:体系化的学习。

在重复了几次痛苦的学习-梳理过程后,再去看一些独立的文章或者资料往往会事半功倍,因为能在体系内找到相对应的知识,甚至有时候一本书里一页只需要看一句话,点破那层窗户纸,就可以掌握新的知识。

跟很多人一样,刚毕业时我觉得作为程序员,只要努力,加上少许天赋便可以获得一些成绩。

工作一段时间后,对自己和其他人的认识也越来越清晰,逐渐的发现程序员之间的差距或许比人和猴子之间的差距还大,接受这个事实这让我郁闷了很久。

再过一段时间,发现自己已经能够客观的评价自己的能力,也意识到了距离并不是那么重要,只要想办法跑的更快,就足够了。

随着软件和互联网技术体系的发展,架构师这个职位已经可以切出很多细分,系统架构师、应用架构师、测试架构师以及基础设施架构师等等。除此之外,在不同的公司还会有各种特定的分发,在这里就不一一展开了。在这里,我们结合最常规的应用架构师和系统架构师来做一个说明。

5.先说说,架构师职务和责任的定义:

应用架构师( Application Architect) 负责构建一个以 解决特定问题 为目标的软件应用的内部结合结构,一般以满足各种功能性需求以及维护性需求为设计考虑目标;

系统架构师(System Architect)则提供 运营支撑 软件应用的信息系统的结构设计,一般以满足各种非功能性需求或运营性需求为设计目标(如安全性、可伸缩性、可互操作性等等)。

1 设计能力-擅长整合分析

架构是过程,并非结果。

架构是架构师洞察内在结构、原则、规律与逻辑的过程,架构师要做到清晰理解系统,以及简洁描述,这是分析整合的能力。

一个架构师必须具备优秀的分析能力,要做到根据产品需求和目标,理解清楚产品业务,再整合利用现有的技术领域,找出最佳方案,实现产品概念。

2 技术实力-通过代码落地

架构师首先要将代码写的清晰易懂,要能够实现功能,做到没有Bug,这要求架构师必须具备至少熟练掌握一门语言。

这是最重要的,一名出色的架构师,基本上过去都是一位优秀的程序员。架构师并不是纯粹的管理岗位,所以需要深入到一线去梳理代码的。如果只是画流程图、脱离代码、只说不做,是很难做好工作的。

反过来说,提高编程技能,对一名架构师的职业生涯至关重要,无论如何都不可本末倒置,要想实现自己的职业规划,不能荒废自己本身的技能,技术是架构师赖以生存的最基本能力。

所以,不推荐不热爱编程的人去做架构师,对于团队工作和个人发展来说,都会带来糟糕的后果。

3 学习能力 - 掌握技术的发展方向

作为一名架构师,积极开放的心态最重要,因为持有这样心态的人,才能高效的学习新的新技术。

新技术层出不穷,架构师需要不断去了解他们的优缺点,掌握他们,然后为我所用。更重要的是,需要学习和掌握每一样技术背后的真正原理。所以不断拓展技术的深度和广度,是一名优秀的架构师的成长轨迹。

互联网是一个技术更新非常频繁的行业,只有真正有热情并掌握了好的学的方法的人,才能走的长久。

4 沟通能力-能够横向沟通

架构师必须参与项目开发全过程,包括确认需求、系统分解、架构设计、技术选型、制定技术规格说明、系统实现、集成测试和部署各阶段,在这一系列过程中,架构师会与各部门沟通交流。

一个产品的研发会有多部门合作,架构师在其中的沟通极为重要,直接影响研发的进度与质量。架构师不仅要与开发人员沟通,也要和项目经理、产品经理甚至用户沟通,来梳理产品的各种可能性。

所以,对于架构师而言,不但要有扎实的技术,还需要能够横向沟通的能力。

总结:

以上就是我总结出来的知识路线,中途也有了解过其他的技术,但是最后还是坚持下来走iOS这条路,希望这些知识点可以帮助在这个行业发展的朋友和伙伴们,在论坛博客等地方少花些时间找资料,把有限的时间,真正放在学习和前进上。

作为一个开发者,有一个学习的氛围跟一个交流圈子特别重要这是一个我的iOS交流群:638302184,不管你是小白还是大牛欢迎入驻 ,分享BAT,面试题、面试经验,讨论技术, 大家一起交流学习成长!

文章来源于网络,如有侵权,请联系小编删除。

猜你喜欢

转载自my.oschina.net/u/3828813/blog/1808491