程序员进阶,技术提升

计算机方面的基础主要包括计算机网络、算法、数据结构等,非常重要。

  -- 除了写代码之外,还热衷于研究各种技术实现细节、看了N多好书、写一些博客、在Github上分享技术,这些人在五年后必然具备在技术上独当一面的能力并且清楚自己未来的发展方向,从一个Coder逐步走向系统分析师或是架构师,成为项目组中不可或缺的人物。

  技术以深度为主以广度为辅,时间分配80%放在自己第一技术上面,20%可以选择扩展技术广度。
  你要找到学习的目标,我当时想法是公司缺什么样的技术人才,就利用工作之余的时间去学习相关技能,快速学习,加入实战帮助公司,从而提升个人价值。如果你是想自己想做一个产品,你是前端开发,你就可以选择一门服务器的语言来学习,学习的方向其实都是根据自己的目标需求进行选择的。

  -- 人类懂得学习,会使用工具。
  在其中的一些项目中作为最好的程序员; 而在另一些项目中是最差的。当你是最好的,你能测试领导项目的能力,用你的观点激发别人。当你是最差的,你学习杰出者是怎么做的,了解他们不喜欢做 什么(因为他们吩咐你做事)。

  最后定义你的优秀程度的还是作为软件工程师的基本素养,学习能力和编程能力,还有设计能力。

-- 1.自己独立完成项目,这个叫初级程序员; 2.能带Team完成项目,并且能够了解项目框架中的源码,思想,能够做一些改进,这个叫做中级程序员; 3.能独立写框架,写算法,这个叫做高级程序员。
-- 业务知识的积累,编码规范的积累,最佳实践的积累,开发流程的积累。建议:
1. 0~6个月 学习技能和术语和思维方式的阶段
2. 3~24个月 学习业务知识,编码规范,最佳实践,开发流程的阶段

3. 6~120个月 抽象梳理问题,寻找解决方案,参加其他人解决问题的思路,给出自己解决方式的阶段。

-- 如何成为杰出的程序员或软件工程师?https://www.zhihu.com/question/19636213/answer/40350039
  JDK源码其实没什么好总结的,纯粹看个人,总结一下比较重要的源码:
(1)List、Map、Set实现类的源代码
(2)ReentrantLock、AQS的源代码
(3)AtomicInteger的实现原理,主要能说清
楚CAS机制并且AtomicInteger是如何利用CAS机制实现的
(4)线程池的实现原理

(5)Object类中的方法以及每个方法的作用

年轻程序员如何快速发展成一名架构师或者技术专家?-http://blog.csdn.net/chancein007/article/details/53731148
最牛B的编码套路- http://blog.csdn.net/chancein007/article/details/53731514

-- 高级程序员和普通程序员有哪些区别- https://blog.csdn.net/zhugeaming2018/article/details/81546344

-- 要避免程序员变成码农要做到如下几点:
1.必须对编码保持热情,并持续学习;
2.必须保持好奇心,乐于探求事物本质;
3.必须对所做的工作及时总结,主动优化代码,让系统变得更加有机;
4.必须主动尝试更好的开发方式、更先进的工具,来提升开发效率,并想办法避免重复性的工作;

5.必须不断改进设计,将编程变成创造性的工作。

-- 真正让自己技术得到提升的关键点有三个方面,一个是“实战项目”,一个是“技术书籍”,还有一个就是“开源代码”。
 “实战项目”永远是积累编程经验最重要的途径,项目越复杂,开发中遇到的问题越多,经验的积累也越多,我相信任何一门技术,如果总只是自己写写Demo,是永远掌握不好的;
 “技术书籍”则指的是那种着重“思想”方面的书籍,能从本质上提升个人的编程素养,例如:“xxx编程思想”、“Effective xxx”、“重构”、“设计模式”等等,这些书都是需要反复看的,有了实战经验再带着问题看,效果会好很多倍。
 “开源代码”则是吸收“别人的实战项目经验”的最好途径,不要做井底之蛙,看看大牛们都是怎么设计代码的,深入学习优秀的开源代码,你能学到很多非常实用的编程技巧和编程风格。
  -- 其实学习编程无非就是以下几个阶段:
