老王:我想成为公司的主力架构师

要想成为主力架构师,需知道以下知识

要想成为软件开发的专家,需要我们完整了解软件开发的流程,并在关键部分掌握丰富经验。

需要我们了解设计模式和算法的细微差别,同时遵循软件开发的最佳实践,包括创造性和思考力,为编程问题提供合适的解决方案。

实现这一目标需要掌握服务器端开发、客户端开发、DevOps运维、云计算、网页设计、分布式系统、数据库、编程规约、代码管理、基础设施管理、可扩展性、安全性待方面的能力。

你可能未必全部掌握以上内容。但是可以尝试从表层了解绝大部分内容,然后再深入掌握其中几个技术。

以下给各位列出开发者缺乏的几个主要技术能力,而技术管理者或架构师在招聘这些职位时应该熟悉检查这些要素。

编码规范

编码规范有助于确保良好的开发实践和产品开发。要了解一些最重要的编码规约:

DRY(不要重复自己),SOLID , TDD , 防御性编程

设计模式

设计模式在软件开发中是一种常见的,可重复使用的解决方案,可解决软件中的常见问题。软件开发者要了解一些常见的Design Partern是非常重要的,还有更重要的是要能够识别给定问题的正确设计模式。如MVC、Singleton、DAO、Facade、Proxy、Adapter、Strategy和Absract Factory等一些一流开发者使用的设计模式。

服务器端开发

在较复杂的软件系统中,后端会有各种各样的逻辑。作为后端开发人员,处理应该程序的业务逻辑就要面临很多挑战。任何开发人员都能够编写代码,但是只有有经验的开发人员才可以写出具有高性能、可伸缩性和可靠性都好的高质量代码。开发优秀软件的过程涉及的领域包括大量科学、数学、计算机等专业知识,有处理的思维和经验非常重要。

高速缓存

数据缓存的各种机制(文件、数据库、内存、反向代理、HTTP....)

内存管理

Java有一个非常好的垃圾收集器,能够自动管理内存,清理未使用的对象并释放一些内存。但是一个资深的Java开发者需要对内存的工作原因有一个非常透的理解,这样才能写出高性能和优化的应用程序。

了解以下概念至关重要:

堆栈,堆,强引用,弱引用,转义引用,如何引用字符串,垃圾收集过程,meta空间,垃圾收集器类型。

异常处理

这是一个相当重要,也是一个比较大的话题,我们后续会再写关于它的专门文章。现在,列出一些处理异常的一些良好实践:

1、遵循“错误优先”原则使软件更可靠

2、不要捕捉无法恢复的异常

3、不要记录完异常后,又将异常抛出来

4、选择正确的层来处理异常(例如:DAO不知道是数据库的故障如何处理,但是服务层可以知道)

5、如果无法从异常中恢复,则优先选择未经检查的异常

IO操作

了解I/O操作的成本以及可能出现的不可预知的结果。

异步编程

使用线程实现Java中的异步编程,它也是Java平台的基础部分,有效使用并发对于构建高性能应用程序非常重要。

比如线程池、死锁、生产者-消费者、原子性、不可变对象、信号量等等词汇对资深开发人员来说不应该是新东西。

批处理

在实际场景中,编写批量作业非常普遍。通常执行重要的任务,有一些基本规则:

1、每个任务应该按输入、处理过程与输出进行划分;

2、始终轮询批量输入数据;

3、处理器应该是线程安全;

4、产出物应该为原子属性;

5、存储工作结果;

6、要考虑EIP模式。

分布式计算

在现代世界中,分布式计算是指使用分布式系统来解决计算问题。然而,分布式系统与传统系统不同,具有非常高的复杂性。当用户开始高速增长资源消耗较大时,有分布式系统工作经验的工程师会在此时发挥作用。微服务软件体系结构是分布式计算以及分布式体系结构所有的优点与折衷的一个很好的例子。

而今,微服务是当今软件工程师之必备技能,就需要我们对分布式系统有丰富的经验。

比如容错性,可用性与一致性,分布式事务/事件、同步与异步通信,分布式认证,分布式应用,共识应用程序等非常重要。

数据库

精确掌握与数据库从通信到获取数据中要涉及的所有成本,如连接握手、数据传输等情况。清楚了解原子事务以及如何确保数据一致性。因此,数据库管理是软件开发人员的必备技能。

数据库用于管理数据,这是一项艰巨的任务,即使不考虑将业务逻辑添加到数据库中。 在大型IT系统中,数据库在安全性,可伸缩性,容量和可用性方面面临着诸多挑战。我们要考虑加密,复制,分片,大数据等问题。 了解数据库的工作方式以及如何优化它以及每项处理消耗的成本(例如,占用内存、CPU数)将有助于有效设计系统的数据库管理。

