0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

到底怎样才能成长为一名软件教练呢

华为开发者社区 来源:华为开发者社区 作者:华为云小月老师 2020-11-18 10:45 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

软件正在改变世界,也在改变着华为。近几年华为招聘了众多业界软件精英,以软件教练身份加入,着力提升自身软件能力。那么,到底怎样才能成长为一名软件教练呢?本文作者以自身经验之谈,为各位开发者们提供一条新思路……

师傅领进门,修行在个人。我在本文中只指出道路,相当于一次将全套功法给你。但修行的路还请自己努力。不明白的地方,Google是个金手指。我会看大家对具体哪里更感兴趣,后续将其展开讲一下,作为一个系列。大家可以留言给我。

第一阶段对应炼气期。你要掌握:

1, Java:俗称JAVASE。不仅仅指Java语法,还包括JDK的使用。这块知识非常沉重也非常重要。沉下心花几年时间学好它。推荐学习方式:a) 《Effective Java》。让你感受下Java里面的弯弯绕绕,并不是语法表现的那样傻白甜。 b) SCJP考试。现在可能改名为OCJP了也说不定。全方位让你了解Java及里面的细节。非常重要。 c) 《并发编程实践》。必读刊物。多核CPU自带L2 cache却共享内存和线程,复杂的锁,一行Java代码被编译为多行机器指令而CPU在任意机器指令间都可切换线程。面对这么复杂的硬件环境,Java是如何设计保证程序正确的。

2, 敏捷开发:敏捷开发不是靠书学的(虽然也有书),而是靠实践来感悟的。就像卖油翁,不去倒油光靠看老翁写的心得,永远不会倒油。

3, 算法与数据结构:a) Leetcode刷题。虽然只有极少的开发会用到算法,但这是能力的体现。不要以为就是个链表反转,至少要把动态规划级别的算法搞懂。 b) 《算法导论》。读读就行了。希望你能读懂。

4, 测试:要了解测试同学如何写测试用例,如何保障code coverage,如何做自动化。

第二阶段进阶至筑基期:

当上面了解的七七八八后,你自然而然就会产生心灵上的感悟从而进阶至筑基期。你要掌握:

1, 设计模式:《设计模式》,Gang Of Four。四杆老枪的设计模式(我可没开车),教会你面对各种经典场景如何构造类群。

2, JVM原理:《深入理解Java虚拟机》。我刚工作时,大概06年,如果那时候有人说对JVM原理很懂,那就属于国内顶尖的技术人才了。现在知识的获取方式越来越方便了,比如阅读本文。你需要了解JVM如何使用内存,如何GC,如何调整启动参数,如何查看各种dump文件等等。

3, 网络编程:书籍暂时没有推荐。反正就是要搞懂HTTP/WebSocket与TCPIP与Socket的关系等知识。

4, 分布式系统中各种中间件:a) Dubbo。国内最知名开源项目。无中心化分布式架构的核心。取代了IBM的SOA产品(中心化架构造成性能瓶颈)。 b) ZooKeeper。Zookeeper小红书。分布式系统数据一致性协调工具。单机进程,代码执行被认为是完全可靠的,要么执行成功要么执行失败。而到分布式系统,网络调用偏多出来一个超时。分布式系统之所以比单进程复杂那么那么多,都是这独独一个超时闹的。理解CAP,理解分布式系统数据一致性,是分布式系统不出错的保障。你从来没看见银行转账时给你少转过一分钱吧? c) Kafka。《Kafka权威指南》。要理解其为什么那么快又那么可靠又那么存储空间大。同时也是理解幂等性最方便的系统。 d) Redis。《Redis设计与实现》。了解了前述的知识,Redis就是个菜。无非多了个流言协议,一致性哈希环,跳跃表,哨兵,持久化方式而已。 e) MySQL(假装其也是中间件好了)。