(1)第一阶段,了解系统/平台(Windows、Linux、Android、IOS)的基本工作原理,了解其开发环境,编译系统,以及有哪些可以使用的编程接口(API)和第三方库。
(2)第二阶段,学习该平台提供的各个API和第三方库,比如:UI控件、线程、Socket等等,并通过Demo和封装,转换为自己的库和API。
(3)第三阶段,在项目实战中积累开发经验,并通过技术书籍、开源代码提升编程技巧和能力。
(4)第四阶段,深入了解和研究平台本身,比如:UI系统工作原理,消息通知机制,内核和框架等等。

(5)第五阶段,开始从更高的角度来思考问题,研究最佳解决方案、编写或搭建开发框架,走向架构师之路。

-- 程序员的能力:
 1.编程能力,用代码解决问题,解决复杂的问题和各种麻烦,细分有调试 算法 数据结构 OS原理;
 2.架构能力,解决代码规模的问题,架构的一些意识 如解耦 接口隔离,认识业务建立抽象模型,还有常见的模式 如经典的MVC,还有设计层面 面向对象 设计层面等;
 3.工程能力,解决协作的问题,工程化建设,跨越多个业务及团队,包括前后端解耦,模块化,质量保证,代码风格等。

-- 工程师如何在工作中提升自己?- https://blog.csdn.net/MeituanTech/article/details/79922326

  跳槽不外乎是想有更好的待遇,更广阔的发展平台以及更丰富的资源,这一切都需要基于你目前的能力。有句话说的好,作为职业人,我们需要的不是当前的高薪,而 是拥有随时跳槽的能力。所以能力不仅仅包含专业能力,还有职业能力、沟通能力以及大局观的能力。
  结构化面试主要考量应聘者的3个匹配、6个维度的能力,分别是:职位匹配、团队匹配、企业文化匹配;知识维度、技能维度、能力维度、个性维度、动机维度、价值观维度。

    技术管理者,通过管理来提升技术的实现效率与效果,减少摩擦损耗。架构师,通过复制自己的技术能力来提升团队,达到放大个体价值的作用。

  通常程序员在这一阶段的职业发展分两条线,专家(技术)线和管理线。专家线主要跟机器打交道,搞搞性能调优,高并发处理等等高精尖的问题;管理线主要跟人打交道,了解下属的状态,控制资源和进度。

 -- 技术路线:高级-资深-技术专家-高级专家-资深专家-研究员等

 -- 管理路线:

Android开发工程师高级进阶(教程)- http://www.jianshu.com/nb/395384

程序员到高级程序员的10步- http://blog.csdn.net/wongdei123321/article/details/78960823
程序员技术练级攻略-程序员技术浅谈- http://blog.csdn.net/thanklife/article/details/73161117

-- 程序员、技术主管和架构师- http://blog.csdn.net/mindfloating/article/details/52665111
架构师的职责要求:
   ## 技术职责 
 继承技术主管的职责;高纬度的系统设计、抽象和封装;产品技术蓝图绘制与关键技术决策;
   ## 组织职责 
 继承技术主管的职责; 跨技术和非技术团队的接口协作;
技术主管的职责要求:
  ##  技术职责 
 研发任务管理;工作量评估;任务分解、分配;代码审核;风险识别;
 技术能力提升;代码规范制定和推广;生产力工具研发和推广;最佳实践总结和推广;关键代码实现;
  ## 组织职责 
 协调沟通; 招聘面试; 教练指导;复盘总结;

-----------------------------------

1.JavaWeb后台等级规划, H5前台等级规划

2.测试等级规划

猜你喜欢

转载自blog.csdn.net/ShareUs/article/details/79099544