DevOps

主力开发工程师要有能推动DevOps的文化理念和实践的能力,在所有运维步骤中做到自动化,提高高质量和高速度交付应用程序与服务能力。代码部署或配置基础设施必须为自动化,且要灵活以及受到监控。

一个强大的开发者应该很好地了解从测试,发布到部署和基础架构管理的全开发生命周期。需要我们了解云计算,Linux,网络,容器,工程管理等。

代码管理

鉴于代码的重要性,只有主力开发人员才能够掌握代码生命周期,并力促软件工程最佳实践。 为此,需要你熟谙源代码管理系统,比如Git,对分支策略,版本控制,分布式修订控制,另外还有代码质量保证工具,代码间的通信和依赖管理,配置管理等有清晰的思维。

安全

Web安全是件很难处理的事情,一部分取决于许多外部参数; 软件工程师需要遵循构建安全Web应用程序的最佳实践与准则。

主力工程师需要对信息安全有较深的理解,不仅要如何避免构建不安全与容易受攻击的系统,还需要知道保护用户的隐私。

一个伟大的开发人员需要能够创建一个指南来处理前10个Web应用程序安全风险。 在Web应用程序中,我们有更多需要工程师关注安全威胁,其中包括如下:

1、上传文件检查;

2、密码暴力破解;

3、会话到期处理;

4、会话来源验证;

5、通过网络安全通信;

6、安全的Cookie访问;

7、用户凭证处理。

前端开发

前端开发是软件开发重要的一部分,如果您不知道程序设计与良好用户体验的关系,则不能成为主力软件工程师。

在前端世界中,Javas和CSS是软件工程师必备的。 在这两方面掌握掌握并不容易,但了解它们的工作方式以及两者如何与HTML连接一起,使我们能够提供出色的用户体验非常重要。

若要领导一个前端团队,你需要知道的不仅仅是如何建立一个漂亮布局,要想前端开发做得更好,你需要了解如下:

1、浏览器作为引擎可以构建什么?

2、如何开发响应式网站;

3、如何提高网站的性能;

4、如何开发单页面应用程序;

5、如何建设现代高效的发展环境;

6、熟悉HTML5 API。

7、熟悉React.js或Vue.js框架

为了掌握这些技能,开发人员需能够自我激励,主动学习新技术,并在职业生涯中给自己扣上很多帽子。 继而不断挑战自我,然后更好地解决问题,这就是编程的本质。 知识很重要,在某些复杂问题的情况下更是如此。在变化如此之快的IT技术领域中,知识的获取在任何时候比我们已会的技能更为重要。

另外附上学习大纲图

架构师筑基

开源框架解析

高性能架构

团队协作

微服务

B2C商城

那么高清完整大纲怎么获取呢,还有相关学习视频

# **读者福利**

读到这的朋友还可以免费领取一份唔我收集的Java核心知识体系文档及更多Jav进阶知识笔记和视频资料。

###资料领取方式:  **[点击Java高级架构群](http://qm.qq.com/cgi-bin/qm/qr?k=Bd4NyjGC-utCVPSktv_KlAJ5m7dG5ncs)**

![](https://upload-images.jianshu.io/upload_images/16449956-55386092e8b73460?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)

**更多笔记分享**

![](https://upload-images.jianshu.io/upload_images/16449956-eafd5e0cf00e9c11?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)

![](https://upload-images.jianshu.io/upload_images/16449956-020b352d2053f923?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 159,835评论 4 364
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 67,598评论 1 295
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 109,569评论 0 244
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 44,159评论 0 213
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 52,533评论 3 287
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,710评论 1 222
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,923评论 2 313
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,674评论 0 203
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,421评论 1 246
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,622评论 2 245
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 32,115评论 1 260
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,428评论 2 254
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 33,114评论 3 238
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,097评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,875评论 0 197
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 35,753评论 2 276
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,649评论 2 271

推荐阅读更多精彩内容

  • 关于Mongodb的全面总结 MongoDB的内部构造《MongoDB The Definitive Guide》...
    中v中阅读 31,790评论 2 89
  • 用两张图告诉你,为什么你的 App 会卡顿? - Android - 掘金 Cover 有什么料? 从这篇文章中你...
    hw1212阅读 12,480评论 2 59
  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 170,570评论 25 707
  • 记昨天,昨天忙了一整天,等晚上回到宿舍后莫名的多了一点忧郁感,不知从何而起,也就开始了反思自己。人总是患得患失,得...
    小咖Claire阅读 112评论 0 0
  • 今天Cathy回悉尼工作啦、专业的top迷妹,满世界追bigbang的演唱会。努力又独立的学霸小丫头,满满的青...
    爬上阳台吹吹风阅读 103评论 0 0