关于程序人生:编程进阶之路虽无捷径但有长短

42次阅读

共计 3456 个字符,预计需要花费 9 分钟才能阅读完成。

前言:最近收到很多读者敌人私信,问我如何学习编程,这个问题其实很难侧面答复,而且自己也确信本人达不到指导他人学习的高度,这篇文章基于作者本人这几年趟过的路,和大家聊聊编程学习的话题,仅供一些感到迷茫的敌人做点参考。

一、面对抉择

1、编程语言

学习编程的第一件事就是面对语言的抉择,编程语言形形色色品种繁多,不同的技术类型适应不同的利用场景,所以语言自身没有高下之分存在即正当,学会做抉择才是入门的要害;

【倡议】 在抉择之前对支流的技术选型做比照理解,相熟不同编程语言的学习老本、难度、实用场景、市场需求等根本状况,具体如何抉择能够从如下几个方面思考:

  • 趣味使然:本人感兴趣的货色能力更加容易的坚持不懈,技术积攒最须要的就是保持一直的积淀,没有其余所谓的捷径可走;
  • 支流语言:在单纯做语言选择的时候,更举荐从支流中选取,市场的工作机会多,这样求职压力就会缩小,从各大招聘网站上搜寻即可失去参考性数据;

【倡议】 在工夫容许的状况下,除了深刻学习一门支流语言,还能够对其余技术做入门级的学习即可,如果工夫不容许,那就肯定要专一在一门语言上,以进步业余程度和市场竞争力。

2、入职公司

工作上对于入职的公司抉择,网上各种剖析帖曾经说的非常透彻了,通常来说,如果真的具备抉择不同公司的能力,都不会纠结于如何抉择,首先看如下几种类型的公司:

  • 守业型:有资源、资金、好的想法的守业团队,退出的门槛是最高的,如果能在公司初创期退出,可能 3 - 5 年就会胜利的走出职场;
  • 大公司:简单的业务模式,宏大的零碎架构,谨严的合作流程,这是大厂的根本标签,所以在大厂不够锤炼人的说法有点迷,职场绝不单看技术能力;
  • 小公司:小公司与守业型公司有实质上的区别,这里更多的指业务模式单一体量较小的公司,很容易呈现一个人负责多个角色的状况,的确锤炼人;

以上说法只是大概率的普遍现象,不针对个别不同的状况,通常支流的倡议都是举荐抉择对本身倒退有影响的公司,以便于更快的积攒业余能力,这样后续有更宽敞的抉择空间,退职场初期也大多会这样抉择。

【事实】 上退职场积淀几年之后,少数人再次面对抉择的时候,首先思考的就是薪水高下,人一但尝过生存的五味杂陈,就能领会到经济能力才是对抉择的最大撑持,用一句经典的话来解释:人到中年身不由己,上有老下有小。基于广泛的实在情况来看,薪水的高下与公司入职门槛的高下成正比。

3、倒退路线

职场上倒退路线是至关重要的,工作的前 2 年,须要一直积攒业余的技术能力,随着教训的积攒薪水的进步,尤其是心态上的一直变动,坚韧不拔的走技术路线的人很少,这与当下互联网的环境有最间接的关系,这里说几个常见的倒退路线:

  • 技术路线:须要对技术谋求抱有继续的趣味,技术既要具备深度也要具备广度,大多数开发退职场初期可能都具备这种心理,然而随着职场的一直磨难和环境的影响,谋求技术的激情,兴许会被磨的平淡;
  • 治理路线:技术向治理角色的转变,因为互联网的环境起因或多或少存在肯定的被动因素;少数公司站在需要与老本均衡的角度,对于极具技术深度的人才需求并不强烈,技术能力较好同时具备业务和团队的治理能力更受职场的欢送;
  • 守业路线:在互联网畛域中机会还是比拟多的,各行各业都在提倡互联网 + 的背景下,如果退职场中有了足够的能力、资源的积攒,会有相当一部分抉择尝试守业;

【留神】 如果把技术当成解决业务的工具,即便对技术深度的谋求不多,也要对技术的应用做到粗疏与纯熟,对于业余领域内的能力是不能打折的,遇见过多数的技术面试这样解释本人的综合能力:因为谋求于项目管理或者业务解决能力,所以欠缺技术细节方面的积淀。这种思路当真是清奇。

二、技术栈整顿

下面聊编程中对于抉择的热点话题,这里来说具体的技术积攒,作为一名 Java 编程选手,上面次要围绕相干支流的技术栈与进阶过程做梳理,大抵分为根底、进阶、高级三个阶段,受到工作经验与教训的影响,所以在划分的时候存在诸多主观因素。

1、根底篇

在掂量一个开发人员的能力时,通常会提到一句话:技术深度与业务高度,这里说的技术深度,至多有 6 - 7 成的因素是指根底能力的深度。常常浏览框架的实现源码会发现,都是对于 JDK 源码、设计模式、构造算法的排列组合,从而造成解决某类场景业务的组件。

