查看原文
其他

从编程新手到熟练工:我的转变

The following article is from 编程导航 Author 编程导航的嘉宾

今天给大家分享一篇编程导航星球嘉宾的文章,他结合他自己的亲身经历讲述他是如何应对在接触编程初期以及当前阶段下所面临的一些困境和烦恼的,希望能对小伙伴们有所帮助。

本文已获得原作者授权

一、引言

最近在星球上看到不少朋友发帖在吐槽自己的一些烦心事——刚接触编程的朋友大多在担忧自己不知道学啥、学不动,小有所成的则主要是烦恼找面试和找工作,而和我一样的打工人们可能愁的就更多了:工作压力、职业前景、个人成长、失业危机、生活琐事......不过好在“太阳底下无新鲜事”,很多我们烦恼的事情早已有人经历过,多和他人交流想法和经验,总是能找到适合自己的答案,我想这也是我们星球能给大家的帮助之一。

回到这篇文章来说,我想分享下我是如何应对在接触编程初期以及当前阶段下所面临的一些困境和烦恼——主要是通过养成系统性学能力,包括专业技能和软技能,在工作之外做好生活管理,经营好自己的生活、身体、爱情以及思想。也会穿插谈一些我对自己的职业生涯的一些经验和思考。

二、系统性学习——从入门到精通的捷径

1、初遇打击——学不懂、学不会