《MySQL高性能》,《MySQL技术内幕:InnoDB存储引擎》。要了解红黑树和索引的实现方式,了解innodb存储引擎的工作原理,你才能更好的理解explain sql后出来的各种回显结果,帮助你更好调优sql。MyISAM被废弃了,你可以少看一本书了,偷着乐吧,少年。 f) Nginx。之所以能有多个幂等节点存在,就全靠它了。学一下它的单线程技术。明明是单线程却能做到高性能。“我就是看不上你多线程,咋啦?”唯有真正理解计算机原理才能返璞归真。 g) Netty。《Netty权威指南》。你有没有感觉到在2002年后的某一年,就在短短一两年内,计算机网络突然提速了?02年JDK1.4,04年Netty。本来计算机网络性能被阻塞在IO上。但NIO大幅度提升了IO效率。

Go语言为什么曾那么火?它的MPG模型还是找的IO阻塞的茬,使得多线程并发会更快。学一下Linux IO模型,零拷贝技术。理解计算机原理才能做到真正性能优化。 我猜测,在JDK支持了NIO之后,Tomcat等web容器很快就进行了IO模块的更新,之后各大网站的Tomcat跟着升级,于是在全世界硬件资源没变的情况下,网络站点服务器的并发响应能力大幅提升。 顺便说一句为什么Java语言会长盛不衰。因为任何新语言的特性,比如Go的MPG模型,Reactive模式等,很快就会被Java抄过来。Java已有AKKA并成功用于Flink等知名项目了。而Go想抄Java的好处,短时间很难达成。 h) Flume。一个日志收集传输系统。 i) ProtoBuf。序列化也是性能中需要重要关注的地方。 j) Tomcat。太有名了。学学其classloader的设计。

5, JAVAEE依然有用的知识:比如servlet,JMX等。哎,一个时代的落幕。

6, 编译原理与操作系统:我假设你上大学时候就学过了。没有的话,至少操作系统要读一下。就读清华大学的本科教材吧。

7, 分布式数据库体系架构:第4条讲的是内存网络的分布式架构。这条要讲持久化存储的分布式架构。分库分表,异构索引,数据库主备等。《数据密集型系统设计》,这本书很赞,堪称存储设计的通史。

8, Spirng and Mybatis:怎么说呢,你能读懂源代码当然更好。

9, 前端与CDN:至少要了解一下。

10,UML建模:教会你如何认识世界并转到计算机系统里来。《UML用户指南》。

上个境界,是最难晋升的了。多少开发们被阻在这步一辈子不得前进了。因为既要承担繁重的开发任务,又要学习那么多的知识,还要处理个人的生活,太难了。这些知识对你的提升又只是相加,不是相乘的关系。熬过去后海阔天空。

第三阶段金丹期:

好了你现在是金丹期了,你的很多要继续学的知识,都是靠前面给你打基础的,你会发现你的提升曲线斜率越来越抖了。你要掌握:

1, 架构设计方法论:做事要有章法。《软件架构设计》。

2, 领域驱动设计:软件是真实世界在计算机中的虚拟映射。如何让软件更贴近真实世界,读一下Eric Evans的《领域驱动设计》。很晦涩,不太容易懂。

3, 中台:中台这个词现在这么火,怎能不提一下。平台是啥也许你还不清楚,那就先了解一下中台。

4, 高性能调优:还是那句话,真正了解计算机及runtime的本质,才能做到性能调优或Hacker。《性能之巅》。

5, 稳定性建设:凑合看《逆流而上》。但是稳定性和上述的性能调优,是真正体现水平的地方。还有Google的《Google SRE》。

6, 两地三中心容灾系统建设:这个目前我还不清楚有什么书。如果确实没有的话,可以趁机出一本抢占市场。

7, 全链路压测:又是测试。但又不仅仅是测试。对系统的性能瓶颈节点的探查,对系统QPS的掌控。单单一个起压机就不容易设计。

