编程进阶之路,虽无捷径但有长短

简介: 专业的工作能力和经验积累包括多个方方面面,技术、业务、软能力,并且这种沉淀是一个持久的过程。
前言:最近收到很多读者朋友私信,问我如何学习编程,这个问题其实很难正面回答,而且本人也确信自己达不到指点别人学习的高度,这篇文章基于作者自己这几年趟过的路,和大家聊聊编程学习的话题,仅供一些感到迷茫的朋友做点参考。

一、面对选择

1、编程语言

学习编程的第一件事就是面对语言的选择,编程语言五花八门种类繁多,不同的技术类型适应不同的应用场景,所以语言本身没有高低之分存在即合理,学会做选择才是入门的关键;

【建议】 在选择之前对主流的技术选型做对比了解,熟悉不同编程语言的学习成本、难度、适用场景、市场需求等基本情况,具体如何选择可以从如下几个方面思考:

  • 兴趣使然:自己感兴趣的东西才能更加容易的持之以恒,技术积累最需要的就是坚持不断的沉淀,没有其他所谓的捷径可走;
  • 主流语言:在单纯做语言选择的时候,更推荐从主流中选取,市场的工作机会多,这样求职压力就会减少,从各大招聘网站上搜索即可得到参考性数据;

【建议】 在时间允许的情况下,除了深入学习一门主流语言,还可以对其他技术做入门级的学习即可,如果时间不允许,那就一定要专注在一门语言上,以提高专业水平和市场竞争力。

2、入职公司

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

  • 创业型:有资源、资金、好的想法的创业团队,加入的门槛是最高的,如果能在公司初创期加入,可能3-5年就会成功的走出职场;
  • 大公司:复杂的业务模式,庞大的系统架构,严谨的协作流程,这是大厂的基本标签,所以在大厂不够锻炼人的说法有点迷,职场绝不单看技术能力;
  • 小公司:小公司与创业型公司有本质上的区别,这里更多的指业务模式单一体量较小的公司,很容易出现一个人担任多个角色的情况,确实锻炼人;

以上说法只是大概率的普遍现象,不针对个别不同的情况,通常主流的建议都是推荐选择对自身发展有影响的公司,以便于更快的积累专业能力,这样后续有更宽阔的选择空间,在职场初期也大多会这样选择。

【事实】 上在职场沉淀几年之后,多数人再次面对选择的时候,首先考虑的就是薪水高低,人一但尝过生活的五味杂陈,就能体会到经济能力才是对选择的最大支撑,用一句经典的话来解释:人到中年身不由己,上有老下有小。基于普遍的真实状况来看,薪水的高低与公司入职门槛的高低成正比。

3、发展路线

职场上发展路线是至关重要的,工作的前2年,需要不断积累专业的技术能力,随着经验的积累薪水的提高,尤其是心态上的不断变化,坚定不移的走技术路线的人很少,这与当下互联网的环境有最直接的关系,这里说几个常见的发展路线:

  • 技术路线:需要对技术追求抱有持续的兴趣,技术既要具备深度也要具备广度,大多数开发在职场初期可能都具备这种心理,但是随着职场的不断磨练和环境的影响,追求技术的热情,也许会被磨的平淡;
  • 管理路线:技术向管理角色的转变,因为互联网的环境原因或多或少存在一定的被动因素;多数公司站在需求与成本平衡的角度,对于极具技术深度的人才需求并不强烈,技术能力较好同时具备业务和团队的管理能力更受职场的欢迎;
  • 创业路线:在互联网领域中机会还是比较多的,各行各业都在提倡互联网+的背景下,如果在职场中有了足够的能力、资源的积累,会有相当一部分选择尝试创业;

【注意】 如果把技术当成解决业务的工具,即使对技术深度的追求不多,也要对技术的使用做到细致与熟练,对于专业范畴内的能力是不能打折的,遇见过少数的技术面试这样解释自己的综合能力:因为追求于项目管理或者业务解决能力,所以欠缺技术细节方面的沉淀。这种思路当真是清奇。

二、技术栈整理

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

1、基础篇

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

04-1.png

【建议】 在有大量模块化空闲时间的阶段,把主要精力持续放在以上基础模块,是收益最大的选择,这里更多指大学阶段。编程中越是基础原理就越复杂,这是普遍认可的共识,所以这个模块在学习的时候对于时间成本要求较高,一旦进入工作阶段,很难在抽出整体的时间细致的回顾基础模块。

假设Java的集合容器模块,用1-2周的时间,从API使用到源码逻辑,分析内在的扩容机制,涉及的算法与数据结构,进而再上升到设计模式的实践,流程这样走下来对于基础的理解就具备一定的深度了,也自然达到触类旁通的效果,那么对于IO流与并发也就是相同的原理。

2、进阶篇