【倡议】 在有大量模块化闲暇工夫的阶段,把次要精力继续放在以上根底模块,是收益最大的抉择,这里更多指大学阶段。编程中越是根底原理就越简单,这是广泛认可的共识,所以这个模块在学习的时候对于工夫老本要求较高,一旦进入工作阶段,很难在抽出整体的工夫粗疏的回顾根底模块。

假如 Java 的汇合容器模块,用 1 - 2 周的工夫,从 API 应用到源码逻辑,剖析外在的扩容机制,波及的算法与数据结构,进而再回升到设计模式的实际,流程这样走下来对于根底的了解就具备肯定的深度了,也天然达到举一反三的成果,那么对于 IO 流与并发也就是雷同的原理。

2、进阶篇

这里列举的是以后技术选型中罕用的框架与组件,当进入工作阶段之后,会接触到各种不同的开发组件,学会纯熟应用不同的组件去解决不同类型的需要是不可短少的能力,这时候对于框架原理的了解,齐全依赖于根底能力的积攒水平。

【阐明】 一下,最近几年随着对互联网数据的器重,很多公司都在做数据的采集积淀与剖析,同时大数据畛域的开源组件推出,曾经弱化了 Java 工程师与大数据工程师的边界,所以对于大数据技术栈的理解,对于治理海量的业务数据是至关重要的,相熟 3 - 2 个数据存储查问的组件,会提供更宽阔的技术选型思路。

3、高级篇

当能力达到这个阶段,基本上就是架构师级别的水准了,同样的情理这个阶段依赖于根底和进阶能力的积淀,鉴于作者自己没有历经过架构师的职位,所以无奈给到主观的倡议,只是对于团队中架构师的职责做的剖析,次要在于提供技术栈的选型和简单业务的解决方案,流程自动化是分布式系统的必要撑持。

【留神】 这里只是单纯的技术进阶的角度,对于掂量开发人员的另外一个外围因素:业务高度。站在主观的角度去看的话技术与业务能力须要一比一晋升,业务管理也是走出开发角色的根本要求。

三、业务管理

从入职场开始,因为没有待过纯技术型的公司,所以都是在围绕业务场景做编程开发,能感觉技术能力有较大晋升的阶段,都是在解决简单业务之后的反思。业务的底层逻辑是流程治理与模型建设,如何认知简单的业务并进行形象设计是技术水平的间接体现。

【然而】 在公司的日常面试工作中,时常会遇到大量求职者表白本人单方面的诉求:一种是心愿公司能够提供技术倒退路线,而不是常年累月的业务版本;另一种则心愿公司能提供业务倒退路线,入职之后能够缓缓脱离技术方向。如果站在招聘需要的角度去思考,倡议在求职面试时不要表白这种集体倒退路线的谋求,因为少数公司的招聘目标都是:须要技术人员来实现业务需要。

【误区】 职场上的新人选手,很容易产生这样一种心里:每天都是理不清的业务需要,改不完的坑坑洼洼,然而换个公司和环境之后,会发现仍旧是这种工作节奏。所以在老手阶段就用乐观的心态去面对各种业务模式,并且继续的学习和总结各种业务解决方案,这是开发同学技术转型的外围竞争力。

【通常】 来说,业务是关联公司各个角色的连接点,对于业务解决方案都会以各种文档的模式记录并积淀下来,这也是团队罕用的一种管理手段,也不便当前在相似的业务中提供借鉴参考,一直晋升业务落地的能力和效率。实际上大部分开发选手都会抉择技术与业务同时积攒的形式,尽量放大本人职场的可能性。

四、拓展能力

拓展能力作为职场上必备的软技能,并不是程序员才须要具备的,对于常说的治理能力、流程标准等都是教训积攒的体现,至于这些能力如何去积攒很难一概而论,因为不同的环境经验的不一样,好的多借鉴,差的作为反面教材即可,这种能力通常在一段经验之后花点工夫总结反思就会明确。

【特地】 说一下对于认知这种形象的话题,因为存在于产品开发的各个环节,退职场上也会常常听到,认知导致思路对不齐,所以不论是产品、开发、项目经理;如果认知角度繁多,认识就会全面,如此在流程合作中很容易产生极大的一致。

五、学习与积攒

业余的工作能力和教训积攒包含多个方方面面,技术、业务、软能力。这种积淀是一个长久的过程,以乐观的心态去学习遇到的冷门技术栈,用平静的情绪去钻研热门的新框架,并且一直的总结业务实现的计划。最初祝大家:惊涛骇浪、扬帆远航。


同系列举荐

  • 3 天筹备 5 天面试,跳槽实现
  • 跳槽之后,如何安稳走过试用期
  • 工作五年之后,对技术和业务的思考
  • 个人成长中,对于规划设计的思考
  • 站在面试官角度,看求职与内卷
  • 简简单单的总结,意如生存的平淡

正文完
 0