8, 大数据:首先,你需要跨多个领域开始了解更多的知识。其次,你会发现我对技术的介绍粒度开始越来越粗了。因为你之前打的基础 - 粗粒度之下用来支撑的细粒度知识,已经生效了。再然后就是我会减少推荐书籍。到了这里你应该形成自己的知识体系了,也就会找书了。离线海量数据存储与计算的Hadoop。将Hadoop变的更易用些的HIVE。在线海量数据存储的HBase。批计算的Spark。流计算的Flink。自成一套ELK,尤其大名鼎鼎弹性搜索。时序数据库Druid。

9, 数据仓库:大数据都学了,顺便也就把数仓学了呗。顺手的事而已。

10,IC:HCIE,这个我就不班门弄斧了。

11,网络安全:我也不懂。汗。

12,Linux OS。可不仅仅是使用命令操作系统而已。当然,即使是这样也不容易了。

第四阶段化神期:

当你还要再继续晋升,就涉及到我也不完全理解的境界了。

1, 中间件的实现细节:作为业务侧的技术架构师,通常会把存储和网络的需求下压给中间件团队。但是他们是怎么实现的呢?细节重要的点是什么?

2, 使用Master Slave模式,Spark等是如何实现分布式任务分解并确保计算正确的?

3, Docker虚拟化技术。

4, Yarn的资源分配技术。

5, 计算机网络等。

6, 再扩展一下技术领域,触角伸到AI领域。那么数学基础,各种论文与算法实现。又或者使用算法来赋能某个具体的业务领域比如AI赋能新零售。

7, 也可以往IOT方向发展。随着5G的发展,这个应该也很火。持续看好。

责任编辑:xj

原文标题:从码农到教练,软件神功咋个炼?

文章出处:【微信公众号:华为开发者社区】欢迎添加关注!文章转载请注明出处。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • JAVA
    +关注

    关注

    20

    文章

    3005

    浏览量

    116812
  • 软件
    +关注

    关注

    69

    文章

    5350

    浏览量

    91860
  • 开发者
    +关注

    关注

    1

    文章

    779

    浏览量

    18059
  • 5G
    5G
    +关注

    关注

    1368

    文章

    49210

    浏览量

    637931

原文标题:从码农到教练,软件神功咋个炼?

文章出处:【微信号:Huawei_Developer,微信公众号:华为开发者社区】欢迎添加关注!文章转载请注明出处。

