zoukankan      html  css  js  c++  java
  • 天天写业务代码的程序员,怎么成为技术大牛

    作者:程序之心丁仪

    来源:https://chengxuzhixin.com/blog/post/zen_me_cheng_wei_ji_shu_da_niu.html

    天天写业务代码,感觉没长进,技术深度止步不前,感觉很烦躁。很多人都在问,怎么样才能成为技术大牛?机会总是留给有准备的人,还是有一些方法可以帮助我们在工作中提升技术水平的。

     

    看优秀源码并模仿

    《黑客与画家》里说到,画家学画必须要临摹,从大师的作品中进行学习,美术博物馆便是他们最好的学校。而黑客则是通过观看优秀的程序来学习编程,研究它们的源代码,开源社区是他们最好的学校。

     看优秀源码是非常有效的学习方式,比如通读 spring 代码可以深刻理解 IOC、AOP 关键技术。通过对优秀代码的探索和发现,可以深刻理解技术方案和涉及的知识点,加深自己的技术深度。优秀的开源项目经过千锤百炼,架构设计是比较优美的,可以学到很多架构设计方面的知识和技巧。

     模仿是进步最快的学习方式。看了源代码之后,不妨从模仿开始,搭建一套自己的框架。通过模仿可以站在巨人的肩膀上,直接把前辈的经验转变为自己的能力,少走了很多弯路。很多良好的设计,并不是一开始就一步到位设计好的,也会经过很多人的讨论和优化,才变成我们看到的模样。而模仿可以帮助我们更深刻地理解设计背后的思考。

     

    主动解决问题

    很多人会抱怨,公司的代码很烂,学不到牛逼的技术。其实大部分技术问题并不难,难在没有多少人愿意去做。解决的问题多了,才能建立起个人影响力,才会有更多的疑难杂症交给你,才能获得很多成长的机会。当别人遇到问题首先想到你,你不进步谁进步呢?

     公司除了需要技术能力,更需要的是作为技术专家解决公司实际问题的能力。只有知道烂代码烂在什么地方,才能写出更好的代码,得到上级更多的赏识和认可。如果能全面掌握现有代码,看的越透彻,越能轻松进行重构和变革,就会成为不可替代的人。

     

    画类图流程图

    学习一项技术,理解一套代码,最重要的是学习技术原理和设计思想,这是很长时间内都不会改变的东西。通过画类图可以很好的理解技术方案和设计思想。大部分抱怨工作重复学不到技术的同学,可能都聚焦在具体的技术细节上了,而技术细节是变化比较频繁的东西,既消耗了大量的时间和精力,又让人把握不住重点。

     要想深刻理解系统的运作原理,需要画出系统流程图,才能看到整个系统如何工作。通过分析流程,可以整理出一个业务完整的交互图,写成文档,在后续的重构和需求沟通中会起到非常大的作用。

     在画图过程中,最好适当运用系统化思维进行一些分析。找到软件系统中存在的各个部分,和这些部分之间的关系。通过观察和分析,划定各个部分的边界,明确系统中可变和不变的东西。通过分析关系可以很好地理解系统的运行机制,明确系统中贯穿如一的关键核心事件,方便理解系统思想。

     

    从 0 到 1 做产品

    如果说最好的提升技术的方式是什么,那一定是从 0 到 1 做一个产品。从头开始做一个技术产品,非常锻炼架构设计能力。能够让开发者在架构方面有极大的提升,又同时会锻炼一些领域的纵深点。

     如果从零开始设计一个数据同步系统,假设每天要处理上亿数据,这个系统对开发者的技术成长是巨大的。在大数据处理、性能优化、分布式部署等方面也会有前所未有的积累。尤其是在用户量大起来后,要解决很多问题,倒逼自己有更多的深入学习和实战。

     很多程序员突破瓶颈的临界点,都是在从 0 到 1 的时候。这意味着,我们要全方位思考和复盘,被迫放大自己的技术视野,对很多问题的理解很快就加深了。

     

    刻意练习

    轮子哥说他在学校的时候每天8小时,连续练了4年。大三去了微软上海实习,晚上还在写自己的代码。陈道明有句广告语,如果再演一次,可以演的更好吗?我觉得就讲的很好。回到程序员身上,不妨问一问,如果再写一次,可以写的更好吗?

     如果真的想成为优秀的程序员,不要管那么多,静下心多写代码就够了,剩下的交给时间,学会做时间的朋友。可能开始练习的时候还是模仿,但是经过多轮练习,一定会产生属于自己的认知和经验。经过反复的推倒重来,当有一天写出的代码和模仿的对象不一样了,融入了自己的真知灼见,那可能就是突破的临界点了。

     只有深度的思考,才能逼近问题的本质。而深度思考,必然是需要反复练习的。如果总是浮于表面,永远无法突破瓶颈,很难得到提升。刻意练习可以一次次、一层层不断突破自己的认知极限,在反复思考中逐渐走到问题的中心、逼近问题的本质,自然能够开阔视野看到不一样的风景。

     

    总结

    本文整理了 5 种提升技术的有效方式,可以交叉运用:

      • 看源码:向优秀的代码和架构设计学习;
      • 解决问题:解决项目中存在的问题,把握更多进步的机会;
      • 画类图:画出系统中的模型和流程,适当运用系统化思维进行分析;
      • 从 0 到 1 做产品:锻炼架构设计能力,加深对技术的理解;
      • 刻意练习:深度思考,逼近问题的本质。
  • 相关阅读:
    Hihocoder 1275 扫地机器人 计算几何
    CodeForces 771C Bear and Tree Jumps 树形DP
    CodeForces 778D Parquet Re-laying 构造
    CodeForces 785E Anton and Permutation 分块
    CodeForces 785D Anton and School
    CodeForces 785C Anton and Fairy Tale 二分
    Hexo Next 接入 google AdSense 广告
    如何统计 Hexo 网站的访问地区和IP
    Design and Implementation of Global Path Planning System for Unmanned Surface Vehicle among Multiple Task Points
    通过ODBC接口访问人大金仓数据库
  • 原文地址:https://www.cnblogs.com/chengxuzhixin/p/13967508.html
Copyright © 2011-2022 走看看