前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >程序员你可别写代码了!

程序员你可别写代码了!

作者头像
CSDN技术头条
发布2018-10-08 11:38:55
5540
发布2018-10-08 11:38:55
举报
文章被收录于专栏:CSDN技术头条CSDN技术头条

来源:www.cnblogs.com/xrq730/p/5260294.html

前言

我本身是做Java开发的,因此有一部分内容也是专门面向咱们Java程序员的。

1

关于程序员的几个阶段

第一阶段——3 年

三年——筛选程序员的第一个门槛。从校园到职场。参与团队协作、使用项目管理工具、如何做代码测试和线上运行等,积累一定的开发经验,对代码有了基础的认识。

第二阶段——5年

五年——程序员拉开差距的第二个门槛。有些人在三年里,只能是个Coder,年纪大的势必被年轻人顶替;另外一些人,除了写代码,还热衷研究各种技术、看好书、写博客、分享技术,五年后必然具备在技术上独当一面的能力,逐步走向系统分析师或架构师,成为项目组不可或缺的人物。

第三阶段——10年

十年——转行或继续做程序员的节点。如果一开始就抱定不转行的思路并且为之努力的话,这些人必然成长为一名对行业、对技术有着深入认识,能从零开始对一个产品进行分析的程序员,这样的人在公司基本担任的都是CTO、技术专家、首席架构师等最关键的职位。

这三个阶段里,你应当不断思考三个问题:

  • 我到底适不适合当一名程序员?
  • 我到底应不应该一辈子以程序员为职业?
  • 我对编程到底持有的是一种什么样的态度,是够用就好还是不断研究?

最终,明确自己的职业规划,对自己的规划负责并为之努力。

2

项目经验+基本技术+个人潜力

在你无法改变自己的工作年限、没有服力强的项目经验时,怎样弥补劣势,我总结了几点:

  • 明确你的项目到底是做什么的,有哪些功能。
  • 明确你的项目的整体架构,在面试的时候能够清楚地画给面试官看并且清楚地指出从哪里调用到哪里、使用什么方式调用。
  • 明确你的模块在整个项目中所处的位置及作用。
  • 明确你的模块用到了哪些技术,最好再了解一下整个项目用到了哪些技术。

3

Java 程序员专业技能

掌握越多,薪水越高

1、基本语法:

包括static、final、transient 等关键字的作用,foreach 循环的原理等。如果我问你static关键字有哪些作用,你答出静态块,我会认为你不错,答出静态内部类我会认为你很好,答出静态导包我会对你很满意,看得出你非常热衷研究技术。

越简单的问题越能看出一个人的水平,别人对你技术的考量绝大多数都是以深度优先、广度次之为标准的,切记

2、集合:

包含 List、Map、Set,各种实现类的底层实现原理,实现类的优缺点。

集合要掌握的是ArrayList、LinkedList、Hashtable、HashMap、ConcurrentHashMap、HashSet的实现原理。我分享3点 ConcurrentHashMap 的研究方向:

  • ConcurrentHashMap的锁分段技术。
  • ConcurrentHashMap的读是否要加锁,为什么。
  • ConcurrentHashMap的迭代器是强一致性的迭代器还是弱一致性的迭代器。

3、设计模式:

设计模式在工作中还是非常重要、非常有用的,23种设计模式中重点研究常用的十来种就可以了,在面试会中提问设计模式的主要有三个方向:

  • 你的项目中用到了哪些设计模式,如何使用。
  • 知道常用设计模式的优缺点。
  • 能画出常用设计模式的UML图。

4、多线程:

如果你是个3年经验的程序员,就要了解 Thread 和 Runnable 的区别和联系、多次 start 一个线程会怎么样、线程有哪些状态。

常用的线程池有几种?这几种线程池之间有什么区别和联系?线程池的实现原理是怎么样的?有些面试官可能还会提供具体的场景,让你回答这种场景该使用什么样的线程池比较合适。

5、JDK源码:

要想拿高工资,JDK 源码不可不读。JDK 源码就是实打实地看你平时是不是爱钻研。总结一下比较重要的源码:

  • List、Map、Set 实现类的源代码。
  • ReentrantLock、AQS 的源代码。
  • AtomicInteger的实现原理,主要能说清楚CAS机制并且AtomicInteger 是如何利用CAS机制实现的。
  • 线程池的实现原理。
  • Object类中的方法以及每个方法的作用。

6、框架:

框架如何使用,比如我想要在 Spring 初始化 bean 的时候做一些事情该怎么做、想要在 bean 销毁的时候做一些事情该怎么做、MyBatis 中$和#的区别等。有的面试官也会深入问一些框架的实现原理。

7、Web方面:

Java主要面向 Web 端,因此 Web 的一些问题也是必问的。web.xml 里面的内容是重点,Filter、Servlet、Listener,不说对它们的实现原理一清二楚,至少能对它们的使用知根知底。

最后,建议学习、研究一下SOA 和 RPC,面向服务体系,大型分布式架构必备,救命良方、包治百病、屡试不爽。

4

易学难精的Java

1、易学的原因:

(1)很多培训公司包括大四的学生找工作都会学习Java,绝大多数是因为易学。Java从C/C++发展而来,它消除了C/C++中最复杂的语法、平台的差异性、不需要用户手动释放内存空间、避免了Java程序员和本地语言的交互,让程序员只需要专注于语法层面和应用层面。

(2)Java作为一门面向对象的语言,在企业级开发中体现出了它无与伦比的特性,整个开发流程比较固定化、模块化,需求分析起来也相对容易

2、难精的原因:

在应用运行过程中遇到了语法层面和应用层面之外的错误,应当如何处理?比如线上环境出现内存溢出怎么办?GC时间过长怎么办?IO长时间没反应怎么办?方法抛出莫名其妙的异常怎么办?

解决这些问题都需要大量的实践、对 Java 底层实现细节的研究,也是最考验 Java 程序员的部分,一些人根本无法深入研究。除非你水平特别高,否则五年工作经验以下的Java程序员在简历上写”精通Java”绝对是一件非常愚蠢的事情

5

结语

只有弱者才会说“程序员30岁之后就要转行”这种话,只有弱者才会听“程序员可别再写代码了!”这种话。

常说IT界会写 if...else...的人多,写框架、搞架构的精英少,怕是和程序员进取心不强有莫大关系,若是人人都在入行时抱着“我30岁之后就不写代码”的心态,又有谁愿意专注的去提升自己的技能呢?

说了这么多,我认为,作为一名程序员,只要你足够优秀,30岁甚至35岁之后在IT圈依然有属于自己的天地,并且这片天地只会越来越广阔。

越努力、越幸运,如果你不是官二代、富二代、红二代,那么请记住:持续学习才是改变你命运的唯一捷径。

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2018-08-30,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 GitChat精品课 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
项目管理
CODING 项目管理(CODING Project Management,CODING-PM)工具包含迭代管理、需求管理、任务管理、缺陷管理、文件/wiki 等功能,适用于研发团队进行项目管理或敏捷开发实践。结合敏捷研发理念,帮助您对产品进行迭代规划,让每个迭代中的需求、任务、缺陷无障碍沟通流转, 让项目开发过程风险可控,达到可持续性快速迭代。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档