这里罗列的是当前技术选型中常用的框架与组件,当进入工作阶段之后,会接触到各种不同的开发组件,学会熟练使用不同的组件去解决不同类型的需求是不可缺少的能力,这时候对于框架原理的理解,完全依赖于基础能力的积累程度。

04-2.png

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

3、高级篇

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

04-3.png

【注意】 这里只是单纯的技术进阶的角度,关于衡量开发人员的另外一个核心因素:业务高度。站在客观的角度去看的话技术与业务能力需要一比一提升,业务管理也是走出开发角色的基本要求。

三、业务管理

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

【然而】 在公司的日常面试工作中,时常会遇到少量求职者表达自己单方面的诉求:一种是希望公司可以提供技术发展路线,而不是常年累月的业务版本;另一种则希望公司能提供业务发展路线,入职之后可以慢慢脱离技术方向。如果站在招聘需求的角度去考虑,建议在求职面试时不要表达这种个人发展路线的追求,因为多数公司的招聘目的都是:需要技术人员来实现业务需求。

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

04-4.png

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

四、拓展能力

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

04-5.png

【特别】 说一下关于认知这种抽象的话题,因为存在于产品开发的各个环节,在职场上也会经常听到,认知导致思路对不齐,所以不管是产品、开发、项目经理;如果认知角度单一,看法就会片面,如此在流程协作中很容易产生极大的分歧。

五、学习与积累

专业的工作能力和经验积累包括多个方方面面,技术、业务、软能力。这种沉淀是一个持久的过程,以乐观的心态去学习遇到的冷门技术栈,用平静的心情去研究热门的新框架,并且不断的总结业务实现的方案。最后祝大家:风平浪静、扬帆远航。

相关文章
|
3月前
|
搜索推荐 程序员
探索代码之美:一段编程旅程的启发与感悟
【8月更文挑战第30天】编程,这个听起来有些高冷的技能,实际上就像绘画或音乐一样,是一种创造性的表达。它不仅仅是冷冰冰的代码和逻辑,更是情感和智慧的结晶。本文将通过一次个人的编程经历,探讨如何通过代码来解决问题、创造美,以及这一过程中的思考与成长,从而揭示编程背后的艺术性和哲学意义。
|
6月前
|
算法 C语言
关于技术面试一些有用的经历
关于技术面试一些有用的经历
40 0
|
搜索推荐 算法 程序员
探索编程世界的宝藏:程序员必掌握的20大算法(上)
探索编程世界的宝藏:程序员必掌握的20大算法
155 0
|
机器学习/深度学习 存储 运维
探索编程世界的宝藏:程序员必掌握的20大算法(中)
探索编程世界的宝藏:程序员必掌握的20大算法
162 0
|
存储 机器学习/深度学习 自然语言处理
探索编程世界的宝藏:程序员必掌握的20大算法(下)
探索编程世界的宝藏:程序员必掌握的20大算法
143 0
|
设计模式 算法 IDE
学好编程的 4 个秘诀
学好编程的 4 个秘诀
165 0
|
设计模式 网络协议 算法
自学编程的八大误区!克服它们,豁然开朗!
说在前面 小伙伴们大家好,又是全新的一天。 关于“自学编程的一些常见误区”这个话题其实很早之前就在视频里聊过了。时间过去了大半年,也还是有很多小伙伴会提及各种自学过程中的常见疑惑,所以还是用文字总结一下这几点想法,和大家共勉。 误区1:忽略基础,盲目莽进 基础知识和基础路线真的非常重要,就以Java领域举例,现在的应用框架实在是太多了,五花八门,层出不穷,迭代的速度太快了。但是假如Java SE的基础不牢、网络协议和操作系统不熟,基本的设计模式不了解,那一味地追求学习新框架反而会让自己陷入迷茫与困顿。 基础牢固,应用框架的学习自然就不用惧怕了,很快就能切入核心,掌握原理。而且越时髦的东西
135 0
|
设计模式 算法 网络协议
自学编程的八大误区!克服它!
关于“自学编程的一些常见误区”这个话题其实很早之前就在视频里聊过了。时间过去了大半年,也还是有很多小伙伴会提及各种自学过程中的常见疑惑,所以还是用文字总结一下这几点想法,和大家共勉。
自学编程的八大误区!克服它!
|
算法 数据安全/隐私保护
算法学习之路|聪明的打字员
阿兰是某机密部门的打字员,她现在接到一个任务:需要在一天之内输入几百个长度固定为6的密码。当然,她希望输入的过程中敲击键盘的总次数越少越好。
1522 0
|
算法
算法学习之路|编程团体赛
编程团体赛的规则为:每个参赛队由若干队员组成;所有队员独立比赛;参赛队的成绩为所有队员的成绩和;成绩最高的队获胜。
940 0
下一篇
无影云桌面