和很多朋友们不同,我在大学刚接触编程的时候并没有对自己的学习方向和目标感到过迷茫(感觉我真是对前端一见钟情了😆),如果你有这种类似的问题,可以看下鱼皮的建议:如何选择学习方向和目标? 告别迷茫!(星球原文链接:https://articles.zsxq.com/id_nsgdu4du44dd.html)。当时的我很明确的知道自己的学习方向是前端开发,目标是短期是找个给实验室老师打工,中期是找个公司去实习、秋招找个前端岗位,长期是要做个优秀的前端工程师。

而学不懂、学不会才是我最大的烦恼。当时我应该和许多朋友一样,感觉看MDN/菜鸟的前端文档实在是太无聊了,看了好像啥也记不住,于是就在网上找视频看,B站上免费的也看,CSDN上收费的也买,跟着视频学着做了些个Vue的小项目,感觉自己真是“小有所成了”,正好有个老师想找个学生帮做Web应用,然后我就接了下来,结果是可想而知的惨烈:“这接口咋调用呢(axios、promise学会的不太会)”、"这个函数咋不执行呢(后来知道是闭包问题)"、"这效果咋实现啊(HTML、CSS学的太差)”.......好在做了一段时间后来了个学长带我搞,最感动的是在我做的工作很少的情况下学长给了我一半的酬金(老师给了1000,我拿了499),这件事令自学前端的我属于是受到了不小的打击。

2、寻得良药——系统性学习

不过就像文章开头提到的,“太阳底下无新鲜事”,很快我就找到了一味良药——系统性学习。一番分析后明确了当时自己的状态是好像什么都会一点,但细问呢又不知道,尤其是把这些东西"串不起来“。按照学术一点的说法的话,之前的我一直是在进行碎片化学习(这点也好理解,毕竟教学视频里面大多只提到和项目相关的知识),然后自己也没有进行合理的学习规划,就觉得自己哪里缺一点,就去搜索一些文章去看看,看过之后觉得自我感觉良好,但基本处于入门阶段。如果说碎片化学习像一条条细细的丝线,那么系统性学习就如同把这些丝线织好布,把这些丝线都连接起来,使其更加的坚固与可靠。

3、照方抓药——"重学前端"

上文提到在我刚开始学习前端开发时,我的学习方法可以说是非常碎片化的。主要是直接跟着视频在敲代码写项目,遇到不会的知识点就在网上找一些教程和文章,然后跟着学习,但是并没有一个很好的规划。这种学习方法让我在入门阶段停滞不前,甚至有时候会感到困惑和迷茫。于是,在了解到系统性学习的重要性后我决定放下之前的经验,重新学习前端。

首先,我购买了一些专业、系统的前端书籍来进行学习,最早是买了《JavaScript高级程序设计》、《Head First HTML与CSS》。我当时认为书籍肯定是要比网络上零散的资源更系统和全面一些的,而且经过作者的加工应该也会比文档更好理解一点,至于为什么不在网上找电子PDF,这点是因为我对纸质书有种莫名的好感哈哈哈(而且真的很有安全感,拿在手里都是知识的分量!)。我计划按照书籍的顺序,从基础知识开始学习,逐步深入到高级技巧。在学习过程中,遇到案例代码就自己敲一敲,也在书上做做笔记,尝试梳理出自己的理论体系,以便更好地理解和记忆知识点。

在我开始学习一本新的前端书籍时,我会发现之前在视频或者技术文章里面看到过的知识点在这里得到了更深入的解释和拓展。这也让我意识到,系统化学习的过程其实是一个不断回顾和反思的过程。当我们在学习新知识时,需要不断地联系之前所学,从而形成一个完整的知识体系。

同时,我也认为知识输出是巩固学习成果的关键。因此,在学习过程中,我会不断地将所学知识运用到实际项目中(其实就是联系实验室的老师给他们打工),这样既可以检验自己的学习效果,也可以让知识变得更加实用。在后来积累了一些经验后又在学校组织的兴趣小组当前端课的讲师,带大家入门前端的基础的同时也对自己掌握的知识有了更深的印象。

总之,通过学习专业书籍、搭建自己的理论体系、进行知识输出等方法,我逐渐摆脱了碎片化学习的困境,开始真正地系统化学习前端知识。这让我的技能得到了很大的提升,也让我摆脱了之前学不懂、学不会的打击。春招和秋招的面试我也是按照这种系统化学习的方式去刷题、整理面试记录——简单来说就是在多维表格里面分门别类的整理自己的知识网络,最终凭借靠着还算扎实前端知识以及一点运气在春招秋招中获得了自己满意的offer。

下图是我前后购买的一些前端领域书籍,想买书的朋友可以作为参考,如果是刚接触的前端朋友也想买书的话,还是比较推荐Head First系列的,至于那本《JavaScript高级程序设计》我感觉真不太适合新人阅读,应该叫《JavaScript从入门到放弃》比较合适😂。

三、沙中淘金,掌握本质——领域突破的基石

互联网产业相关的各个领域一直都处在日新月异的状态,抛开编程相关领域的知识不谈,在这个信息爆炸的时代,知识似乎唾手可得,那么该学什么,又该怎么学....很多人都会在知识面前感到焦虑、迷茫。在前端领域尤是如此,前端领域这些年的变化相信大家都很清楚,各种框架、技术可以说是雨后春笋般涌出,主流的框架/技术也是不时就发布个新版本。有很多朋友和我一样,出于保持技术敏锐度以及不断更新、提高的自己的技术能力的想法,关注了很多前端公众号或者周刊,基本每天都会收到推送的各种技术文章,大都是介绍些新技术、新框架还有些技术分享类文章,面对这些周刊和文章,可能大多数朋友都是心中直呼真是学不动了😭,这些我们真的需要都看、都学吗?有一定工作的经验的朋友除此之外可能还会有这样一些疑虑:

  1. 该如何避免相似的工作做了几年,却没有预备相应几年的工作经验?
  2. 该如何从繁杂而千篇一律的业务需求中提炼技术点并提高?
  3. ...

曾经的我也有同样的疑惑,不过后来在阮一峰老师的《未来世界的幸存者》、侯策老师的《前端开发核心知识进阶》等前辈的经验中找到了答案,下面结合一点自己的理解分享给大家。

首先我们应认识到技术学习要重视核心。在学习技术的过程中,我们应该注重掌握技术的核心原理,这些原理是相对稳定和可复用的。只有把握好技术原理和底层结构,才能将其应用到实际项目中,取得最好的效果。技术的核心原理和结构建设是一种基础性质的问题,虽然不会带来直接的应用价值,但这种影响往往是无形而潜移默化的。“世界上没有不变的手法,只有不变的宗旨”。其次是踏实练好基本功(想起来“苦练基本功”也是一句经典的“美团老话”👍)。在学习技术的道路上,我们必须从最基本的技能和知识点入手,扎实打好基础才能不断向更高层次迈进。就像学习武术一样,基本功是至关重要的,没有牢固的基础,就无法进入更深入的层次。总之可以理解为在学习技术的过程中,我们需要关注技术的核心原理和基础结构,同时注重打好基础和练习基本技能。只有这样,在未来的学习和应用中才能更加游刃有余。

到这里我们就可以回答上面提出的几个问题了,首先是周刊或者公众号文章学等习资料大多存在两个主要问题:碎片化和短平快。这些知识只能作为缓解焦虑的“安慰剂”或者说是跳槽加薪的“兴奋剂”,而不能真正帮助我们进行深度思考,但并不是说这些文章不好哈,通过它们了解行业最新动态,闲暇之余回顾回顾知识都是很不错的选择(肯定比刷短视频来的有价值点👀)。

技术进阶是一个系统性、曲折的过程,需要有系统性和针对性的学习和练习。如果我们只收藏知识而不深入理解其背后的原理,掌握的只是表层的“知道”,而不是真正的知识。更进一步,如果我们只关注短期速成的内容或大量碎片化的知识,也无法进行深度思考,而只是囤积了一堆表面上的“知道”。因此,我们需要以系统性、有针对性的学习为基础,通过反复的刻意练习,逐渐形成深入思考的思维方式和方法,才能更好地实现技术进阶。

以我自己来说,目前在前端领域的学习除了正常上班工作,主要就是研究侯策老师的《前端开发核心知识进阶》了,虽然只看到一部分,但个人感觉也是颇有收获,很多遗漏、遗忘的知识又给找了回来,学习编程”知识"的同时也学习编程的“智慧”。

四、软技能——代码之外的生存指南

这一章里我想谈一谈软技能,如果要用一句话来定义什么是软技能的话,那我想没有比"代码之外的生存指南"更加合适的了。关注软技能的成长也是我工作以来除了工作经验和技术以外最大的认知收获,如果现在我们要讨论什么样的人才算得上“优秀的软件开发人员”,那精于编码之道,善于解决各种BUG无疑是非常重要的标准,但仅仅是这样还不够。我们是一个技术人没错,技术是我们每个人的立身之本,但是抛开技术和工作,作为一个人来说,我们还有很多值得关注和讨论的点——我们的职业生涯、我们的生活、我们的身体、我们的思想以及灵魂.... 而且即使是在工作中,我们也不是单纯与代码打交道:

● 我们有PM,需要向他们了解需求的整体交互

● 我们有业务,需要全面了解需求的背景

● 技术团队内部,我们需要相互之间沟通进度,交流技术方案、设计方案

● 技术团队外部,我们需要对相互之间的交互方式,上下游进度不理想如何去推动

● 出了问题,我们需要知道对外应当怎么说,对内应该怎么做

● 有一个想法,应当如何以正确的方式去落地,而不是我有一个想法直接说也不说、讨论也不讨论干就完事了

凡此种种,都需要经历和成长,曾经我也以为上班嘛,只要把代码写好就好了,实际工作后才感觉到写代码真的只是工作的一部分而已(按我自己来看大概60%),而且很现实的是一般职级越高花费再非编码工作上的时间其实是越多的,我们这个行业对技术人的要求从单纯的技术要求已经越来越往综合素质去靠。

所以如果你想真正成为一个优秀的软件开发人员(或者其他真正优秀的人才),就需要把重点放在整个“人”上,而不只是你生活中的一两个领域。而这就是我想向大家推荐要重视软技能培养的原因,要是现在你已经开始心动并准备好好学习一番了的话,我建议你不妨试试我上面谈到的系统性学习方法——我们可以将需要重点学习关注的软技能进行分类和分组,最简易的方法是将它们看成是事业、思想、身体和精神四个方面(也是《软技能——代码之外的生存指南》一书中的推荐方式,本章标题亦源自此书),然后结合自己的情况进行学习,比如可能你本身就是个健身达人,那你就不用优先考虑健康管理方面的知识。如果按照上面谈的四种方式对软技能进行分类的话,我可以简单将其再进行以下的细分(肯定是不完善的,仅作抛砖引玉之用):

一、事业方面

1.沟通技巧:作为一个软件开发人员,与团队成员、项目经理、产品经理等有效沟通是至关重要的。学会倾听、表达和理解别人的观点,以及如何在不同情境下使用不同的沟通方式。

2.团队协作:学会在团队中发挥自己的作用,为共同目标努力。这包括信任、尊重、支持和帮助团队成员,以及承担责任和解决冲突。

3.领导力:具备影响和激励他人的能力,指导团队实现共同目标。

4.时间管理:学会合理安排时间,提高工作效率。这包括制定计划、设定优先级、避免拖延和保持专注。

5.项目管理:学会如何计划、执行、监控和总结项目。这包括需求分析、风险评估、资源分配和进度控制。

5.创新思维:培养自己的创造力,学会从新的角度看待问题,提出创新性的解决方案。

二、思想方面

1.批判性思维:学会独立思考,分析和评估问题,以便作出明智的决策。

2.解决问题:学会识别问题、分析问题、提出解决方案并实施解决方案。

3.学习能力:具备持续学习的意愿和能力,不断提升自己的知识和技能。

三、身体方面

1.健康管理:关注自己的身体健康,保持良好的作息和饮食习惯,定期锻炼。

2.抗压能力:学会面对压力和挑战,保持冷静和自信,寻找合适的方式缓解压力。

四、精神方面

1.自我认知:了解自己的优点和不足,认识自己的价值观和目标。

2.情绪管理:学会识别、表达和调整自己的情绪,以保持良好的心理状态。

3.人际关系:建立和维护良好的人际关系,学会与不同性格和背景的人相处。

到这里下一步就是去学习相关知识了,如果你和当初的我一样也是一头雾水的话,推荐你也可以从《软技能——代码之外的生存指南》这本书入手(我这本是第一版,最新的第二版补充了一些最近几年的新热点,比如有教你如何做视频博主的)。


不过若是想要对某些内容进行更深度学习的话,还是得寻找更专业详细得资料,例如这本书中对爱情、理财等方面得讲解就显得比较少,感兴趣的话可以继续深入探索。在这里我也分享一下我购买的一些学习书籍:


总之,软技能是一个全面的概念,涵盖了除编码技能外的各个方面。作为一个优秀的软件开发人员,除了专业技能之外,还需要关注自己在这些方面的成长。通过系统性地学习和实践,逐步提升自己的软技能,成为更加全面和优秀的人才。

五、结语

本文分享了我在应对刚接触编程以及当前阶段下所面临的一些困境和烦恼时的经验和方法,主要是养成系统性学能力,如何学习专业技能和软技能,希望大家在工作之外做好生活管理,经营好自己的生活、身体、爱情以及思想,实现事业与生活的平衡,也欢迎在评论区分享你的成功经验或者向我提问交流,一起成为更优秀的软件开发工程师!


星球活动

1.点击领取星球精选高频前后端面试题汇总(https://t.zsxq.com/0d7Nw7YGw),搞定高频面试题,斩杀面试官!

2.欢迎已加入星球的同学 免费申请一年编程导航网站会员 !

3.欢迎学习 鱼皮最新原创项目教程,手把手教你做出项目、写出高分简历!

加入我们

欢迎加入鱼皮的编程导航知识星球,鱼皮会 1 对 1 回答您的问题、直播带你做出项目、为你定制学习计划和求职指导,还能获取海量编程学习资源,和上万名学编程的同学共享知识、交流进步。

💎 加入星球后,您可以:

1)添加鱼皮本人微信,向他 1 对 1 提问,帮您解决问题、告别迷茫!点击了解详情

2)获取海量编程知识和资源,包括:4000+ 鱼皮的编程答疑和求职指导、原创编程学习路线、几十万字的编程学习知识库、几十 T 编程学习资源、700+ 精华帖等!点击了解详情

3)找鱼皮咨询求职建议和优化简历,次数不限!点击了解详情

4)鱼皮直播从 0 到 1 带大家做出项目,已有 50+ 直播、完结 4 套项目、10+ 项目分享,帮您掌握独立开发项目的能力、丰富简历!点击了解详情

外面一套项目课就上千元了,而星球内所有项目都有指导答疑,轻松解决问题

星球提供的所有服务,都是为了帮您更好地学编程、找到理想的工作。诚挚地欢迎您的加入,这可能是最好的学习机会,也是最值得的一笔投资!

长按扫码领优惠券加入体验(三天内不满意可全额退款),也可直接在公众号后台回复客服,添加客服了解更多星球信息:


往期推荐

我的学习小圈子

六年安卓开发的技术回顾和展望

24 届秋招群,集合!

腾讯面试体验倍儿好

发现了几个贼有意思的开源项目!

写了7年代码,第一次见这么狗血的小Bug!




继续滑动看下一个

从编程新手到熟练工:我的转变

向上滑动看下一个

您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存