收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    Debian 69未检测到Intenso NVME,怎样才能让它工作?

    嘿。我刚刚设法更新到 2.5.0 并启动了 Debian 版本 69。 但未检测到我的新 NVME SSD它在闪烁,但也许我必须做其他事情然后将其内置? 我怎样才能让它工作? 谢谢
    发表于 03-25 06:38

    嵌入式软件测试找bug的常见方法和秘诀

    在嵌入式软件开发过程中,般来说,花在测试比花在编码的时间要多很多,通常3:1(甚至更多)。这个比例随着你的编程和测试水平的提高而不断下降,但不论怎样
    发表于 01-12 07:07

    隼眼科技获得第六届综合交通创新创业大赛总决赛第一名

    由中交集团举办的第六届综合交通创新创业大赛总决赛于12月16日落下帷幕,隼眼科技参赛的“基于92-94GHz毫米波雷达的全天候感知系统”获得了第一名的好成绩。
    的头像 发表于 12-18 17:07 744次阅读

    快问快答:产品气密性检测NG了?1分钟精准定位泄漏点的实战方法

    成本,还会严重干扰质量判断。精诚工科真水测试仪,漏点定位步到位那么,当气密测试出现泄漏不良时,到底怎样才能高效、准确地找到漏点?时间就是金钱。产线每停滞
    的头像 发表于 12-10 17:34 1209次阅读
    快问快答:产品气密性检测NG了?1分钟精准定位泄漏点的实战方法

    东风本田CR-V荣获2025合资SUV质量体验第一名

    近日,2025年中国汽车产品质量表现研究(AQR)结果发布暨颁奖典礼圆满落幕。东风本田CR-V凭借卓越的质量表现,荣获“合资SUV质量体验第一名”的桂冠,这权威奖项不仅是对东风本田CR-V的肯定,更是对品牌在质量、品质等方面多年坚守“长期主义”的最佳褒奖。
    的头像 发表于 10-09 09:56 718次阅读

    软通动力斩获2024年中国IT服务市场份额第一名

    近日,赛迪顾问发布《2024-2025年中国信息技术服务市场研究年度报告》。软通动力凭借在智能化转型浪潮中的卓越表现,以领先的数智化能力持续领跑中国IT服务市场,不仅斩获2024年市场份额第一名,更在IT咨询、IT运维等核心领域巩固优势,综合竞争力持续提升。
    的头像 发表于 08-01 17:53 2064次阅读

    CYT2B93CAE怎样才能接收特定 ID 的中断?

    你好,我正在使用 CYT2B93CAE 使用设备配置器 5.3,我选择 RX 缓冲区来接受特定的 ID(例如,0x020)。然而,问题是我在总线上的所有帧上都收到了中断,而不仅仅是专用 ID。 当其他所有 ID 均未发生中断时,我怎样才能接收特定 ID 的中断?
    发表于 07-15 07:09

    润和软件稳居数字业务类解决方案市场第一名

    ”)凭借自身卓越的技术实力和创新能力,连续五年稳居数字业务类解决方案市场第一名;在细分领域:数字信贷系统解决方案子市场持续保持第一名,数字银行解决方案子市场跃升至第一名。同时,其在开放银行、交易银行、智能营销、智能风控、数据智能
    的头像 发表于 07-14 17:36 1465次阅读

    WICED IDE 6.6.1.1怎样才能连接到自定义硬件?

    设备? 我们怎样才能指示 WICED-IDE 使用我们的 4 通道 UART2USB 转换器提供的 “普通” VCOM COM 端口之? 有人能给我些关于如何连接我们的定制硬件并验证基本功能的说明和见解吗。 任何帮助将
    发表于 07-09 07:01

    将CYW20706基于硅的蓝牙模块(CYBT-343151-02)连接到定制板上的MCU,怎样才能将链接配置未确认数据模式?

    我将 CYW20706 基于硅的蓝牙模块(CYBT-343151-02)连接到定制板上的 MCU。 它在确认数据模式下工作,没有问题 但是我怎样才能将链接配置未确认数据模式
    发表于 06-27 08:23

    怎样才能安全地按住ctrc +c日志阅读器然后才能停止并重新启动日志?

    的读取过程,我将无法在 FX3 中操作任何东西,所有命令都不起作用,所有控件写入/读取都将不起作用 以下是两个函数 我怎样才能安全地按住 ctrc +c 我的日志阅读器然后才能停止并重新启动日志
    发表于 05-27 07:11

    华为荣登GlobalData运营商基础设施管理服务排名报告Leader象限第一名

    象限第一名。 报告对通信服务商从商业模式、解决方案、网络设计与优化、网络转型能力、服务规模、和业务敏捷性六个维度进行了全面评估,华为综合得分第。这印证了华为在对全球运营商客户提供领先服务解决方案、网络极致性能和数智化转型等方面做出了卓越
    的头像 发表于 05-22 18:43 1211次阅读
    华为荣登GlobalData运营商基础设施管理服务排名报告Leader象限第<b class='flag-5'>一名</b>

    如何成为一名合格的KaihongOS南向驱动开发工程师

    如何成为一名合格的南向驱动开发工程师 1. 我需要具备哪些方面的知识? KaihongOS南向适配的方向分为:驱动开发、内核开发。根据适配方向划分,需要掌握的知识技能分别为: 驱动开发
    发表于 04-23 08:02

    如何成为一名合格的KaihongOS北向应用开发工程师

    如何成为一名合格的北向应用开发工程师 在快速发展的软件开发领域,北向应用开发工程师是个专注于系统级应用开发的高需求职位。 以下是成为一名合格的KaihongOS北向应用开发工程师的
    发表于 04-23 06:46